<?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>80354</bug_id>
          
          <creation_ts>2012-03-05 17:01:54 -0800</creation_ts>
          <short_desc>At basic support for constant blinding to the JIT</short_desc>
          <delta_ts>2012-04-29 14:07:43 -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>New Bugs</component>
          <version>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>80492</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Oliver Hunt">oliver</reporter>
          <assigned_to name="Oliver Hunt">oliver</assigned_to>
          <cc>barraclough</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>Martin.Jansa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>571207</commentid>
    <comment_count>0</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2012-03-05 17:01:54 -0800</bug_when>
    <thetext>At basic support for constant blinding to the JIT</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571251</commentid>
    <comment_count>1</comment_count>
      <attachid>130245</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2012-03-05 17:28:38 -0800</bug_when>
    <thetext>Created attachment 130245
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571347</commentid>
    <comment_count>2</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2012-03-05 18:40:26 -0800</bug_when>
    <thetext>Committed r109834: &lt;http://trac.webkit.org/changeset/109834&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571430</commentid>
    <comment_count>3</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2012-03-05 20:39:10 -0800</bug_when>
    <thetext>I have had a significant insight into how it is we break Qt ARMv7 so frequently (this patch broke it).

The Qt ARMv7 bot is misconfigured and is using the ARM backend instead of ARMv7.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571481</commentid>
    <comment_count>4</comment_count>
      <attachid>130291</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-03-05 22:19:44 -0800</bug_when>
    <thetext>Created attachment 130291
the patch

Putting up for EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571485</commentid>
    <comment_count>5</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2012-03-05 22:22:39 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; Created an attachment (id=130291) [details]
&gt; the patch
&gt; 
&gt; Putting up for EWS.

wrong bug :D</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571491</commentid>
    <comment_count>6</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-03-05 22:30:10 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #4)
&gt; &gt; Created an attachment (id=130291) [details] [details]
&gt; &gt; the patch
&gt; &gt; 
&gt; &gt; Putting up for EWS.
&gt; 
&gt; wrong bug :D

Oh oops.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571492</commentid>
    <comment_count>7</comment_count>
      <attachid>130291</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-03-05 22:30:29 -0800</bug_when>
    <thetext>Comment on attachment 130291
the patch

This wasn&apos;t supposed to be uploaded to this bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>612453</commentid>
    <comment_count>8</comment_count>
    <who name="Martin Jansa">Martin.Jansa</who>
    <bug_when>2012-04-29 14:07:43 -0700</bug_when>
    <thetext>This seems to broke build for e.g. armv4t, will try to rebuild for armv7a and then open separate bug report for that if needed

/OE/shr-core/tmp-eglibc/work/armv4t-oe-linux-gnueabi/webkit-efl/webkit-efl-1.7.5+svnr115597-r0/src/Source/JavaScriptCore/assembler/MacroAssembler.h: In member function &apos;void JSC::MacroAssembler::or32(JSC::AbstractMacroAssembler&lt;JSC::ARMAssembler&gt;::Imm32, JSC::AbstractMacroAssembler&lt;JSC::ARMAssembler&gt;::RegisterID, JSC::AbstractMacroAssembler&lt;JSC::ARMAssembler&gt;::RegisterID)&apos;:
/OE/shr-core/tmp-eglibc/work/armv4t-oe-linux-gnueabi/webkit-efl/webkit-efl-1.7.5+svnr115597-r0/src/Source/JavaScriptCore/assembler/MacroAssembler.h:813:49: error: no matching function for call to &apos;JSC::MacroAssembler::or32(const JSC::AbstractMacroAssembler&lt;JSC::ARMAssembler&gt;::TrustedImm32&amp;, JSC::AbstractMacroAssembler&lt;JSC::ARMAssembler&gt;::RegisterID&amp;, JSC::AbstractMacroAssembler&lt;JSC::ARMAssembler&gt;::RegisterID&amp;)&apos;
/OE/shr-core/tmp-eglibc/work/armv4t-oe-linux-gnueabi/webkit-efl/webkit-efl-1.7.5+svnr115597-r0/src/Source/JavaScriptCore/assembler/MacroAssembler.h:813:49: note: candidates are:
/OE/shr-core/tmp-eglibc/work/armv4t-oe-linux-gnueabi/webkit-efl/webkit-efl-1.7.5+svnr115597-r0/src/Source/JavaScriptCore/assembler/MacroAssembler.h:805:10: note: void JSC::MacroAssembler::or32(JSC::AbstractMacroAssembler&lt;JSC::ARMAssembler&gt;::Imm32, JSC::AbstractMacroAssembler&lt;JSC::ARMAssembler&gt;::RegisterID, JSC::AbstractMacroAssembler&lt;JSC::ARMAssembler&gt;::RegisterID)
/OE/shr-core/tmp-eglibc/work/armv4t-oe-linux-gnueabi/webkit-efl/webkit-efl-1.7.5+svnr115597-r0/src/Source/JavaScriptCore/assembler/MacroAssembler.h:805:10: note:   no known conversion for argument 1 from &apos;const JSC::AbstractMacroAssembler&lt;JSC::ARMAssembler&gt;::TrustedImm32&apos; to &apos;JSC::AbstractMacroAssembler&lt;JSC::ARMAssembler&gt;::Imm32&apos;
/OE/shr-core/tmp-eglibc/work/armv4t-oe-linux-gnueabi/webkit-efl/webkit-efl-1.7.5+svnr115597-r0/src/Source/JavaScriptCore/assembler/MacroAssembler.h:816:10: note: void JSC::MacroAssembler::or32(JSC::AbstractMacroAssembler&lt;JSC::ARMAssembler&gt;::Imm32, JSC::AbstractMacroAssembler&lt;JSC::ARMAssembler&gt;::RegisterID)
/OE/shr-core/tmp-eglibc/work/armv4t-oe-linux-gnueabi/webkit-efl/webkit-efl-1.7.5+svnr115597-r0/src/Source/JavaScriptCore/assembler/MacroAssembler.h:816:10: note:   candidate expects 2 arguments, 3 provided
In file included from /OE/shr-core/tmp-eglibc/work/armv4t-oe-linux-gnueabi/webkit-efl/webkit-efl-1.7.5+svnr115597-r0/src/Source/JavaScriptCore/assembler/MacroAssembler.h:36:0,</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130245</attachid>
            <date>2012-03-05 17:28:38 -0800</date>
            <delta_ts>2012-03-05 22:19:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80354-20120305172837.patch</filename>
            <type>text/plain</type>
            <size>73534</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5ODEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
NzQzOGVhZmNhNjkzZjY1NmUwZjYwNDcyYWNkODMxMTM1ZDk1NTUzLi45N2Q2OGIyZjNjNjQ1MDI1
MWU2OTkwZDk1Yzc4MmQ1NzJkNjNhYTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMzMgQEAKKzIwMTItMDMtMDUgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4K
KworICAgICAgICBBZGQgYmFzaWMgc3VwcG9ydCBmb3IgY29uc3RhbnQgYmxpbmRpbmcgdG8gdGhl
IEpJVAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODAz
NTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlz
IHBhdGNoIGFkZHMgYmFzaWMgY29uc3RhbnQgYmxpbmRpbmcgc3VwcG9ydCB0byB0aGUgSklULCBh
dCB0aGUKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXIgbGV2ZWwuICBUaGlzIG1lYW5zIGFsbCBKSVRz
IGluIEpTQyAoWWFyciwgYmFzZWxpbmUsIGFuZCBERkcpCisgICAgICAgIGdldCBjb25zdGFudCBi
bGluZGluZy4gIFdvbyEKKworICAgICAgICBUaGlzIHBhdGNoIG9ubHkgaW50cm9kdWNlcyBibGlu
ZGluZyBmb3IgSW1tMzIsIGEgbGF0ZXIgcGF0Y2ggd2lsbCBkbyBzaW1pbGFyCisgICAgICAgIGZv
ciBJbW1QdHIuICBJbiBvcmRlciB0byBtYWtlIG1pc3VzZSBvZiBJbW0zMiBhcyBhIHRydXN0ZWQg
dHlwZSBlc3NlbnRpYWxseQorICAgICAgICBpbXBvc3NpYmxlLCB3ZSBtYWtlIFRydXN0ZWRJbW0z
MiBhIHByaXZhdGUgcGFyZW50IG9mIEltbTMyIGFuZCBhZGQgYW4gZXhwbGljaXQKKyAgICAgICAg
YWNjZXNzb3IgdGhhdCdzIG5lZWRlZCB0byBhY2Nlc3MgdGhlIGFjdHVhbCB2YWx1ZS4gIFRoaXMg
YWxzbyBtZWFucyB5b3UgY2Fubm90CisgICAgICAgIGFjY2lkZW50YWxseSBwYXNzIGFuIHVudHJ1
c3RlZCB2YWx1ZSB0byBhIGZ1bmN0aW9uIHRoYXQgZG9lcyBub3QgcGVyZm9ybQorICAgICAgICBi
bGluZGluZy4KKworICAgICAgICBUbyBtYWtlIGV2ZXJ5dGhpbmcgd29yayBzZW5zaWJseSwgdGhp
cyBwYXRjaCBhbHNvIGNvcnJlY3RzIHNvbWUgY29kZSB0aGF0IHdhcyB1c2luZworICAgICAgICBJ
bW0zMiB3aGVuIFRydXN0ZWRJbW0zMiBjb3VsZCBiZSB1c2VkLCBhbmQgcmVmYWN0b3JzIGEgZmV3
IGNhbGxlcnMgdGhhdCB1c2UKKyAgICAgICAgdW50cnVzdGVkIGltbWVkaWF0ZXMsIHNvIHRoYXQg
dGhleSBjYWxsIHNsaWdodGx5IGRpZmZlcmVudCB2YXJhaW50cyBvZiB0aGUgZnVuY3Rpb25zCisg
ICAgICAgIHRoYXQgdGhleSB1c2VkIHByZXZpb3VzbHkuICBUaGlzIGlzIGxhcmdlbHkgbmVjZXNz
YXJ5IHRvIGRlYWwgd2l0aCB4ODYtMzIgbm90IGhhdmluZworICAgICAgICBzdWZmaWNpZW50IHJl
Z2lzdGVycyB0byBoYW5kbGUgdGhlIGFkZGl0aW9uYWwgd29yayByZXF1aXJlZCB3aGVuIHdlIGNo
b29zZSB0byBibGluZAorICAgICAgICBhIGNvbnN0YW50LgorCisgICAgICAgICogYXNzZW1ibGVy
L0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fz
c2VtYmxlcjo6SW1tMzI6OmFzVHJ1c3RlZEltbTMyKToKKyAgICAgICAgKEltbTMyKToKKyAgICAg
ICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6YmVnaW5VbmludGVycnVwdGVkU2VxdWVu
Y2UpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjplbmRVbmludGVycnVw
dGVkU2VxdWVuY2UpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpBYnN0
cmFjdE1hY3JvQXNzZW1ibGVyKToKKyAgICAgICAgKEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIpOgor
ICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjppblVuaW50ZXJydXB0ZWRTZXF1
ZW5jZSk6CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OnJhbmRvbSk6Cisg
ICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OnNjcmF0Y2hSZWdpc3RlckZvckJs
aW5kaW5nKToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6c2hvdWxkQmxp
bmRGb3JTcGVjaWZpY0FyY2gpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5o
OgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlcjo6YWRkcmVzc0ZvclBva2UpOgorICAgICAg
ICAoTWFjcm9Bc3NlbWJsZXIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlcjo6cG9rZSk6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyOjpicmFuY2hQdHIpOgorICAgICAgICAoSlND
OjpNYWNyb0Fzc2VtYmxlcjo6YnJhbmNoMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
cjo6Y29udmVydEludDMyVG9Eb3VibGUpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlcjo6
c2hvdWxkQmxpbmQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlcjo6QmxpbmRlZEltbTMy
OjpCbGluZGVkSW1tMzIpOgorICAgICAgICAoQmxpbmRlZEltbTMyKToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXI6OmtleUZvckNvbnN0YW50KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3Nl
bWJsZXI6OnhvckJsaW5kQ29uc3RhbnQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlcjo6
YWRkaXRpb25CbGluZGVkQ29uc3RhbnQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlcjo6
YW5kQmxpbmRlZENvbnN0YW50KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXI6Om9yQmxp
bmRlZENvbnN0YW50KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXI6OmxvYWRYb3JCbGlu
ZGVkQ29uc3RhbnQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlcjo6YWRkMzIpOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlcjo6YWRkUHRyKToKKyAgICAgICAgKEpTQzo6TWFjcm9B
c3NlbWJsZXI6OmFuZDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXI6OmFuZFB0cik6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyOjptb3ZlKToKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXI6Om9yMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlcjo6c3RvcmUz
Mik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyOjpzdWIzMik6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyOjpzdWJQdHIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlcjo6
eG9yMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlcjo6YnJhbmNoQWRkMzIpOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlcjo6YnJhbmNoTXVsMzIpOgorICAgICAgICAoSlNDOjpN
YWNyb0Fzc2VtYmxlcjo6YnJhbmNoU3ViMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
cjo6dHJ1c3RlZEltbTMyRm9yU2hpZnQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlcjo6
bHNoaWZ0MzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlcjo6cnNoaWZ0MzIpOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlcjo6dXJzaGlmdDMyKToKKyAgICAgICAgKiBhc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oOgorICAgICAgICAoTWFjcm9Bc3NlbWJsZXJBUk12Nyk6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6OnNjcmF0Y2hSZWdpc3RlckZvckJs
aW5kaW5nKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6c2hvdWxkQmxpbmRG
b3JTcGVjaWZpY0FyY2gpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82
NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6YnJhbmNoU3ViUHRyKToK
KyAgICAgICAgKE1hY3JvQXNzZW1ibGVyWDg2XzY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3Nl
bWJsZXJYODZfNjQ6OnNjcmF0Y2hSZWdpc3RlckZvckJsaW5kaW5nKToKKyAgICAgICAgKiBkZmcv
REZHSklUQ29tcGlsZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpsaW5r
T1NSRXhpdHMpOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpjb21waWxlQm9keSk6
CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbik6CisgICAg
ICAgICogZGZnL0RGR09TUkV4aXRDb21waWxlcjMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhp
dENvbXBpbGVyNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXRDb21waWxlcjo6Y29t
cGlsZUV4aXQpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJpdGhTdWIpOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlU3RyaWN0RXFGb3JDb25zdGFudCk6CisgICAgICAgICogZGZn
L0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNhbGxPcGVyYXRpb24pOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0RXF1YWxpdHkpOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlRG91YmxlQ29tcGFyZSk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6ZW1pdENhbGwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21w
aWxlRG91YmxlQ29tcGFyZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUpOgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZh
dGVDb21waWxlU2xvd0Nhc2VzKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZSk6
CisgICAgICAgICogaml0L0pJVEFyaXRobWV0aWMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmNv
bXBpbGVCaW5hcnlBcml0aE9wKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2FkZCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9tdWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRf
b3BfZGl2KToKKyAgICAgICAgKiBqaXQvSklUQXJpdGhtZXRpYzMyXzY0LmNwcDoKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0QWRkMzJDb25zdGFudCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFN1
YjMyQ29uc3RhbnQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRCaW5hcnlEb3VibGVPcCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfbXVsKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0X29wX2Rpdik6CisgICAgICAgICogaml0L0pJVENhbGwuY3BwOgorICAgICAgICAoSlNDOjpK
SVQ6OmNvbXBpbGVMb2FkVmFyYXJncyk6CisgICAgICAgICogaml0L0pJVENhbGwzMl82NC5jcHA6
CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZUxvYWRWYXJhcmdzKToKKyAgICAgICAgKiBqaXQv
SklUSW5saW5lTWV0aG9kcy5oOgorICAgICAgICAoSlNDOjpKSVQ6OnVwZGF0ZVRvcENhbGxGcmFt
ZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZSk6CisgICAgICAg
ICogaml0L0pJVE9wY29kZXMzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3df
b3BfamZhbHNlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9qdHJ1ZSk6CisgICAg
ICAgICogaml0L0pJVFN0dWJDYWxsLmg6CisgICAgICAgIChKSVRTdHViQ2FsbCk6CisgICAgICAg
IChKU0M6OkpJVFN0dWJDYWxsOjphZGRBcmd1bWVudCk6CisgICAgICAgICogeWFyci9ZYXJySklU
LmNwcDoKKyAgICAgICAgKEpTQzo6WWFycjo6WWFyckdlbmVyYXRvcjo6YmFja3RyYWNrKToKKwog
MjAxMi0wMy0wNSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIEFkZCBz
dXBwb3J0IGZvciBob3N0aW5nIGxheWVycyBpbiB0aGUgd2luZG93IHNlcnZlciBpbiBXZWJLaXQy
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFj
cm9Bc3NlbWJsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RN
YWNyb0Fzc2VtYmxlci5oCmluZGV4IGI0MjYyZTg5NGEzMjE5MTIzZmJkZjUwNjE0YmI2MmE5Yzc2
NzBlNTAuLjgzNThhOGE1MzgxMDVmMDcyYzkwNWJmZWI1N2Y1OTFmMDMxYjUwZTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxl
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fz
c2VtYmxlci5oCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJDb2RlTG9jYXRpb24uaCIK
ICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCIKKyNpbmNsdWRlIDx3dGYvQ3J5cHRv
Z3JhcGhpY2FsbHlSYW5kb21OdW1iZXIuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4K
ICNpbmNsdWRlIDx3dGYvVW51c2VkUGFyYW0uaD4KIApAQCAtMjMyLDcgKzIzMyw3IEBAIHB1Ymxp
YzoKICAgICB9OwogCiAKLSAgICBzdHJ1Y3QgSW1tMzIgOiBwdWJsaWMgVHJ1c3RlZEltbTMyIHsK
KyAgICBzdHJ1Y3QgSW1tMzIgOiBwcml2YXRlIFRydXN0ZWRJbW0zMiB7CiAgICAgICAgIGV4cGxp
Y2l0IEltbTMyKGludDMyX3QgdmFsdWUpCiAgICAgICAgICAgICA6IFRydXN0ZWRJbW0zMih2YWx1
ZSkKICAgICAgICAgewpAQCAtMjQzLDYgKzI0NCw4IEBAIHB1YmxpYzoKICAgICAgICAgewogICAg
ICAgICB9CiAjZW5kaWYKKyAgICAgICAgY29uc3QgVHJ1c3RlZEltbTMyJiBhc1RydXN0ZWRJbW0z
MigpIGNvbnN0IHsgcmV0dXJuICp0aGlzOyB9CisKICAgICB9OwogICAgIAogICAgIC8vIFNlY3Rp
b24gMjogTWFjcm9Bc3NlbWJsZXIgY29kZSBidWZmZXIgaGFuZGxlcwpAQCAtNTM1LDE0ICs1Mzgs
MzggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxwdHJkaWZmX3Q+
KGIuZXhlY3V0YWJsZUFkZHJlc3MoKSkgLSByZWludGVycHJldF9jYXN0PHB0cmRpZmZfdD4oYS5l
eGVjdXRhYmxlQWRkcmVzcygpKTsKICAgICB9CiAKLSAgICB2b2lkIGJlZ2luVW5pbnRlcnJ1cHRl
ZFNlcXVlbmNlKCkgeyB9Ci0gICAgdm9pZCBlbmRVbmludGVycnVwdGVkU2VxdWVuY2UoKSB7IH0K
KyAgICB2b2lkIGJlZ2luVW5pbnRlcnJ1cHRlZFNlcXVlbmNlKCkgeyBtX2luVW5pbnRlcnJ1cHRl
ZFNlcXVlbmNlID0gdHJ1ZTsgfQorICAgIHZvaWQgZW5kVW5pbnRlcnJ1cHRlZFNlcXVlbmNlKCkg
eyBtX2luVW5pbnRlcnJ1cHRlZFNlcXVlbmNlID0gZmFsc2U7IH0KIAogICAgIHVuc2lnbmVkIGRl
YnVnT2Zmc2V0KCkgeyByZXR1cm4gbV9hc3NlbWJsZXIuZGVidWdPZmZzZXQoKTsgfQogCiBwcm90
ZWN0ZWQ6CisgICAgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcigpCisgICAgICAgIDogbV9pblVuaW50
ZXJydXB0ZWRTZXF1ZW5jZShmYWxzZSkKKyAgICAgICAgLCBtX3JhbmRvbVNvdXJjZShjcnlwdG9n
cmFwaGljYWxseVJhbmRvbU51bWJlcigpKQorICAgIHsKKyAgICB9CisKICAgICBBc3NlbWJsZXJU
eXBlIG1fYXNzZW1ibGVyOwogCisgICAgYm9vbCBpblVuaW50ZXJydXB0ZWRTZXF1ZW5jZSgpCisg
ICAgeworICAgICAgICByZXR1cm4gbV9pblVuaW50ZXJydXB0ZWRTZXF1ZW5jZTsKKyAgICB9CisK
KyAgICBib29sIG1faW5VbmludGVycnVwdGVkU2VxdWVuY2U7CisgICAgCisgICAgCisgICAgdWlu
dDMyX3QgcmFuZG9tKCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX3JhbmRvbVNvdXJjZS5nZXRV
aW50MzIoKTsKKyAgICB9CisKKyAgICBXZWFrUmFuZG9tIG1fcmFuZG9tU291cmNlOworICAgIAor
ICAgIHN0YXRpYyBib29sIHNjcmF0Y2hSZWdpc3RlckZvckJsaW5kaW5nKCkgeyByZXR1cm4gZmFs
c2U7IH0KKyAgICBzdGF0aWMgYm9vbCBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50MzJf
dCkgeyByZXR1cm4gdHJ1ZTsgfQorCiAgICAgZnJpZW5kIGNsYXNzIExpbmtCdWZmZXI7CiAgICAg
ZnJpZW5kIGNsYXNzIFJlcGF0Y2hCdWZmZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAppbmRleCAzNDdjZDBlYTAzNDY0Y2UwM2JkMmZi
ZGE2MGZjOTA2YjIxOTE4ZGEzLi45ZDg3NDIwYTAzMWI4NjQ3YzY5NTdkNmViYjUyZWIwYzQ3OWJl
MTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
Ymxlci5oCkBAIC02Niw2ICs2Niw4IEBAIG5hbWVzcGFjZSBKU0MgewogY2xhc3MgTWFjcm9Bc3Nl
bWJsZXIgOiBwdWJsaWMgTWFjcm9Bc3NlbWJsZXJCYXNlIHsKIHB1YmxpYzoKIAorICAgIHVzaW5n
IE1hY3JvQXNzZW1ibGVyQmFzZTo6YWRkMzI7CisgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJCYXNl
OjphbmQzMjsKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxlckJhc2U6OnBvcDsKICAgICB1c2luZyBN
YWNyb0Fzc2VtYmxlckJhc2U6Omp1bXA7CiAgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJCYXNlOjpi
cmFuY2gzMjsKQEAgLTczLDYgKzc1LDE3IEBAIHB1YmxpYzoKICAgICB1c2luZyBNYWNyb0Fzc2Vt
YmxlckJhc2U6OmJyYW5jaFB0cjsKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxlckJhc2U6OmJyYW5j
aFRlc3RQdHI7CiAjZW5kaWYKKyAgICB1c2luZyBNYWNyb0Fzc2VtYmxlckJhc2U6OmJyYW5jaEFk
ZDMyOworICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyQmFzZTo6YnJhbmNoTXVsMzI7CisgICAgdXNp
bmcgTWFjcm9Bc3NlbWJsZXJCYXNlOjpicmFuY2hTdWIzMjsKKyAgICB1c2luZyBNYWNyb0Fzc2Vt
YmxlckJhc2U6OmxzaGlmdDMyOworICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyQmFzZTo6bW92ZTsK
KyAgICB1c2luZyBNYWNyb0Fzc2VtYmxlckJhc2U6Om9yMzI7CisgICAgdXNpbmcgTWFjcm9Bc3Nl
bWJsZXJCYXNlOjpyc2hpZnQzMjsKKyAgICB1c2luZyBNYWNyb0Fzc2VtYmxlckJhc2U6OnN0b3Jl
MzI7CisgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJCYXNlOjpzdWIzMjsKKyAgICB1c2luZyBNYWNy
b0Fzc2VtYmxlckJhc2U6OnVyc2hpZnQzMjsKKyAgICB1c2luZyBNYWNyb0Fzc2VtYmxlckJhc2U6
OnhvcjMyOwogCiAgICAgLy8gVXRpbGl0aWVzIHVzZWQgYnkgdGhlIERGRyBKSVQuCiAjaWYgRU5B
QkxFKERGR19KSVQpCkBAIC0xNDgsMTkgKzE2MSwyNCBAQCBwdWJsaWM6CiAgICAgICAgIGxvYWRQ
dHIoQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgKGluZGV4ICogc2l6ZW9mKHZvaWQqKSkp
LCBkZXN0KTsKICAgICB9CiAKKyAgICBBZGRyZXNzIGFkZHJlc3NGb3JQb2tlKGludCBpbmRleCkK
KyAgICB7CisgICAgICAgIHJldHVybiBBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCAoaW5k
ZXggKiBzaXplb2Yodm9pZCopKSk7CisgICAgfQorICAgIAogICAgIHZvaWQgcG9rZShSZWdpc3Rl
cklEIHNyYywgaW50IGluZGV4ID0gMCkKICAgICB7Ci0gICAgICAgIHN0b3JlUHRyKHNyYywgQWRk
cmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgKGluZGV4ICogc2l6ZW9mKHZvaWQqKSkpKTsKKyAg
ICAgICAgc3RvcmVQdHIoc3JjLCBhZGRyZXNzRm9yUG9rZShpbmRleCkpOwogICAgIH0KIAogICAg
IHZvaWQgcG9rZShUcnVzdGVkSW1tMzIgdmFsdWUsIGludCBpbmRleCA9IDApCiAgICAgewotICAg
ICAgICBzdG9yZTMyKHZhbHVlLCBBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCAoaW5kZXgg
KiBzaXplb2Yodm9pZCopKSkpOworICAgICAgICBzdG9yZTMyKHZhbHVlLCBhZGRyZXNzRm9yUG9r
ZShpbmRleCkpOwogICAgIH0KIAogICAgIHZvaWQgcG9rZShUcnVzdGVkSW1tUHRyIGltbSwgaW50
IGluZGV4ID0gMCkKICAgICB7Ci0gICAgICAgIHN0b3JlUHRyKGltbSwgQWRkcmVzcyhzdGFja1Bv
aW50ZXJSZWdpc3RlciwgKGluZGV4ICogc2l6ZW9mKHZvaWQqKSkpKTsKKyAgICAgICAgc3RvcmVQ
dHIoaW1tLCBhZGRyZXNzRm9yUG9rZShpbmRleCkpOwogICAgIH0KIAogCkBAIC0xNjksNiArMTg3
LDEwIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIGJyYW5jaFB0cihjb25kLCBvcDEsIGltbSku
bGlua1RvKHRhcmdldCwgdGhpcyk7CiAgICAgfQorICAgIHZvaWQgYnJhbmNoUHRyKFJlbGF0aW9u
YWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBvcDEsIEltbVB0ciBpbW0sIExhYmVsIHRhcmdl
dCkKKyAgICB7CisgICAgICAgIGJyYW5jaFB0cihjb25kLCBvcDEsIGltbSkubGlua1RvKHRhcmdl
dCwgdGhpcyk7CisgICAgfQogCiAgICAgdm9pZCBicmFuY2gzMihSZWxhdGlvbmFsQ29uZGl0aW9u
IGNvbmQsIFJlZ2lzdGVySUQgb3AxLCBSZWdpc3RlcklEIG9wMiwgTGFiZWwgdGFyZ2V0KQogICAg
IHsKQEAgLTE3OSw2ICsyMDEsMTEgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgYnJhbmNoMzIo
Y29uZCwgb3AxLCBpbW0pLmxpbmtUbyh0YXJnZXQsIHRoaXMpOwogICAgIH0KKyAgICAKKyAgICB2
b2lkIGJyYW5jaDMyKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBvcDEsIElt
bTMyIGltbSwgTGFiZWwgdGFyZ2V0KQorICAgIHsKKyAgICAgICAgYnJhbmNoMzIoY29uZCwgb3Ax
LCBpbW0pLmxpbmtUbyh0YXJnZXQsIHRoaXMpOworICAgIH0KIAogICAgIHZvaWQgYnJhbmNoMzIo
UmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQsIEFkZHJlc3MgcmlnaHQs
IExhYmVsIHRhcmdldCkKICAgICB7CkBAIC0xOTAsNiArMjE3LDExIEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIGJyYW5jaDMyKGNvbW11dGUoY29uZCksIHJpZ2h0LCBsZWZ0KTsKICAgICB9CiAK
KyAgICBKdW1wIGJyYW5jaDMyKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgSW1tMzIgbGVmdCwg
UmVnaXN0ZXJJRCByaWdodCkKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2gzMihjb21tdXRl
KGNvbmQpLCByaWdodCwgbGVmdCk7CisgICAgfQorCiAgICAgdm9pZCBicmFuY2hUZXN0UHRyKFJl
c3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHJlZywgTGFiZWwgdGFyZ2V0KQogICAgIHsK
ICAgICAgICAgYnJhbmNoVGVzdFB0cihjb25kLCByZWcpLmxpbmtUbyh0YXJnZXQsIHRoaXMpOwpA
QCAtNDQ2LDggKzQ3OCwzNzMgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIE1hY3Jv
QXNzZW1ibGVyQmFzZTo6YnJhbmNoVGVzdDgoY29uZCwgQWRkcmVzcyhhZGRyZXNzLmJhc2UsIGFk
ZHJlc3Mub2Zmc2V0KSwgbWFzayk7CiAgICAgfQorI2Vsc2UKKworICAgIHVzaW5nIE1hY3JvQXNz
ZW1ibGVyQmFzZTo6YWRkUHRyOworICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyQmFzZTo6YW5kUHRy
OworICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyQmFzZTo6YnJhbmNoU3ViUHRyOworICAgIHVzaW5n
IE1hY3JvQXNzZW1ibGVyQmFzZTo6Y29udmVydEludDMyVG9Eb3VibGU7CisgICAgdXNpbmcgTWFj
cm9Bc3NlbWJsZXJCYXNlOjpzdWJQdHI7CisgICAgCisgICAgdm9pZCBjb252ZXJ0SW50MzJUb0Rv
dWJsZShJbW0zMiBpbW0sIEZQUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgaWYgKHNo
b3VsZEJsaW5kKGltbSkpIHsKKyAgICAgICAgICAgIFJlZ2lzdGVySUQgc2NyYXRjaFJlZ2lzdGVy
ID0gKFJlZ2lzdGVySUQpc2NyYXRjaFJlZ2lzdGVyRm9yQmxpbmRpbmcoKTsKKyAgICAgICAgICAg
IEFTU0VSVChzY3JhdGNoUmVnaXN0ZXIpOworICAgICAgICAgICAgbG9hZFhvckJsaW5kZWRDb25z
dGFudCh4b3JCbGluZENvbnN0YW50KGltbSksIHNjcmF0Y2hSZWdpc3Rlcik7CisgICAgICAgICAg
ICBjb252ZXJ0SW50MzJUb0RvdWJsZShzY3JhdGNoUmVnaXN0ZXIsIGRlc3QpOworICAgICAgICB9
IGVsc2UKKyAgICAgICAgICAgIGNvbnZlcnRJbnQzMlRvRG91YmxlKGltbS5hc1RydXN0ZWRJbW0z
MigpLCBkZXN0KTsKKyAgICB9CisKICNlbmRpZiAvLyAhQ1BVKFg4Nl82NCkKKyAgICAKKyAgICBi
b29sIHNob3VsZEJsaW5kKEltbTMyIGltbSkKKyAgICB7IAorICAgICAgICBBU1NFUlQoIWluVW5p
bnRlcnJ1cHRlZFNlcXVlbmNlKCkpOworI2lmICFkZWZpbmVkKE5ERUJVRykKKyAgICAgICAgVU5V
U0VEX1BBUkFNKGltbSk7CisgICAgICAgIC8vIERlYnVnIGFsd2F5cyBibGluZCBhbGwgY29uc3Rh
bnRzLCBpZiBvbmx5IHNvIHdlIGtub3cKKyAgICAgICAgLy8gaWYgd2UndmUgYnJva2VuIGJsaW5k
aW5nIGR1cmluZyBwYXRjaCBkZXZlbG9wbWVudC4KKyAgICAgICAgcmV0dXJuIHRydWU7CisjZWxz
ZQorCisgICAgICAgIC8vIEZpcnN0IG9mZiB3ZSdsbCBzcGVjaWFsIGNhc2UgY29tbW9uLCAic2Fm
ZSIgdmFsdWVzIHRvIGF2b2lkIGh1cnRpbmcKKyAgICAgICAgLy8gcGVyZm9ybWFuY2UgdG9vIG11
Y2gKKyAgICAgICAgdWludDMyX3QgdmFsdWUgPSBpbW0uYXNUcnVzdGVkSW1tMzIoKS5tX3ZhbHVl
OworICAgICAgICBzd2l0Y2ggKHZhbHVlKSB7CisgICAgICAgIGNhc2UgMHhmZmZmOgorICAgICAg
ICBjYXNlIDB4ZmZmZmZmOgorICAgICAgICBjYXNlIDB4ZmZmZmZmZmY6CisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBpZiAodmFsdWUgPD0g
MHhmZikKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAg
cmV0dXJuIHNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHZhbHVlKTsKKyNlbmRpZgorICAgIH0K
KworICAgIHN0cnVjdCBCbGluZGVkSW1tMzIgeworICAgICAgICBCbGluZGVkSW1tMzIoaW50MzJf
dCB2MSwgaW50MzJfdCB2MikKKyAgICAgICAgICAgIDogdmFsdWUxKHYxKQorICAgICAgICAgICAg
LCB2YWx1ZTIodjIpCisgICAgICAgIHsKKyAgICAgICAgfQorICAgICAgICBUcnVzdGVkSW1tMzIg
dmFsdWUxOworICAgICAgICBUcnVzdGVkSW1tMzIgdmFsdWUyOworICAgIH07CisKKyAgICB1aW50
MzJfdCBrZXlGb3JDb25zdGFudCh1aW50MzJfdCB2YWx1ZSwgdWludDMyX3QmIG1hc2spCisgICAg
eworICAgICAgICB1aW50MzJfdCBrZXkgPSByYW5kb20oKTsKKyAgICAgICAgaWYgKHZhbHVlIDw9
IDB4ZmYpCisgICAgICAgICAgICBtYXNrID0gMHhmZjsKKyAgICAgICAgZWxzZSBpZiAodmFsdWUg
PD0gMHhmZmZmKQorICAgICAgICAgICAgbWFzayA9IDB4ZmZmZjsKKyAgICAgICAgZWxzZSBpZiAo
dmFsdWUgPD0gMHhmZmZmZmYpCisgICAgICAgICAgICBtYXNrID0gMHhmZmZmZmY7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIG1hc2sgPSAweGZmZmZmZmZmOworICAgICAgICByZXR1cm4ga2V5
ICYgbWFzazsKKyAgICB9CiAKKyAgICB1aW50MzJfdCBrZXlGb3JDb25zdGFudCh1aW50MzJfdCB2
YWx1ZSkKKyAgICB7CisgICAgICAgIHVpbnQzMl90IG1hc2sgPSAwOworICAgICAgICByZXR1cm4g
a2V5Rm9yQ29uc3RhbnQodmFsdWUsIG1hc2spOworICAgIH0KKworICAgIEJsaW5kZWRJbW0zMiB4
b3JCbGluZENvbnN0YW50KEltbTMyIGltbSkKKyAgICB7CisgICAgICAgIHVpbnQzMl90IGJhc2VW
YWx1ZSA9IGltbS5hc1RydXN0ZWRJbW0zMigpLm1fdmFsdWU7CisgICAgICAgIHVpbnQzMl90IGtl
eSA9IGtleUZvckNvbnN0YW50KGJhc2VWYWx1ZSk7CisgICAgICAgIHJldHVybiBCbGluZGVkSW1t
MzIoYmFzZVZhbHVlIF4ga2V5LCBrZXkpOworICAgIH0KKworICAgIEJsaW5kZWRJbW0zMiBhZGRp
dGlvbkJsaW5kZWRDb25zdGFudChJbW0zMiBpbW0pCisgICAgeworICAgICAgICB1aW50MzJfdCBi
YXNlVmFsdWUgPSBpbW0uYXNUcnVzdGVkSW1tMzIoKS5tX3ZhbHVlOworICAgICAgICB1aW50MzJf
dCBrZXkgPSBrZXlGb3JDb25zdGFudChiYXNlVmFsdWUpOworICAgICAgICBpZiAoa2V5ID4gYmFz
ZVZhbHVlKQorICAgICAgICAgICAga2V5ID0ga2V5IC0gYmFzZVZhbHVlOworICAgICAgICByZXR1
cm4gQmxpbmRlZEltbTMyKGJhc2VWYWx1ZSAtIGtleSwga2V5KTsKKyAgICB9CisgICAgCisgICAg
QmxpbmRlZEltbTMyIGFuZEJsaW5kZWRDb25zdGFudChJbW0zMiBpbW0pCisgICAgeworICAgICAg
ICB1aW50MzJfdCBiYXNlVmFsdWUgPSBpbW0uYXNUcnVzdGVkSW1tMzIoKS5tX3ZhbHVlOworICAg
ICAgICB1aW50MzJfdCBtYXNrID0gMDsKKyAgICAgICAgdWludDMyX3Qga2V5ID0ga2V5Rm9yQ29u
c3RhbnQoYmFzZVZhbHVlLCBtYXNrKTsKKyAgICAgICAgQVNTRVJUKChiYXNlVmFsdWUgJiBtYXNr
KSA9PSBiYXNlVmFsdWUpOworICAgICAgICByZXR1cm4gQmxpbmRlZEltbTMyKCgoYmFzZVZhbHVl
ICYga2V5KSB8IH5rZXkpICYgbWFzaywgKChiYXNlVmFsdWUgJiB+a2V5KSB8IGtleSkgJiBtYXNr
KTsKKyAgICB9CisgICAgCisgICAgQmxpbmRlZEltbTMyIG9yQmxpbmRlZENvbnN0YW50KEltbTMy
IGltbSkKKyAgICB7CisgICAgICAgIHVpbnQzMl90IGJhc2VWYWx1ZSA9IGltbS5hc1RydXN0ZWRJ
bW0zMigpLm1fdmFsdWU7CisgICAgICAgIHVpbnQzMl90IG1hc2sgPSAwOworICAgICAgICB1aW50
MzJfdCBrZXkgPSBrZXlGb3JDb25zdGFudChiYXNlVmFsdWUsIG1hc2spOworICAgICAgICBBU1NF
UlQoKGJhc2VWYWx1ZSAmIG1hc2spID09IGJhc2VWYWx1ZSk7CisgICAgICAgIHJldHVybiBCbGlu
ZGVkSW1tMzIoKGJhc2VWYWx1ZSAmIGtleSkgJiBtYXNrLCAoYmFzZVZhbHVlICYgfmtleSkgJiBt
YXNrKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBsb2FkWG9yQmxpbmRlZENvbnN0YW50KEJsaW5k
ZWRJbW0zMiBjb25zdGFudCwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbW92ZShj
b25zdGFudC52YWx1ZTEsIGRlc3QpOworICAgICAgICB4b3IzMihjb25zdGFudC52YWx1ZTIsIGRl
c3QpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGFkZDMyKEltbTMyIGltbSwgUmVnaXN0ZXJJRCBk
ZXN0KQorICAgIHsKKyAgICAgICAgaWYgKHNob3VsZEJsaW5kKGltbSkpIHsKKyAgICAgICAgICAg
IEJsaW5kZWRJbW0zMiBrZXkgPSBhZGRpdGlvbkJsaW5kZWRDb25zdGFudChpbW0pOworICAgICAg
ICAgICAgYWRkMzIoa2V5LnZhbHVlMSwgZGVzdCk7CisgICAgICAgICAgICBhZGQzMihrZXkudmFs
dWUyLCBkZXN0KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBhZGQzMihpbW0uYXNUcnVz
dGVkSW1tMzIoKSwgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgYWRkUHRyKEltbTMyIGlt
bSwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgaWYgKHNob3VsZEJsaW5kKGltbSkp
IHsKKyAgICAgICAgICAgIEJsaW5kZWRJbW0zMiBrZXkgPSBhZGRpdGlvbkJsaW5kZWRDb25zdGFu
dChpbW0pOworICAgICAgICAgICAgYWRkUHRyKGtleS52YWx1ZTEsIGRlc3QpOworICAgICAgICAg
ICAgYWRkUHRyKGtleS52YWx1ZTIsIGRlc3QpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAg
IGFkZFB0cihpbW0uYXNUcnVzdGVkSW1tMzIoKSwgZGVzdCk7CisgICAgfQorCisgICAgdm9pZCBh
bmQzMihJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIGlmIChzaG91
bGRCbGluZChpbW0pKSB7CisgICAgICAgICAgICBCbGluZGVkSW1tMzIga2V5ID0gYW5kQmxpbmRl
ZENvbnN0YW50KGltbSk7CisgICAgICAgICAgICBhbmQzMihrZXkudmFsdWUxLCBkZXN0KTsKKyAg
ICAgICAgICAgIGFuZDMyKGtleS52YWx1ZTIsIGRlc3QpOworICAgICAgICB9IGVsc2UKKyAgICAg
ICAgICAgIGFuZDMyKGltbS5hc1RydXN0ZWRJbW0zMigpLCBkZXN0KTsKKyAgICB9CisKKyAgICB2
b2lkIGFuZFB0cihJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIGlm
IChzaG91bGRCbGluZChpbW0pKSB7CisgICAgICAgICAgICBCbGluZGVkSW1tMzIga2V5ID0gYW5k
QmxpbmRlZENvbnN0YW50KGltbSk7CisgICAgICAgICAgICBhbmRQdHIoa2V5LnZhbHVlMSwgZGVz
dCk7CisgICAgICAgICAgICBhbmRQdHIoa2V5LnZhbHVlMiwgZGVzdCk7CisgICAgICAgIH0gZWxz
ZQorICAgICAgICAgICAgYW5kUHRyKGltbS5hc1RydXN0ZWRJbW0zMigpLCBkZXN0KTsKKyAgICB9
CisgICAgCisgICAgdm9pZCBhbmQzMihJbW0zMiBpbW0sIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3Rl
cklEIGRlc3QpCisgICAgeworICAgICAgICBpZiAoc2hvdWxkQmxpbmQoaW1tKSkgeworICAgICAg
ICAgICAgaWYgKHNyYyA9PSBkZXN0KQorICAgICAgICAgICAgICAgIHJldHVybiBhbmQzMihpbW0u
YXNUcnVzdGVkSW1tMzIoKSwgZGVzdCk7CisgICAgICAgICAgICBsb2FkWG9yQmxpbmRlZENvbnN0
YW50KHhvckJsaW5kQ29uc3RhbnQoaW1tKSwgZGVzdCk7CisgICAgICAgICAgICBhbmQzMihzcmMs
IGRlc3QpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGFuZDMyKGltbS5hc1RydXN0ZWRJ
bW0zMigpLCBzcmMsIGRlc3QpOworICAgIH0KKworICAgIHZvaWQgbW92ZShJbW0zMiBpbW0sIFJl
Z2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIGlmIChzaG91bGRCbGluZChpbW0pKQorICAg
ICAgICAgICAgbG9hZFhvckJsaW5kZWRDb25zdGFudCh4b3JCbGluZENvbnN0YW50KGltbSksIGRl
c3QpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtb3ZlKGltbS5hc1RydXN0ZWRJbW0zMigp
LCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBvcjMyKEltbTMyIGltbSwgUmVnaXN0ZXJJ
RCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIGlmIChzaG91bGRCbGluZChp
bW0pKSB7CisgICAgICAgICAgICBpZiAoc3JjID09IGRlc3QpCisgICAgICAgICAgICAgICAgcmV0
dXJuIG9yMzIoaW1tLCBkZXN0KTsKKyAgICAgICAgICAgIGxvYWRYb3JCbGluZGVkQ29uc3RhbnQo
eG9yQmxpbmRDb25zdGFudChpbW0pLCBkZXN0KTsKKyAgICAgICAgICAgIG9yMzIoc3JjLCBkZXN0
KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBvcjMyKGltbS5hc1RydXN0ZWRJbW0zMigp
LCBzcmMsIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lkIG9yMzIoSW1tMzIgaW1tLCBSZWdp
c3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBpZiAoc2hvdWxkQmxpbmQoaW1tKSkgeworICAg
ICAgICAgICAgQmxpbmRlZEltbTMyIGtleSA9IG9yQmxpbmRlZENvbnN0YW50KGltbSk7CisgICAg
ICAgICAgICBvcjMyKGtleS52YWx1ZTEsIGRlc3QpOworICAgICAgICAgICAgb3IzMihrZXkudmFs
dWUyLCBkZXN0KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBvcjMyKGltbS5hc1RydXN0
ZWRJbW0zMigpLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBwb2tlKEltbTMyIHZhbHVl
LCBpbnQgaW5kZXggPSAwKQorICAgIHsKKyAgICAgICAgc3RvcmUzMih2YWx1ZSwgYWRkcmVzc0Zv
clBva2UoaW5kZXgpKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBzdG9yZTMyKEltbTMyIGltbSwg
QWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgaWYgKHNob3VsZEJsaW5kKGltbSkpIHsKKyNp
ZiBDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KQorICAgICAgICAgICAgQmxpbmRlZEltbTMyIGJsaW5k
ID0geG9yQmxpbmRDb25zdGFudChpbW0pOworICAgICAgICAgICAgc3RvcmUzMihibGluZC52YWx1
ZTEsIGRlc3QpOworICAgICAgICAgICAgeG9yMzIoYmxpbmQudmFsdWUyLCBkZXN0KTsKKyNlbHNl
CisgICAgICAgICAgICBSZWdpc3RlcklEIHNjcmF0Y2hSZWdpc3RlciA9IChSZWdpc3RlcklEKXNj
cmF0Y2hSZWdpc3RlckZvckJsaW5kaW5nKCk7CisgICAgICAgICAgICBsb2FkWG9yQmxpbmRlZENv
bnN0YW50KHhvckJsaW5kQ29uc3RhbnQoaW1tKSwgc2NyYXRjaFJlZ2lzdGVyKTsKKyAgICAgICAg
ICAgIHN0b3JlMzIoc2NyYXRjaFJlZ2lzdGVyLCBkZXN0KTsKKyNlbmRpZgorICAgICAgICB9IGVs
c2UKKyAgICAgICAgICAgIHN0b3JlMzIoaW1tLmFzVHJ1c3RlZEltbTMyKCksIGRlc3QpOworICAg
IH0KKyAgICAKKyAgICB2b2lkIHN1YjMyKEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQorICAg
IHsKKyAgICAgICAgaWYgKHNob3VsZEJsaW5kKGltbSkpIHsKKyAgICAgICAgICAgIEJsaW5kZWRJ
bW0zMiBrZXkgPSBhZGRpdGlvbkJsaW5kZWRDb25zdGFudChpbW0pOworICAgICAgICAgICAgc3Vi
MzIoa2V5LnZhbHVlMSwgZGVzdCk7CisgICAgICAgICAgICBzdWIzMihrZXkudmFsdWUyLCBkZXN0
KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBzdWIzMihpbW0uYXNUcnVzdGVkSW1tMzIo
KSwgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgc3ViUHRyKEltbTMyIGltbSwgUmVnaXN0
ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgaWYgKHNob3VsZEJsaW5kKGltbSkpIHsKKyAgICAg
ICAgICAgIEJsaW5kZWRJbW0zMiBrZXkgPSBhZGRpdGlvbkJsaW5kZWRDb25zdGFudChpbW0pOwor
ICAgICAgICAgICAgc3ViUHRyKGtleS52YWx1ZTEsIGRlc3QpOworICAgICAgICAgICAgc3ViUHRy
KGtleS52YWx1ZTIsIGRlc3QpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHN1YlB0cihp
bW0uYXNUcnVzdGVkSW1tMzIoKSwgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgeG9yMzIo
SW1tMzIgaW1tLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAg
ICAgaWYgKHNob3VsZEJsaW5kKGltbSkpIHsKKyAgICAgICAgICAgIEJsaW5kZWRJbW0zMiBibGlu
ZCA9IHhvckJsaW5kQ29uc3RhbnQoaW1tKTsKKyAgICAgICAgICAgIHhvcjMyKGJsaW5kLnZhbHVl
MSwgc3JjLCBkZXN0KTsKKyAgICAgICAgICAgIHhvcjMyKGJsaW5kLnZhbHVlMiwgZGVzdCk7Cisg
ICAgICAgIH0gZWxzZQorICAgICAgICAgICAgeG9yMzIoaW1tLmFzVHJ1c3RlZEltbTMyKCksIHNy
YywgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgeG9yMzIoSW1tMzIgaW1tLCBSZWdpc3Rl
cklEIGRlc3QpCisgICAgeworICAgICAgICBpZiAoc2hvdWxkQmxpbmQoaW1tKSkgeworICAgICAg
ICAgICAgQmxpbmRlZEltbTMyIGJsaW5kID0geG9yQmxpbmRDb25zdGFudChpbW0pOworICAgICAg
ICAgICAgeG9yMzIoYmxpbmQudmFsdWUxLCBkZXN0KTsKKyAgICAgICAgICAgIHhvcjMyKGJsaW5k
LnZhbHVlMiwgZGVzdCk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgeG9yMzIoaW1tLmFz
VHJ1c3RlZEltbTMyKCksIGRlc3QpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoMzIoUmVsYXRp
b25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQsIEltbTMyIHJpZ2h0KQorICAgIHsK
KyAgICAgICAgaWYgKHNob3VsZEJsaW5kKHJpZ2h0KSkgeworICAgICAgICAgICAgaWYgKFJlZ2lz
dGVySUQgc2NyYXRjaFJlZ2lzdGVyID0gKFJlZ2lzdGVySUQpc2NyYXRjaFJlZ2lzdGVyRm9yQmxp
bmRpbmcoKSkgeworICAgICAgICAgICAgICAgIGxvYWRYb3JCbGluZGVkQ29uc3RhbnQoeG9yQmxp
bmRDb25zdGFudChyaWdodCksIHNjcmF0Y2hSZWdpc3Rlcik7CisgICAgICAgICAgICAgICAgcmV0
dXJuIGJyYW5jaDMyKGNvbmQsIGxlZnQsIHNjcmF0Y2hSZWdpc3Rlcik7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICAvLyBJZiB3ZSBkb24ndCBoYXZlIGEgc2NyYXRjaCByZWdpc3RlciBhdmFp
bGFibGUgZm9yIHVzZSwgd2UnbGwganVzdCAKKyAgICAgICAgICAgIC8vIHBsYWNlIGEgcmFuZG9t
IG51bWJlciBvZiBub3BzLgorICAgICAgICAgICAgdWludDMyX3Qgbm9wQ291bnQgPSByYW5kb20o
KSAmIDM7CisgICAgICAgICAgICB3aGlsZSAobm9wQ291bnQtLSkKKyAgICAgICAgICAgICAgICBu
b3AoKTsKKyAgICAgICAgICAgIHJldHVybiBicmFuY2gzMihjb25kLCBsZWZ0LCByaWdodC5hc1Ry
dXN0ZWRJbW0zMigpKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcmV0dXJuIGJyYW5j
aDMyKGNvbmQsIGxlZnQsIHJpZ2h0LmFzVHJ1c3RlZEltbTMyKCkpOworICAgIH0KKworICAgIEp1
bXAgYnJhbmNoQWRkMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgc3JjLCBJbW0z
MiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIGlmIChzcmMgPT0gZGVzdCkg
eworICAgICAgICAgICAgaWYgKCFzY3JhdGNoUmVnaXN0ZXJGb3JCbGluZGluZygpKSB7CisgICAg
ICAgICAgICAgICAgLy8gUmVsZWFzZSBtb2RlIEFTU0VSVCwgaWYgdGhpcyBmYWlscyB3ZSB3aWxs
IHBlcmZvcm0gaW5jb3JyZWN0IGNvZGVnZW4uCisgICAgICAgICAgICAgICAgQ1JBU0goKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAoc2hvdWxkQmxpbmQoaW1tKSkgewor
ICAgICAgICAgICAgaWYgKHNyYyA9PSBkZXN0KSB7CisgICAgICAgICAgICAgICAgaWYgKFJlZ2lz
dGVySUQgc2NyYXRjaFJlZ2lzdGVyID0gKFJlZ2lzdGVySUQpc2NyYXRjaFJlZ2lzdGVyRm9yQmxp
bmRpbmcoKSkgeworICAgICAgICAgICAgICAgICAgICBtb3ZlKHNyYywgc2NyYXRjaFJlZ2lzdGVy
KTsKKyAgICAgICAgICAgICAgICAgICAgc3JjID0gc2NyYXRjaFJlZ2lzdGVyOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGxvYWRYb3JCbGluZGVkQ29uc3Rh
bnQoeG9yQmxpbmRDb25zdGFudChpbW0pLCBkZXN0KTsKKyAgICAgICAgICAgIHJldHVybiBicmFu
Y2hBZGQzMihjb25kLCBzcmMsIGRlc3QpOyAgCisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGJy
YW5jaEFkZDMyKGNvbmQsIHNyYywgaW1tLmFzVHJ1c3RlZEltbTMyKCksIGRlc3QpOyAgICAgICAg
ICAgIAorICAgIH0KKyAgICAKKyAgICBKdW1wIGJyYW5jaE11bDMyKFJlc3VsdENvbmRpdGlvbiBj
b25kLCBJbW0zMiBpbW0sIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgewor
ICAgICAgICBpZiAoc3JjID09IGRlc3QpIHsKKyAgICAgICAgICAgIGlmICghc2NyYXRjaFJlZ2lz
dGVyRm9yQmxpbmRpbmcoKSkgeworICAgICAgICAgICAgICAgIC8vIFJlbGVhc2UgbW9kZSBBU1NF
UlQsIGlmIHRoaXMgZmFpbHMgd2Ugd2lsbCBwZXJmb3JtIGluY29ycmVjdCBjb2RlZ2VuLgorICAg
ICAgICAgICAgICAgIENSQVNIKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAg
aWYgKHNob3VsZEJsaW5kKGltbSkpIHsKKyAgICAgICAgICAgIGlmIChzcmMgPT0gZGVzdCkgewor
ICAgICAgICAgICAgICAgIGlmIChSZWdpc3RlcklEIHNjcmF0Y2hSZWdpc3RlciA9IChSZWdpc3Rl
cklEKXNjcmF0Y2hSZWdpc3RlckZvckJsaW5kaW5nKCkpIHsKKyAgICAgICAgICAgICAgICAgICAg
bW92ZShzcmMsIHNjcmF0Y2hSZWdpc3Rlcik7CisgICAgICAgICAgICAgICAgICAgIHNyYyA9IHNj
cmF0Y2hSZWdpc3RlcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBsb2FkWG9yQmxpbmRlZENvbnN0YW50KHhvckJsaW5kQ29uc3RhbnQoaW1tKSwgZGVzdCk7
CisgICAgICAgICAgICByZXR1cm4gYnJhbmNoTXVsMzIoY29uZCwgc3JjLCBkZXN0KTsgIAorICAg
ICAgICB9CisgICAgICAgIHJldHVybiBicmFuY2hNdWwzMihjb25kLCBpbW0uYXNUcnVzdGVkSW1t
MzIoKSwgc3JjLCBkZXN0KTsKKyAgICB9CisKKyAgICAvLyBicmFuY2hTdWIzMiB0YWtlcyBhIHNj
cmF0Y2ggcmVnaXN0ZXIgYXMgMzIgYml0IHBsYXRmb3JtcyBtYWtlIHVzZSBvZiB0aGlzLAorICAg
IC8vIHdpdGggc3JjID09IGRzdCwgYW5kIG9uIHg4Ni0zMiB3ZSBkb24ndCBoYXZlIGEgcGxhdGZv
cm0gc2NyYXRjaCByZWdpc3Rlci4KKyAgICBKdW1wIGJyYW5jaFN1YjMyKFJlc3VsdENvbmRpdGlv
biBjb25kLCBSZWdpc3RlcklEIHNyYywgSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QsIFJlZ2lz
dGVySUQgc2NyYXRjaCkKKyAgICB7CisgICAgICAgIGlmIChzaG91bGRCbGluZChpbW0pKSB7Cisg
ICAgICAgICAgICBBU1NFUlQoc2NyYXRjaCAhPSBkZXN0KTsKKyAgICAgICAgICAgIEFTU0VSVChz
Y3JhdGNoICE9IHNyYyk7CisgICAgICAgICAgICBsb2FkWG9yQmxpbmRlZENvbnN0YW50KHhvckJs
aW5kQ29uc3RhbnQoaW1tKSwgc2NyYXRjaCk7CisgICAgICAgICAgICByZXR1cm4gYnJhbmNoU3Vi
MzIoY29uZCwgc3JjLCBzY3JhdGNoLCBkZXN0KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4g
YnJhbmNoU3ViMzIoY29uZCwgc3JjLCBpbW0uYXNUcnVzdGVkSW1tMzIoKSwgZGVzdCk7ICAgICAg
ICAgICAgCisgICAgfQorICAgIAorICAgIC8vIEltbWVkaWF0ZSBzaGlmdHMgb25seSBoYXZlIDUg
Y29udHJvbGxhYmxlIGJpdHMKKyAgICAvLyBzbyB3ZSdsbCBjb25zaWRlciB0aGVtIHNhZmUgZm9y
IG5vdy4KKyAgICBUcnVzdGVkSW1tMzIgdHJ1c3RlZEltbTMyRm9yU2hpZnQoSW1tMzIgaW1tKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIFRydXN0ZWRJbW0zMihpbW0uYXNUcnVzdGVkSW1tMzIoKS5t
X3ZhbHVlICYgMzEpOworICAgIH0KKworICAgIHZvaWQgbHNoaWZ0MzIoSW1tMzIgaW1tLCBSZWdp
c3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBsc2hpZnQzMih0cnVzdGVkSW1tMzJGb3JTaGlm
dChpbW0pLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBsc2hpZnQzMihSZWdpc3RlcklE
IHNyYywgSW1tMzIgYW1vdW50LCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBsc2hp
ZnQzMihzcmMsIHRydXN0ZWRJbW0zMkZvclNoaWZ0KGFtb3VudCksIGRlc3QpOworICAgIH0KKyAg
ICAKKyAgICB2b2lkIHJzaGlmdDMyKEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsK
KyAgICAgICAgcnNoaWZ0MzIodHJ1c3RlZEltbTMyRm9yU2hpZnQoaW1tKSwgZGVzdCk7CisgICAg
fQorICAgIAorICAgIHZvaWQgcnNoaWZ0MzIoUmVnaXN0ZXJJRCBzcmMsIEltbTMyIGFtb3VudCwg
UmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgcnNoaWZ0MzIoc3JjLCB0cnVzdGVkSW1t
MzJGb3JTaGlmdChhbW91bnQpLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCB1cnNoaWZ0
MzIoSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICB1cnNoaWZ0MzIo
dHJ1c3RlZEltbTMyRm9yU2hpZnQoaW1tKSwgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQg
dXJzaGlmdDMyKFJlZ2lzdGVySUQgc3JjLCBJbW0zMiBhbW91bnQsIFJlZ2lzdGVySUQgZGVzdCkK
KyAgICB7CisgICAgICAgIHVyc2hpZnQzMihzcmMsIHRydXN0ZWRJbW0zMkZvclNoaWZ0KGFtb3Vu
dCksIGRlc3QpOworICAgIH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaAppbmRl
eCA0MWNkYzEyOTFlOWVjMjBhMjk1MjkzYzkzMGI4MGJmYWE1MDRmN2ZiLi43MmEwM2EzMWU3NDY4
MGZiODE1M2RmMjE0N2I5NTM5ZjYxMWIxNTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaApAQCAtNTEsMTQgKzUxLDcg
QEAgcHVibGljOgogICAgIC8vIE1hZ2ljIG51bWJlciBpcyB0aGUgYmlnZ2VzdCB1c2VmdWwgb2Zm
c2V0IHdlIGNhbiBnZXQgb24gQVJNdjcgd2l0aAogICAgIC8vIGEgTERSX2ltbV9UMiBlbmNvZGlu
ZwogICAgIHN0YXRpYyBjb25zdCBpbnQgTWF4aW11bUNvbXBhY3RQdHJBbGlnbmVkQWRkcmVzc09m
ZnNldCA9IDEyNDsKLQotICAgIE1hY3JvQXNzZW1ibGVyQVJNdjcoKQotICAgICAgICA6IG1faW5V
bmludGVycnVwdGVkU2VxdWVuY2UoZmFsc2UpCi0gICAgewotICAgIH0KICAgICAKLSAgICB2b2lk
IGJlZ2luVW5pbnRlcnJ1cHRlZFNlcXVlbmNlKCkgeyBtX2luVW5pbnRlcnJ1cHRlZFNlcXVlbmNl
ID0gdHJ1ZTsgfQotICAgIHZvaWQgZW5kVW5pbnRlcnJ1cHRlZFNlcXVlbmNlKCkgeyBtX2luVW5p
bnRlcnJ1cHRlZFNlcXVlbmNlID0gZmFsc2U7IH0KICAgICBWZWN0b3I8TGlua1JlY29yZD4mIGp1
bXBzVG9MaW5rKCkgeyByZXR1cm4gbV9hc3NlbWJsZXIuanVtcHNUb0xpbmsoKTsgfQogICAgIHZv
aWQqIHVubGlua2VkQ29kZSgpIHsgcmV0dXJuIG1fYXNzZW1ibGVyLnVubGlua2VkQ29kZSgpOyB9
CiAgICAgYm9vbCBjYW5Db21wYWN0KEp1bXBUeXBlIGp1bXBUeXBlKSB7IHJldHVybiBtX2Fzc2Vt
Ymxlci5jYW5Db21wYWN0KGp1bXBUeXBlKTsgfQpAQCAtNTMwLDYgKzUyMyw3IEBAIHByaXZhdGU6
CiAgICAgICAgIHVucmVhY2hhYmxlRm9yUGxhdGZvcm0oKTsKICAgICB9CiAKK3Byb3RlY3RlZDoK
ICAgICB2b2lkIHN0b3JlMzIoUmVnaXN0ZXJJRCBzcmMsIEFybUFkZHJlc3MgYWRkcmVzcykKICAg
ICB7CiAgICAgICAgIGlmIChhZGRyZXNzLnR5cGUgPT0gQXJtQWRkcmVzczo6SGFzSW5kZXgpCkBA
IC01NDQsNiArNTM4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgIH0KIAorcHJpdmF0ZToK
ICAgICB2b2lkIHN0b3JlOChSZWdpc3RlcklEIHNyYywgQXJtQWRkcmVzcyBhZGRyZXNzKQogICAg
IHsKICAgICAgICAgaWYgKGFkZHJlc3MudHlwZSA9PSBBcm1BZGRyZXNzOjpIYXNJbmRleCkKQEAg
LTcyNiw2ICs3MjEsMjQgQEAgcHVibGljOgogICAgICAgICBzdG9yZTE2KHNyYywgc2V0dXBBcm1B
ZGRyZXNzKGFkZHJlc3MpKTsKICAgICB9CiAKKyAgICBzdGF0aWMgUmVnaXN0ZXJJRCBzY3JhdGNo
UmVnaXN0ZXJGb3JCbGluZGluZygpIHsgcmV0dXJuIGRhdGFUZW1wUmVnaXN0ZXI7IH0KKyAgICBz
dGF0aWMgYm9vbCBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50MzJfdCB2YWx1ZSkKKyAg
ICB7CisgICAgICAgIEFSTVRodW1iSW1tZWRpYXRlIGltbWVkaWF0ZSA9IEFSTVRodW1iSW1tZWRp
YXRlOjptYWtlRW5jb2RlZEltbSh2YWx1ZSk7CisKKyAgICAgICAgLy8gQ291bGRuJ3QgYmUgZW5j
b2RlZCBhcyBhbiBpbW1lZGlhdGUsIHNvIGFzc3VtZSBpdCdzIHVudHJ1c3RlZC4KKyAgICAgICAg
aWYgKCFpbW1lZGlhdGUuaXNWYWxpZCgpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgIAorICAgICAgICAvLyBJZiB3ZSBjYW4gZW5jb2RlIHRoZSBpbW1lZGlhdGUsIHdlIGhhdmUg
bGVzcyB0aGFuIDE2IGF0dGFja2VyCisgICAgICAgIC8vIGNvbnRyb2xsZWQgYml0cy4KKyAgICAg
ICAgaWYgKGltbWVkaWF0ZS5pc0VuY29kZWRJbW0oKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgICAgICAvLyBEb24ndCBsZXQgYW55IG1vcmUgdGhhbiAxMiBiaXRzIG9mIGFuIGlu
c3RydWN0aW9uIHdvcmQKKyAgICAgICAgLy8gYmUgY29udHJvbGxlZCBieSBhbiBhdHRhY2tlci4K
KyAgICAgICAgcmV0dXJuICFpbW1lZGlhdGUuaXNVSW50MTIoKTsKKyAgICB9CiAKICAgICAvLyBG
bG9hdGluZy1wb2ludCBvcGVyYXRpb25zOgogCkBAIC05NjIsNyArOTc1LDcgQEAgcHVibGljOgog
ICAgICAgICAvLyBjbGFtcGVkIHRvIDB4ODAwMDAwMDAsIHNvIDJ4IGRlc3QgaXMgemVybyBpbiB0
aGlzIGNhc2UuIEluIHRoZSBjYXNlIG9mCiAgICAgICAgIC8vIG92ZXJmbG93IHRoZSByZXN1bHQg
d2lsbCBiZSBlcXVhbCB0byAtMi4KICAgICAgICAgSnVtcCB1bmRlcmZsb3cgPSBicmFuY2hBZGQz
MihaZXJvLCBkZXN0LCBkZXN0LCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgSnVtcCBub092
ZXJmbG93ID0gYnJhbmNoMzIoTm90RXF1YWwsIGRhdGFUZW1wUmVnaXN0ZXIsIEltbTMyKC0yKSk7
CisgICAgICAgIEp1bXAgbm9PdmVyZmxvdyA9IGJyYW5jaDMyKE5vdEVxdWFsLCBkYXRhVGVtcFJl
Z2lzdGVyLCBUcnVzdGVkSW1tMzIoLTIpKTsKIAogICAgICAgICAvLyBGb3IgQnJhbmNoSWZUcnVu
Y2F0ZVN1Y2Nlc3NmdWwsIHdlIGJyYW5jaCBpZiAnbm9PdmVyZmxvdycganVtcHMuCiAgICAgICAg
IHVuZGVyZmxvdy5saW5rKHRoaXMpOwpAQCAtMTYwMSwxMCArMTYxNCw2IEBAIHB1YmxpYzoKICAg
ICB9CiAKIHByb3RlY3RlZDoKLSAgICBib29sIGluVW5pbnRlcnJ1cHRlZFNlcXVlbmNlKCkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBtX2luVW5pbnRlcnJ1cHRlZFNlcXVlbmNlOwotICAgIH0KIAog
ICAgIEFMV0FZU19JTkxJTkUgSnVtcCBqdW1wKCkKICAgICB7CkBAIC0xNzEyLDggKzE3MjEsNyBA
QCBwcml2YXRlOgogICAgIHsKICAgICAgICAgQVJNdjdBc3NlbWJsZXI6OnJlbGlua0NhbGwoY2Fs
bC5kYXRhTG9jYXRpb24oKSwgZGVzdGluYXRpb24uZXhlY3V0YWJsZUFkZHJlc3MoKSk7CiAgICAg
fQotICAgIAotICAgIGJvb2wgbV9pblVuaW50ZXJydXB0ZWRTZXF1ZW5jZTsKKwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgKaW5kZXggY2Y3NmNhYTY4MGY3MjU4YTNjYmQxZmE2
N2M5MWE4YTAxMzdhNjcwMi4uMTM1ZTljNGI5MGMzNGI5ZjQwZWQwNzJhZGM3YzY3NTg5MDViYmZl
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
Ymxlclg4Nl82NC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJYODZfNjQuaApAQCAtNDQ5LDYgKzQ0OSwxMiBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiBKdW1wKG1fYXNzZW1ibGVyLmpDQyh4ODZDb25kaXRpb24oY29uZCkpKTsKICAgICB9CiAK
KyAgICBKdW1wIGJyYW5jaFN1YlB0cihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBz
cmMxLCBUcnVzdGVkSW1tMzIgc3JjMiwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAg
bW92ZShzcmMxLCBkZXN0KTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaFN1YlB0cihjb25kLCBzcmMy
LCBkZXN0KTsKKyAgICB9CisKICAgICBEYXRhTGFiZWxQdHIgbW92ZVdpdGhQYXRjaChUcnVzdGVk
SW1tUHRyIGluaXRpYWxWYWx1ZSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9h
c3NlbWJsZXIubW92cV9pNjRyKGluaXRpYWxWYWx1ZS5hc0ludHB0cigpLCBkZXN0KTsKQEAgLTQ5
Myw2ICs0OTksOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBGdW5jdGlvblB0cihYODZBc3Nl
bWJsZXI6OnJlYWRQb2ludGVyKGNhbGwuZGF0YUxhYmVsUHRyQXRPZmZzZXQoLVJFUFRBQ0hfT0ZG
U0VUX0NBTExfUjExKS5kYXRhTG9jYXRpb24oKSkpOwogICAgIH0KIAorICAgIHN0YXRpYyBSZWdp
c3RlcklEIHNjcmF0Y2hSZWdpc3RlckZvckJsaW5kaW5nKCkgeyByZXR1cm4gc2NyYXRjaFJlZ2lz
dGVyOyB9CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIExpbmtCdWZmZXI7CiAgICAgZnJp
ZW5kIGNsYXNzIFJlcGF0Y2hCdWZmZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
SklUQ29tcGlsZXIuY3BwCmluZGV4IGZmZDVmNzA4OGI5Zjg5MTkxYmMwOTU4ZDJkODdhZTZmOWVj
YjJlYTMuLmFmOThmOGQ3YWQ5ZmEwNmM2MDcwMjVmMjc3MjM4MGIwODMzZmU3ZDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCkBAIC00NCw3ICs0NCw3
IEBAIHZvaWQgSklUQ29tcGlsZXI6OmxpbmtPU1JFeGl0cygpCiAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IGNvZGVCbG9jaygpLT5udW1iZXJPZk9TUkV4aXRzKCk7ICsraSkgewogICAgICAg
ICBPU1JFeGl0JiBleGl0ID0gY29kZUJsb2NrKCktPm9zckV4aXQoaSk7CiAgICAgICAgIGV4aXQu
bV9jaGVjay5pbml0aWFsSnVtcCgpLmxpbmsodGhpcyk7Ci0gICAgICAgIHN0b3JlMzIoSW1tMzIo
aSksICZnbG9iYWxEYXRhKCktPm9zckV4aXRJbmRleCk7CisgICAgICAgIHN0b3JlMzIoVHJ1c3Rl
ZEltbTMyKGkpLCAmZ2xvYmFsRGF0YSgpLT5vc3JFeGl0SW5kZXgpOwogICAgICAgICBiZWdpblVu
aW50ZXJydXB0ZWRTZXF1ZW5jZSgpOwogICAgICAgICBleGl0Lm1fY2hlY2suc3dpdGNoVG9MYXRl
SnVtcChqdW1wKCkpOwogICAgICAgICBlbmRVbmludGVycnVwdGVkU2VxdWVuY2UoKTsKQEAgLTc1
LDcgKzc1LDcgQEAgdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZUJvZHkoU3BlY3VsYXRpdmVKSVQm
IHNwZWN1bGF0aXZlKQogICAgIGJyZWFrcG9pbnQoKTsKICNlbmRpZgogICAgIAotICAgIGFkZFB0
cihJbW0zMigxKSwgQWJzb2x1dGVBZGRyZXNzKGNvZGVCbG9jaygpLT5hZGRyZXNzT2ZTcGVjdWxh
dGl2ZVN1Y2Nlc3NDb3VudGVyKCkpKTsKKyAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKDEpLCBBYnNv
bHV0ZUFkZHJlc3MoY29kZUJsb2NrKCktPmFkZHJlc3NPZlNwZWN1bGF0aXZlU3VjY2Vzc0NvdW50
ZXIoKSkpOwogCiAgICAgYm9vbCBjb21waWxlZFNwZWN1bGF0aXZlID0gc3BlY3VsYXRpdmUuY29t
cGlsZSgpOwogICAgIEFTU0VSVF9VTlVTRUQoY29tcGlsZWRTcGVjdWxhdGl2ZSwgY29tcGlsZWRT
cGVjdWxhdGl2ZSk7CkBAIC0yMjUsNyArMjI1LDcgQEAgYm9vbCBKSVRDb21waWxlcjo6Y29tcGls
ZUZ1bmN0aW9uKEpJVENvZGUmIGVudHJ5LCBNYWNyb0Fzc2VtYmxlckNvZGVQdHImIGVudHJ5V2kK
ICAgICBMYWJlbCBmcm9tQXJpdHlDaGVjayh0aGlzKTsKICAgICAvLyBQbGFudCBhIGNoZWNrIHRo
YXQgc3VmZmljaWVudCBzcGFjZSBpcyBhdmFpbGFibGUgaW4gdGhlIFJlZ2lzdGVyRmlsZS4KICAg
ICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2Mjkx
Ci0gICAgYWRkUHRyKEltbTMyKG1fY29kZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lzdGVycyAqIHNp
emVvZihSZWdpc3RlcikpLCBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6cmVn
VDEpOworICAgIGFkZFB0cihUcnVzdGVkSW1tMzIobV9jb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVn
aXN0ZXJzICogc2l6ZW9mKFJlZ2lzdGVyKSksIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBH
UFJJbmZvOjpyZWdUMSk7CiAgICAgSnVtcCByZWdpc3RlckZpbGVDaGVjayA9IGJyYW5jaFB0cihC
ZWxvdywgQWJzb2x1dGVBZGRyZXNzKG1fZ2xvYmFsRGF0YS0+aW50ZXJwcmV0ZXItPnJlZ2lzdGVy
RmlsZSgpLmFkZHJlc3NPZkVuZCgpKSwgR1BSSW5mbzo6cmVnVDEpOwogICAgIC8vIFJldHVybiBo
ZXJlIGFmdGVyIHJlZ2lzdGVyIGZpbGUgY2hlY2suCiAgICAgTGFiZWwgZnJvbVJlZ2lzdGVyRmls
ZUNoZWNrID0gbGFiZWwoKTsKQEAgLTI2MSw3ICsyNjEsNyBAQCBib29sIEpJVENvbXBpbGVyOjpj
b21waWxlRnVuY3Rpb24oSklUQ29kZSYgZW50cnksIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciYgZW50
cnlXaQogICAgIGNvbXBpbGVFbnRyeSgpOwogCiAgICAgbG9hZDMyKEFzc2VtYmx5SGVscGVyczo6
cGF5bG9hZEZvcigoVmlydHVhbFJlZ2lzdGVyKVJlZ2lzdGVyRmlsZTo6QXJndW1lbnRDb3VudCks
IEdQUkluZm86OnJlZ1QxKTsKLSAgICBicmFuY2gzMihBYm92ZU9yRXF1YWwsIEdQUkluZm86OnJl
Z1QxLCBJbW0zMihtX2NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKSkubGlua1RvKGZyb21Bcml0
eUNoZWNrLCB0aGlzKTsKKyAgICBicmFuY2gzMihBYm92ZU9yRXF1YWwsIEdQUkluZm86OnJlZ1Qx
LCBUcnVzdGVkSW1tMzIobV9jb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSkpLmxpbmtUbyhmcm9t
QXJpdHlDaGVjaywgdGhpcyk7CiAgICAgbW92ZShzdGFja1BvaW50ZXJSZWdpc3RlciwgR1BSSW5m
bzo6YXJndW1lbnRHUFIwKTsKICAgICBwb2tlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBP
QkpFQ1RfT0ZGU0VUT0Yoc3RydWN0IEpJVFN0YWNrRnJhbWUsIGNhbGxGcmFtZSkgLyBzaXplb2Yo
dm9pZCopKTsKICAgICB0b2tlbiA9IGJlZ2luQ2FsbCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIzMl82NC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjMyXzY0LmNwcAppbmRleCA1ZDJhYTI1
NjNiMGNjYTFiMjIzMDViNGVkZDc0M2Q1M2Y1MzAzYzFlLi45MjY3ZWIwN2YzMTk3NGZhOGMwYTcy
MmQ4MjQ5ZWQxY2I4NGQxNDRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09TUkV4aXRDb21waWxlcjMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09TUkV4aXRDb21waWxlcjMyXzY0LmNwcApAQCAtOTgsNyArOTgsNyBAQCB2b2lkIE9T
UkV4aXRDb21waWxlcjo6Y29tcGlsZUV4aXQoY29uc3QgT1NSRXhpdCYgZXhpdCwgU3BlY3VsYXRp
b25SZWNvdmVyeSogcmVjbwogICAgICAgICAgICAgbV9qaXQuc3RvcmUzMihzY3JhdGNoLCAmYml0
d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihidWNrZXQpLT5hc0JpdHMucGF5bG9h
ZCk7CiAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoc2NyYXRjaEJ1ZmZlciwgc2NyYXRjaCk7CiAg
ICAgICAgIH0gZWxzZSBpZiAoZXhpdC5tX2pzVmFsdWVTb3VyY2UuaGFzS25vd25UYWcoKSkgewot
ICAgICAgICAgICAgbV9qaXQuc3RvcmUzMihBc3NlbWJseUhlbHBlcnM6OkltbTMyKGV4aXQubV9q
c1ZhbHVlU291cmNlLnRhZygpKSwgJmJpdHdpc2VfY2FzdDxFbmNvZGVkVmFsdWVEZXNjcmlwdG9y
Kj4oYnVja2V0KS0+YXNCaXRzLnRhZyk7CisgICAgICAgICAgICBtX2ppdC5zdG9yZTMyKEFzc2Vt
Ymx5SGVscGVyczo6VHJ1c3RlZEltbTMyKGV4aXQubV9qc1ZhbHVlU291cmNlLnRhZygpKSwgJmJp
dHdpc2VfY2FzdDxFbmNvZGVkVmFsdWVEZXNjcmlwdG9yKj4oYnVja2V0KS0+YXNCaXRzLnRhZyk7
CiAgICAgICAgICAgICBtX2ppdC5zdG9yZTMyKGV4aXQubV9qc1ZhbHVlU291cmNlLnBheWxvYWRH
UFIoKSwgJmJpdHdpc2VfY2FzdDxFbmNvZGVkVmFsdWVEZXNjcmlwdG9yKj4oYnVja2V0KS0+YXNC
aXRzLnBheWxvYWQpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgbV9qaXQuc3RvcmUz
MihleGl0Lm1fanNWYWx1ZVNvdXJjZS50YWdHUFIoKSwgJmJpdHdpc2VfY2FzdDxFbmNvZGVkVmFs
dWVEZXNjcmlwdG9yKj4oYnVja2V0KS0+YXNCaXRzLnRhZyk7CkBAIC01NjIsMjcgKzU2MiwyNyBA
QCB2b2lkIE9TUkV4aXRDb21waWxlcjo6Y29tcGlsZUV4aXQoY29uc3QgT1NSRXhpdCYgZXhpdCwg
U3BlY3VsYXRpb25SZWNvdmVyeSogcmVjbwogICAgIC8vICAgICBjb3VudGVyIHRvIDA7IG90aGVy
d2lzZSB3ZSBzZXQgdGhlIGNvdW50ZXIgdG8KICAgICAvLyAgICAgY291bnRlclZhbHVlRm9yT3B0
aW1pemVBZnRlcldhcm1VcCgpLgogICAgIAotICAgIG1faml0LmFkZDMyKEFzc2VtYmx5SGVscGVy
czo6SW1tMzIoMSksIEFzc2VtYmx5SGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKCZleGl0Lm1fY291
bnQpKTsKKyAgICBtX2ppdC5hZGQzMihBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMigxKSwg
QXNzZW1ibHlIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3MoJmV4aXQubV9jb3VudCkpOwogICAgIAog
ICAgIG1faml0Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG1faml0LmNvZGVC
bG9jaygpKSwgR1BSSW5mbzo6cmVnVDApOwogICAgIAogICAgIG1faml0LmxvYWQzMihBc3NlbWJs
eUhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDAsIENvZGVCbG9jazo6b2Zmc2V0T2ZTcGVj
dWxhdGl2ZUZhaWxDb3VudGVyKCkpLCBHUFJJbmZvOjpyZWdUMik7CiAgICAgbV9qaXQubG9hZDMy
KEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCwgQ29kZUJsb2NrOjpvZmZz
ZXRPZlNwZWN1bGF0aXZlU3VjY2Vzc0NvdW50ZXIoKSksIEdQUkluZm86OnJlZ1QxKTsKLSAgICBt
X2ppdC5hZGQzMihBc3NlbWJseUhlbHBlcnM6OkltbTMyKDEpLCBHUFJJbmZvOjpyZWdUMik7Ci0g
ICAgbV9qaXQuYWRkMzIoQXNzZW1ibHlIZWxwZXJzOjpJbW0zMigtMSksIEdQUkluZm86OnJlZ1Qx
KTsKKyAgICBtX2ppdC5hZGQzMihBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMigxKSwgR1BS
SW5mbzo6cmVnVDIpOworICAgIG1faml0LmFkZDMyKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZElt
bTMyKC0xKSwgR1BSSW5mbzo6cmVnVDEpOwogICAgIG1faml0LnN0b3JlMzIoR1BSSW5mbzo6cmVn
VDIsIEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCwgQ29kZUJsb2NrOjpv
ZmZzZXRPZlNwZWN1bGF0aXZlRmFpbENvdW50ZXIoKSkpOwogICAgIG1faml0LnN0b3JlMzIoR1BS
SW5mbzo6cmVnVDEsIEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCwgQ29k
ZUJsb2NrOjpvZmZzZXRPZlNwZWN1bGF0aXZlU3VjY2Vzc0NvdW50ZXIoKSkpOwogICAgIAogICAg
IG1faml0Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG1faml0LmJhc2VsaW5l
Q29kZUJsb2NrKCkpLCBHUFJJbmZvOjpyZWdUMCk7CiAgICAgCiAgICAgQXNzZW1ibHlIZWxwZXJz
OjpKdW1wIGZld0ZhaWxzID0gbV9qaXQuYnJhbmNoMzIoQXNzZW1ibHlIZWxwZXJzOjpCZWxvd09y
RXF1YWwsIEdQUkluZm86OnJlZ1QyLCBBc3NlbWJseUhlbHBlcnM6OkltbTMyKG1faml0LmNvZGVC
bG9jaygpLT5sYXJnZUZhaWxDb3VudFRocmVzaG9sZCgpKSk7Ci0gICAgbV9qaXQubXVsMzIoQXNz
ZW1ibHlIZWxwZXJzOjpJbW0zMihPcHRpb25zOjpkZXNpcmVkU3BlY3VsYXRpdmVTdWNjZXNzRmFp
bFJhdGlvKSwgR1BSSW5mbzo6cmVnVDIsIEdQUkluZm86OnJlZ1QyKTsKKyAgICBtX2ppdC5tdWwz
MihBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihPcHRpb25zOjpkZXNpcmVkU3BlY3VsYXRp
dmVTdWNjZXNzRmFpbFJhdGlvKSwgR1BSSW5mbzo6cmVnVDIsIEdQUkluZm86OnJlZ1QyKTsKICAg
ICAKICAgICBBc3NlbWJseUhlbHBlcnM6Okp1bXAgbG93RmFpbFJhdGUgPSBtX2ppdC5icmFuY2gz
MihBc3NlbWJseUhlbHBlcnM6OkJlbG93T3JFcXVhbCwgR1BSSW5mbzo6cmVnVDIsIEdQUkluZm86
OnJlZ1QxKTsKICAgICAKICAgICAvLyBSZW9wdGltaXplIGFzIHNvb24gYXMgcG9zc2libGUuCi0g
ICAgbV9qaXQuc3RvcmUzMihBc3NlbWJseUhlbHBlcnM6OkltbTMyKDApLCBBc3NlbWJseUhlbHBl
cnM6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDAsIENvZGVCbG9jazo6b2Zmc2V0T2ZKSVRFeGVjdXRl
Q291bnRlcigpKSk7Ci0gICAgbV9qaXQuc3RvcmUzMihBc3NlbWJseUhlbHBlcnM6OkltbTMyKDAp
LCBBc3NlbWJseUhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDAsIENvZGVCbG9jazo6b2Zm
c2V0T2ZKSVRFeGVjdXRpb25BY3RpdmVUaHJlc2hvbGQoKSkpOworICAgIG1faml0LnN0b3JlMzIo
QXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMCksIEFzc2VtYmx5SGVscGVyczo6QWRkcmVz
cyhHUFJJbmZvOjpyZWdUMCwgQ29kZUJsb2NrOjpvZmZzZXRPZkpJVEV4ZWN1dGVDb3VudGVyKCkp
KTsKKyAgICBtX2ppdC5zdG9yZTMyKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKDApLCBB
c3NlbWJseUhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDAsIENvZGVCbG9jazo6b2Zmc2V0
T2ZKSVRFeGVjdXRpb25BY3RpdmVUaHJlc2hvbGQoKSkpOwogICAgIEFzc2VtYmx5SGVscGVyczo6
SnVtcCBkb25lQWRqdXN0aW5nID0gbV9qaXQuanVtcCgpOwogICAgIAogICAgIGZld0ZhaWxzLmxp
bmsoJm1faml0KTsKQEAgLTU5Myw5ICs1OTMsOSBAQCB2b2lkIE9TUkV4aXRDb21waWxlcjo6Y29t
cGlsZUV4aXQoY29uc3QgT1NSRXhpdCYgZXhpdCwgU3BlY3VsYXRpb25SZWNvdmVyeSogcmVjbwog
ICAgICAgICBFeGVjdXRpb25Db3VudGVyOjphcHBseU1lbW9yeVVzYWdlSGV1cmlzdGljc0FuZENv
bnZlcnRUb0ludCgKICAgICAgICAgICAgIG1faml0LmJhc2VsaW5lQ29kZUJsb2NrKCktPmNvdW50
ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJMb25nV2FybVVwKCksCiAgICAgICAgICAgICBtX2ppdC5i
YXNlbGluZUNvZGVCbG9jaygpKTsKLSAgICBtX2ppdC5zdG9yZTMyKEFzc2VtYmx5SGVscGVyczo6
SW1tMzIoLXRhcmdldFZhbHVlKSwgQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OnJl
Z1QwLCBDb2RlQmxvY2s6Om9mZnNldE9mSklURXhlY3V0ZUNvdW50ZXIoKSkpOwotICAgIG1faml0
LnN0b3JlMzIoQXNzZW1ibHlIZWxwZXJzOjpJbW0zMih0YXJnZXRWYWx1ZSksIEFzc2VtYmx5SGVs
cGVyczo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCwgQ29kZUJsb2NrOjpvZmZzZXRPZkpJVEV4ZWN1
dGlvbkFjdGl2ZVRocmVzaG9sZCgpKSk7Ci0gICAgbV9qaXQuc3RvcmUzMihBc3NlbWJseUhlbHBl
cnM6OkltbTMyKEV4ZWN1dGlvbkNvdW50ZXI6OmZvcm1hdHRlZFRvdGFsQ291bnQodGFyZ2V0VmFs
dWUpKSwgQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QwLCBDb2RlQmxvY2s6
Om9mZnNldE9mSklURXhlY3V0aW9uVG90YWxDb3VudCgpKSk7CisgICAgbV9qaXQuc3RvcmUzMihB
c3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMigtdGFyZ2V0VmFsdWUpLCBBc3NlbWJseUhlbHBl
cnM6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDAsIENvZGVCbG9jazo6b2Zmc2V0T2ZKSVRFeGVjdXRl
Q291bnRlcigpKSk7CisgICAgbV9qaXQuc3RvcmUzMihBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJ
bW0zMih0YXJnZXRWYWx1ZSksIEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpyZWdU
MCwgQ29kZUJsb2NrOjpvZmZzZXRPZkpJVEV4ZWN1dGlvbkFjdGl2ZVRocmVzaG9sZCgpKSk7Cisg
ICAgbV9qaXQuc3RvcmUzMihBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihFeGVjdXRpb25D
b3VudGVyOjpmb3JtYXR0ZWRUb3RhbENvdW50KHRhcmdldFZhbHVlKSksIEFzc2VtYmx5SGVscGVy
czo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCwgQ29kZUJsb2NrOjpvZmZzZXRPZkpJVEV4ZWN1dGlv
blRvdGFsQ291bnQoKSkpOwogICAgIAogICAgIGRvbmVBZGp1c3RpbmcubGluaygmbV9qaXQpOwog
ICAgIApAQCAtNjI2LDcgKzYyNiw3IEBAIHZvaWQgT1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhp
dChjb25zdCBPU1JFeGl0JiBleGl0LCBTcGVjdWxhdGlvblJlY292ZXJ5KiByZWNvCiAKICAgICAg
ICAgR1BSUmVnIGNhbGxlckZyYW1lR1BSOwogICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lLT5j
YWxsZXIuaW5saW5lQ2FsbEZyYW1lKSB7Ci0gICAgICAgICAgICBtX2ppdC5hZGQzMihBc3NlbWJs
eUhlbHBlcnM6OkltbTMyKGlubGluZUNhbGxGcmFtZS0+Y2FsbGVyLmlubGluZUNhbGxGcmFtZS0+
c3RhY2tPZmZzZXQgKiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSwgR1BSSW5mbzo6Y2FsbEZyYW1l
UmVnaXN0ZXIsIEdQUkluZm86OnJlZ1QzKTsKKyAgICAgICAgICAgIG1faml0LmFkZDMyKEFzc2Vt
Ymx5SGVscGVyczo6VHJ1c3RlZEltbTMyKGlubGluZUNhbGxGcmFtZS0+Y2FsbGVyLmlubGluZUNh
bGxGcmFtZS0+c3RhY2tPZmZzZXQgKiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSwgR1BSSW5mbzo6
Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OnJlZ1QzKTsKICAgICAgICAgICAgIGNhbGxlckZy
YW1lR1BSID0gR1BSSW5mbzo6cmVnVDM7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgY2Fs
bGVyRnJhbWVHUFIgPSBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlcjsKQEAgLTY0Myw3ICs2NDMs
NyBAQCB2b2lkIE9TUkV4aXRDb21waWxlcjo6Y29tcGlsZUV4aXQoY29uc3QgT1NSRXhpdCYgZXhp
dCwgU3BlY3VsYXRpb25SZWNvdmVyeSogcmVjbwogICAgIH0KICAgICAKICAgICBpZiAoZXhpdC5t
X2NvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKQotICAgICAgICBtX2ppdC5hZGRQdHIoQXNzZW1i
bHlIZWxwZXJzOjpJbW0zMihleGl0Lm1fY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUtPnN0YWNr
T2Zmc2V0ICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSksIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lz
dGVyKTsKKyAgICAgICAgbV9qaXQuYWRkUHRyKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMy
KGV4aXQubV9jb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKiBzaXplb2Yo
RW5jb2RlZEpTVmFsdWUpKSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOwogCiAgICAgLy8g
MTQpIEp1bXAgaW50byB0aGUgY29ycmVzcG9uZGluZyBiYXNlbGluZSBKSVQgY29kZS4KICAgICAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVy
NjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXI2NC5j
cHAKaW5kZXggN2E1YjJkNGI0NjJiY2U0MjAzYTUzNmQ3Njg1ZWZlY2QyYWU5M2MzYS4uMDc0Zjlh
YTAyZjJkN2VhYzZmYTZlZmFlZGQyNTc4M2U1NWZjMzU3NyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHAKQEAgLTU0MSwyNyArNTQx
LDI3IEBAIHZvaWQgT1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhpdChjb25zdCBPU1JFeGl0JiBl
eGl0LCBTcGVjdWxhdGlvblJlY292ZXJ5KiByZWNvCiAgICAgLy8gICAgIGNvdW50ZXIgdG8gMDsg
b3RoZXJ3aXNlIHdlIHNldCB0aGUgY291bnRlciB0bwogICAgIC8vICAgICBjb3VudGVyVmFsdWVG
b3JPcHRpbWl6ZUFmdGVyV2FybVVwKCkuCiAgICAgCi0gICAgbV9qaXQuYWRkMzIoQXNzZW1ibHlI
ZWxwZXJzOjpJbW0zMigxKSwgQXNzZW1ibHlIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3MoJmV4aXQu
bV9jb3VudCkpOworICAgIG1faml0LmFkZDMyKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMy
KDEpLCBBc3NlbWJseUhlbHBlcnM6OkFic29sdXRlQWRkcmVzcygmZXhpdC5tX2NvdW50KSk7CiAg
ICAgCiAgICAgbV9qaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIobV9qaXQu
Y29kZUJsb2NrKCkpLCBHUFJJbmZvOjpyZWdUMCk7CiAgICAgCiAgICAgbV9qaXQubG9hZDMyKEFz
c2VtYmx5SGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCwgQ29kZUJsb2NrOjpvZmZzZXRP
ZlNwZWN1bGF0aXZlRmFpbENvdW50ZXIoKSksIEdQUkluZm86OnJlZ1QyKTsKICAgICBtX2ppdC5s
b2FkMzIoQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QwLCBDb2RlQmxvY2s6
Om9mZnNldE9mU3BlY3VsYXRpdmVTdWNjZXNzQ291bnRlcigpKSwgR1BSSW5mbzo6cmVnVDEpOwot
ICAgIG1faml0LmFkZDMyKEFzc2VtYmx5SGVscGVyczo6SW1tMzIoMSksIEdQUkluZm86OnJlZ1Qy
KTsKLSAgICBtX2ppdC5hZGQzMihBc3NlbWJseUhlbHBlcnM6OkltbTMyKC0xKSwgR1BSSW5mbzo6
cmVnVDEpOworICAgIG1faml0LmFkZDMyKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKDEp
LCBHUFJJbmZvOjpyZWdUMik7CisgICAgbV9qaXQuYWRkMzIoQXNzZW1ibHlIZWxwZXJzOjpUcnVz
dGVkSW1tMzIoLTEpLCBHUFJJbmZvOjpyZWdUMSk7CiAgICAgbV9qaXQuc3RvcmUzMihHUFJJbmZv
OjpyZWdUMiwgQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QwLCBDb2RlQmxv
Y2s6Om9mZnNldE9mU3BlY3VsYXRpdmVGYWlsQ291bnRlcigpKSk7CiAgICAgbV9qaXQuc3RvcmUz
MihHUFJJbmZvOjpyZWdUMSwgQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OnJlZ1Qw
LCBDb2RlQmxvY2s6Om9mZnNldE9mU3BlY3VsYXRpdmVTdWNjZXNzQ291bnRlcigpKSk7CiAgICAg
CiAgICAgbV9qaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIobV9qaXQuYmFz
ZWxpbmVDb2RlQmxvY2soKSksIEdQUkluZm86OnJlZ1QwKTsKICAgICAKLSAgICBBc3NlbWJseUhl
bHBlcnM6Okp1bXAgZmV3RmFpbHMgPSBtX2ppdC5icmFuY2gzMihBc3NlbWJseUhlbHBlcnM6OkJl
bG93T3JFcXVhbCwgR1BSSW5mbzo6cmVnVDIsIEFzc2VtYmx5SGVscGVyczo6SW1tMzIobV9qaXQu
Y29kZUJsb2NrKCktPmxhcmdlRmFpbENvdW50VGhyZXNob2xkKCkpKTsKLSAgICBtX2ppdC5tdWwz
MihBc3NlbWJseUhlbHBlcnM6OkltbTMyKE9wdGlvbnM6OmRlc2lyZWRTcGVjdWxhdGl2ZVN1Y2Nl
c3NGYWlsUmF0aW8pLCBHUFJJbmZvOjpyZWdUMiwgR1BSSW5mbzo6cmVnVDIpOworICAgIEFzc2Vt
Ymx5SGVscGVyczo6SnVtcCBmZXdGYWlscyA9IG1faml0LmJyYW5jaDMyKEFzc2VtYmx5SGVscGVy
czo6QmVsb3dPckVxdWFsLCBHUFJJbmZvOjpyZWdUMiwgQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVk
SW1tMzIobV9qaXQuY29kZUJsb2NrKCktPmxhcmdlRmFpbENvdW50VGhyZXNob2xkKCkpKTsKKyAg
ICBtX2ppdC5tdWwzMihBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihPcHRpb25zOjpkZXNp
cmVkU3BlY3VsYXRpdmVTdWNjZXNzRmFpbFJhdGlvKSwgR1BSSW5mbzo6cmVnVDIsIEdQUkluZm86
OnJlZ1QyKTsKICAgICAKICAgICBBc3NlbWJseUhlbHBlcnM6Okp1bXAgbG93RmFpbFJhdGUgPSBt
X2ppdC5icmFuY2gzMihBc3NlbWJseUhlbHBlcnM6OkJlbG93T3JFcXVhbCwgR1BSSW5mbzo6cmVn
VDIsIEdQUkluZm86OnJlZ1QxKTsKICAgICAKICAgICAvLyBSZW9wdGltaXplIGFzIHNvb24gYXMg
cG9zc2libGUuCi0gICAgbV9qaXQuc3RvcmUzMihBc3NlbWJseUhlbHBlcnM6OkltbTMyKDApLCBB
c3NlbWJseUhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDAsIENvZGVCbG9jazo6b2Zmc2V0
T2ZKSVRFeGVjdXRlQ291bnRlcigpKSk7Ci0gICAgbV9qaXQuc3RvcmUzMihBc3NlbWJseUhlbHBl
cnM6OkltbTMyKDApLCBBc3NlbWJseUhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDAsIENv
ZGVCbG9jazo6b2Zmc2V0T2ZKSVRFeGVjdXRpb25BY3RpdmVUaHJlc2hvbGQoKSkpOworICAgIG1f
aml0LnN0b3JlMzIoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMCksIEFzc2VtYmx5SGVs
cGVyczo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCwgQ29kZUJsb2NrOjpvZmZzZXRPZkpJVEV4ZWN1
dGVDb3VudGVyKCkpKTsKKyAgICBtX2ppdC5zdG9yZTMyKEFzc2VtYmx5SGVscGVyczo6VHJ1c3Rl
ZEltbTMyKDApLCBBc3NlbWJseUhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDAsIENvZGVC
bG9jazo6b2Zmc2V0T2ZKSVRFeGVjdXRpb25BY3RpdmVUaHJlc2hvbGQoKSkpOwogICAgIEFzc2Vt
Ymx5SGVscGVyczo6SnVtcCBkb25lQWRqdXN0aW5nID0gbV9qaXQuanVtcCgpOwogICAgIAogICAg
IGZld0ZhaWxzLmxpbmsoJm1faml0KTsKQEAgLTU3Miw5ICs1NzIsOSBAQCB2b2lkIE9TUkV4aXRD
b21waWxlcjo6Y29tcGlsZUV4aXQoY29uc3QgT1NSRXhpdCYgZXhpdCwgU3BlY3VsYXRpb25SZWNv
dmVyeSogcmVjbwogICAgICAgICBFeGVjdXRpb25Db3VudGVyOjphcHBseU1lbW9yeVVzYWdlSGV1
cmlzdGljc0FuZENvbnZlcnRUb0ludCgKICAgICAgICAgICAgIG1faml0LmJhc2VsaW5lQ29kZUJs
b2NrKCktPmNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJMb25nV2FybVVwKCksCiAgICAgICAg
ICAgICBtX2ppdC5iYXNlbGluZUNvZGVCbG9jaygpKTsKLSAgICBtX2ppdC5zdG9yZTMyKEFzc2Vt
Ymx5SGVscGVyczo6SW1tMzIoLXRhcmdldFZhbHVlKSwgQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNz
KEdQUkluZm86OnJlZ1QwLCBDb2RlQmxvY2s6Om9mZnNldE9mSklURXhlY3V0ZUNvdW50ZXIoKSkp
OwotICAgIG1faml0LnN0b3JlMzIoQXNzZW1ibHlIZWxwZXJzOjpJbW0zMih0YXJnZXRWYWx1ZSks
IEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCwgQ29kZUJsb2NrOjpvZmZz
ZXRPZkpJVEV4ZWN1dGlvbkFjdGl2ZVRocmVzaG9sZCgpKSk7Ci0gICAgbV9qaXQuc3RvcmUzMihB
c3NlbWJseUhlbHBlcnM6OkltbTMyKEV4ZWN1dGlvbkNvdW50ZXI6OmZvcm1hdHRlZFRvdGFsQ291
bnQodGFyZ2V0VmFsdWUpKSwgQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OnJlZ1Qw
LCBDb2RlQmxvY2s6Om9mZnNldE9mSklURXhlY3V0aW9uVG90YWxDb3VudCgpKSk7CisgICAgbV9q
aXQuc3RvcmUzMihBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMigtdGFyZ2V0VmFsdWUpLCBB
c3NlbWJseUhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDAsIENvZGVCbG9jazo6b2Zmc2V0
T2ZKSVRFeGVjdXRlQ291bnRlcigpKSk7CisgICAgbV9qaXQuc3RvcmUzMihBc3NlbWJseUhlbHBl
cnM6OlRydXN0ZWRJbW0zMih0YXJnZXRWYWx1ZSksIEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyhH
UFJJbmZvOjpyZWdUMCwgQ29kZUJsb2NrOjpvZmZzZXRPZkpJVEV4ZWN1dGlvbkFjdGl2ZVRocmVz
aG9sZCgpKSk7CisgICAgbV9qaXQuc3RvcmUzMihBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0z
MihFeGVjdXRpb25Db3VudGVyOjpmb3JtYXR0ZWRUb3RhbENvdW50KHRhcmdldFZhbHVlKSksIEFz
c2VtYmx5SGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCwgQ29kZUJsb2NrOjpvZmZzZXRP
ZkpJVEV4ZWN1dGlvblRvdGFsQ291bnQoKSkpOwogICAgIAogICAgIGRvbmVBZGp1c3RpbmcubGlu
aygmbV9qaXQpOwogICAgIApAQCAtNjAzLDcgKzYwMyw3IEBAIHZvaWQgT1NSRXhpdENvbXBpbGVy
Ojpjb21waWxlRXhpdChjb25zdCBPU1JFeGl0JiBleGl0LCBTcGVjdWxhdGlvblJlY292ZXJ5KiBy
ZWNvCiAKICAgICAgICAgR1BSUmVnIGNhbGxlckZyYW1lR1BSOwogICAgICAgICBpZiAoaW5saW5l
Q2FsbEZyYW1lLT5jYWxsZXIuaW5saW5lQ2FsbEZyYW1lKSB7Ci0gICAgICAgICAgICBtX2ppdC5h
ZGRQdHIoQXNzZW1ibHlIZWxwZXJzOjpJbW0zMihpbmxpbmVDYWxsRnJhbWUtPmNhbGxlci5pbmxp
bmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSksIEdQUklu
Zm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjpyZWdUMyk7CisgICAgICAgICAgICBtX2pp
dC5hZGRQdHIoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoaW5saW5lQ2FsbEZyYW1lLT5j
YWxsZXIuaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCAqIHNpemVvZihFbmNvZGVkSlNWYWx1
ZSkpLCBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6cmVnVDMpOwogICAgICAg
ICAgICAgY2FsbGVyRnJhbWVHUFIgPSBHUFJJbmZvOjpyZWdUMzsKICAgICAgICAgfSBlbHNlCiAg
ICAgICAgICAgICBjYWxsZXJGcmFtZUdQUiA9IEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRl
eCAxYTA5OGRkYzVkN2NiZmM0NDI5NDYwOTVkMmYxYmQ2OWVkNzlmZWNkLi5kNGY0ZDhhOGFhYWJj
YThjZTM3NmUwOTA2ZDI1MTgxYjJiMTE4ZTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtOTU2LDcgKzk1Niw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoQmFzaWNCbG9jayYgYmxvY2spCiAgICAgCiAgICAgaWYgKERG
R19FTkFCTEVfRURHRV9DT0RFX1ZFUklGSUNBVElPTikgewogICAgICAgICBKSVRDb21waWxlcjo6
SnVtcCB2ZXJpZmljYXRpb25TdWNjZWVkZWQgPQotICAgICAgICAgICAgbV9qaXQuYnJhbmNoMzIo
SklUQ29tcGlsZXI6OkVxdWFsLCBHUFJJbmZvOjpyZWdUMCwgSW1tMzIobV9ibG9jaykpOworICAg
ICAgICAgICAgbV9qaXQuYnJhbmNoMzIoSklUQ29tcGlsZXI6OkVxdWFsLCBHUFJJbmZvOjpyZWdU
MCwgVHJ1c3RlZEltbTMyKG1fYmxvY2spKTsKICAgICAgICAgbV9qaXQuYnJlYWtwb2ludCgpOwog
ICAgICAgICB2ZXJpZmljYXRpb25TdWNjZWVkZWQubGluaygmbV9qaXQpOwogICAgIH0KQEAgLTEy
MzMsNyArMTIzMyw3IEBAIGJvb2wgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoKQogICAgIGNoZWNr
QXJndW1lbnRUeXBlcygpOwogCiAgICAgaWYgKERGR19FTkFCTEVfRURHRV9DT0RFX1ZFUklGSUNB
VElPTikKLSAgICAgICAgbV9qaXQubW92ZShJbW0zMigwKSwgR1BSSW5mbzo6cmVnVDApOworICAg
ICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW0zMigwKSwgR1BSSW5mbzo6cmVnVDApOwogCiAgICAg
QVNTRVJUKCFtX2NvbXBpbGVJbmRleCk7CiAgICAgZm9yIChtX2Jsb2NrID0gMDsgbV9ibG9jayA8
IG1faml0LmdyYXBoKCkubV9ibG9ja3Muc2l6ZSgpOyArK21fYmxvY2spCkBAIC0yMzE5LDggKzIz
MTksMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoU3ViKE5vZGUmIG5vZGUp
CiAgICAgICAgICAgICBpZiAobm9kZUNhblRydW5jYXRlSW50ZWdlcihub2RlLmFyaXRoTm9kZUZs
YWdzKCkpKSB7CiAgICAgICAgICAgICAgICAgbV9qaXQubW92ZShvcDEuZ3ByKCksIHJlc3VsdC5n
cHIoKSk7CiAgICAgICAgICAgICAgICAgbV9qaXQuc3ViMzIoSW1tMzIoaW1tMiksIHJlc3VsdC5n
cHIoKSk7Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNo
ZWNrKE92ZXJmbG93LCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFN1YjMyKE1h
Y3JvQXNzZW1ibGVyOjpPdmVyZmxvdywgb3AxLmdwcigpLCBJbW0zMihpbW0yKSwgcmVzdWx0Lmdw
cigpKSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIEdQUlRlbXBvcmFy
eSBzY3JhdGNoKHRoaXMpOworICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3ZlcmZs
b3csIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoU3ViMzIoTWFjcm9Bc3NlbWJs
ZXI6Ok92ZXJmbG93LCBvcDEuZ3ByKCksIEltbTMyKGltbTIpLCByZXN1bHQuZ3ByKCksIHNjcmF0
Y2guZ3ByKCkpKTsKKyAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaW50ZWdlclJlc3VsdChy
ZXN1bHQuZ3ByKCksIG1fY29tcGlsZUluZGV4KTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTI1
MzUsMTggKzI1MzcsMTggQEAgYm9vbCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVN0cmljdEVxRm9y
Q29uc3RhbnQoTm9kZSYgbm9kZSwgTm9kZVVzZSB2YWx1ZSwgSlNWYWwKICAgICBHUFJSZWcgcmVz
dWx0R1BSID0gcmVzdWx0LmdwcigpOwogICAgIG1faml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRy
dXN0ZWRJbW1QdHIoYml0d2lzZV9jYXN0PHZvaWQqPihWYWx1ZUZhbHNlKSksIHJlc3VsdEdQUik7
CiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgbm90RXF1YWwgPSBtX2ppdC5icmFuY2hQdHIoTWFj
cm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBvcDFHUFIsIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1t
UHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0YW50KSkpKTsKLSAg
ICBtX2ppdC5vcjMyKE1hY3JvQXNzZW1ibGVyOjpJbW0zMigxKSwgcmVzdWx0R1BSKTsKKyAgICBt
X2ppdC5vcjMyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoMSksIHJlc3VsdEdQUik7CiAg
ICAgbm90RXF1YWwubGluaygmbV9qaXQpOwogICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0R1BSLCBt
X2NvbXBpbGVJbmRleCwgRGF0YUZvcm1hdEpTQm9vbGVhbik7CiAjZWxzZQogICAgIEdQUlJlZyBv
cDFQYXlsb2FkR1BSID0gb3AxLnBheWxvYWRHUFIoKTsKICAgICBHUFJSZWcgb3AxVGFnR1BSID0g
b3AxLnRhZ0dQUigpOwogICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0gICAg
bV9qaXQubW92ZShJbW0zMigwKSwgcmVzdWx0R1BSKTsKKyAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJ
bW0zMigwKSwgcmVzdWx0R1BSKTsKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Qgbm90RXF1
YWw7CiAgICAgbm90RXF1YWwuYXBwZW5kKG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpO
b3RFcXVhbCwgb3AxVGFnR1BSLCBNYWNyb0Fzc2VtYmxlcjo6SW1tMzIoY29uc3RhbnQudGFnKCkp
KSk7CiAgICAgbm90RXF1YWwuYXBwZW5kKG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpO
b3RFcXVhbCwgb3AxUGF5bG9hZEdQUiwgTWFjcm9Bc3NlbWJsZXI6OkltbTMyKGNvbnN0YW50LnBh
eWxvYWQoKSkpKTsKLSAgICBtX2ppdC5tb3ZlKEltbTMyKDEpLCByZXN1bHRHUFIpOworICAgIG1f
aml0Lm1vdmUoVHJ1c3RlZEltbTMyKDEpLCByZXN1bHRHUFIpOwogICAgIG5vdEVxdWFsLmxpbmso
Jm1faml0KTsKICAgICBib29sZWFuUmVzdWx0KHJlc3VsdEdQUiwgbV9jb21waWxlSW5kZXgpOwog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgK
aW5kZXggODA0NGJhMmVmMDc1NGM3NjE4YjIxNWNiYTA2NzQyZTNkOGFlZGIxZC4uMmUzMmY4MWFl
ZDZlNjY0M2FlNzMzNzkxZTE4MDE2MzJlZDI1YTg3YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaApAQCAtMTEyMyw3ICsxMTIzLDcgQEAgcHJpdmF0
ZToKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0RGR09wZXJh
dGlvbl9FU1Mgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBpbnQgc3RhcnRDb25zdGFudCwgaW50
IG51bUNvbnN0YW50cykKICAgICB7Ci0gICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4
ZWNTdGF0ZShJbW0zMihzdGFydENvbnN0YW50KSwgSW1tMzIobnVtQ29uc3RhbnRzKSk7CisgICAg
ICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIoc3RhcnRD
b25zdGFudCksIFRydXN0ZWRJbW0zMihudW1Db25zdGFudHMpKTsKICAgICAgICAgcmV0dXJuIGFw
cGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwog
ICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfREZHT3BlcmF0aW9u
X0VQUCBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxLCB2b2lkKiBwb2ludGVy
KQpAQCAtMTE4NiwxMiArMTE4NiwxMiBAQCBwcml2YXRlOgogICAgICAgICBtX2ppdC5zZXR1cEFy
Z3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7CiAgICAgICAgIHJldHVybiBhcHBlbmRD
YWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9
Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0RGR09wZXJhdGlvbl9FSkog
b3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgTWFjcm9Bc3NlbWJsZXI6Oklt
bTMyIGltbSkKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfREZHT3BlcmF0
aW9uX0VKSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBNYWNyb0Fzc2Vt
Ymxlcjo6VHJ1c3RlZEltbTMyIGltbSkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBNYWNyb0Fzc2VtYmxlcjo6SW1tUHRyKHN0YXRpY19jYXN0
PGNvbnN0IHZvaWQqPihKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoaW1tLm1fdmFsdWUpKSkpKTsK
ICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3Bl
cmF0aW9uLCByZXN1bHQpOwogICAgIH0KLSAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0
aW9uKEpfREZHT3BlcmF0aW9uX0VKSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIE1hY3JvQXNz
ZW1ibGVyOjpJbW0zMiBpbW0sIEdQUlJlZyBhcmcyKQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNh
bGxPcGVyYXRpb24oSl9ERkdPcGVyYXRpb25fRUpKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwg
TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMiBpbW0sIEdQUlJlZyBhcmcyKQogICAgIHsKICAg
ICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKE1hY3JvQXNzZW1ibGVyOjpJ
bW1QdHIoc3RhdGljX2Nhc3Q8Y29uc3Qgdm9pZCo+KEpTVmFsdWU6OmVuY29kZShqc051bWJlcihp
bW0ubV92YWx1ZSkpKSksIGFyZzIpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNl
cHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CkBAIC0xMzY0LDEyICsxMzY0
LDEyIEBAIHByaXZhdGU6CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShhcmcxUGF5bG9hZCwgYXJnMVRhZywgYXJnMlBheWxvYWQsIGFyZzJUYWcpOwogICAgICAgICBy
ZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJl
c3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CiAgICAgfQotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNh
bGxPcGVyYXRpb24oSl9ERkdPcGVyYXRpb25fRUpKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRh
ZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIEdQUlJlZyBhcmcxVGFnLCBHUFJSZWcgYXJnMVBheWxv
YWQsIE1hY3JvQXNzZW1ibGVyOjpJbW0zMiBpbW0pCisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2Fs
bE9wZXJhdGlvbihKX0RGR09wZXJhdGlvbl9FSkogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFn
LCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgR1BSUmVnIGFyZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9h
ZCwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMiBpbW0pCiAgICAgewogICAgICAgICBtX2pp
dC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMVBheWxvYWQsIGFyZzFUYWcsIGltbSwg
VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRD
YWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwg
cmVzdWx0VGFnKTsKICAgICB9Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihK
X0RGR09wZXJhdGlvbl9FSkogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVz
dWx0UGF5bG9hZCwgTWFjcm9Bc3NlbWJsZXI6OkltbTMyIGltbSwgR1BSUmVnIGFyZzJUYWcsIEdQ
UlJlZyBhcmcyUGF5bG9hZCkKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpf
REZHT3BlcmF0aW9uX0VKSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1
bHRQYXlsb2FkLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyIGltbSwgR1BSUmVnIGFyZzJU
YWcsIEdQUlJlZyBhcmcyUGF5bG9hZCkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShpbW0sIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZyksIGFy
ZzJQYXlsb2FkLCBhcmcyVGFnKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0
aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMy
XzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82
NC5jcHAKaW5kZXggMjFmZWFlZWYwMmEyNzcyMmI3NTBlMjZmOThmZTAwNTAxM2Q0YjIxZi4uM2I1
NjRkNjc2OTM0ZjBjZDU3NDQwNTExN2VmYzkyZmJiOGI0ZDEyMiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCkBAIC05NTAs
NyArOTUwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSYgbm9kZSkKICAg
ICBtX2ppdC5zdG9yZVB0cihyZXN1bHRQYXlsb2FkR1BSLCBjYWxsRnJhbWVQYXlsb2FkU2xvdChS
ZWdpc3RlckZpbGU6OlNjb3BlQ2hhaW4pKTsKICAgICBtX2ppdC5zdG9yZTMyKE1hY3JvQXNzZW1i
bGVyOjpUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZyksIGNhbGxGcmFtZVRhZ1Nsb3QoUmVn
aXN0ZXJGaWxlOjpTY29wZUNoYWluKSk7CiAKLSAgICBtX2ppdC5hZGRQdHIoSW1tMzIobV9qaXQu
Y29kZUJsb2NrKCktPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzICogc2l6ZW9mKFJlZ2lzdGVyKSksIEdQ
UkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKKyAgICBtX2ppdC5hZGRQdHIoVHJ1c3RlZEltbTMy
KG1faml0LmNvZGVCbG9jaygpLT5tX251bUNhbGxlZVJlZ2lzdGVycyAqIHNpemVvZihSZWdpc3Rl
cikpLCBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7CiAKICAgICBDb2RlT3JpZ2luIGNvZGVP
cmlnaW4gPSBhdChtX2NvbXBpbGVJbmRleCkuY29kZU9yaWdpbjsKICAgICBDYWxsQmVnaW5Ub2tl
biB0b2tlbiA9IG1faml0LmJlZ2luSlNDYWxsKCk7CkBAIC05NjEsMTIgKzk2MSwxMiBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlJiBub2RlKQogCiAgICAgc2xvd1BhdGgubGlu
aygmbV9qaXQpOwogCi0gICAgbV9qaXQuYWRkUHRyKEltbTMyKG1faml0LmNvZGVCbG9jaygpLT5t
X251bUNhbGxlZVJlZ2lzdGVycyAqIHNpemVvZihSZWdpc3RlcikpLCBHUFJJbmZvOjpjYWxsRnJh
bWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBtX2ppdC5hZGRQdHIoVHJ1
c3RlZEltbTMyKG1faml0LmNvZGVCbG9jaygpLT5tX251bUNhbGxlZVJlZ2lzdGVycyAqIHNpemVv
ZihSZWdpc3RlcikpLCBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1l
bnRHUFIwKTsKICAgICBtX2ppdC5wb2tlKEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CiAgICAgdG9r
ZW4gPSBtX2ppdC5iZWdpbkNhbGwoKTsKICAgICBKSVRDb21waWxlcjo6Q2FsbCBzbG93Q2FsbCA9
IG1faml0LmFwcGVuZENhbGwoc2xvd0NhbGxGdW5jdGlvbik7CiAgICAgbV9qaXQuYWRkRmFzdEV4
Y2VwdGlvbkNoZWNrKHNsb3dDYWxsLCBjb2RlT3JpZ2luLCB0b2tlbik7Ci0gICAgbV9qaXQuYWRk
UHRyKEltbTMyKG1faml0LmNvZGVCbG9jaygpLT5tX251bUNhbGxlZVJlZ2lzdGVycyAqIHNpemVv
ZihSZWdpc3RlcikpLCBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7CisgICAgbV9qaXQuYWRk
UHRyKFRydXN0ZWRJbW0zMihtX2ppdC5jb2RlQmxvY2soKS0+bV9udW1DYWxsZWVSZWdpc3RlcnMg
KiBzaXplb2YoUmVnaXN0ZXIpKSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOwogICAgIHRv
a2VuID0gbV9qaXQuYmVnaW5KU0NhbGwoKTsKICAgICBKSVRDb21waWxlcjo6Q2FsbCB0aGVDYWxs
ID0gbV9qaXQuY2FsbChHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CiAgICAgbV9qaXQubm90aWZ5
Q2FsbCh0aGVDYWxsLCBjb2RlT3JpZ2luLCB0b2tlbik7CkBAIC0xMzkwLDEwICsxMzkwLDEwIEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RFcXVhbGl0eShOb2RlJiBub2RlLCBj
b25zdCBDbGFzc0luZm8qIGNsYXNzSW5mCiAgICAgR1BSUmVnIHJlc3VsdFBheWxvYWRHUFIgPSBy
ZXN1bHRQYXlsb2FkLmdwcigpOwogICAgIAogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGZhbHNl
Q2FzZSA9IG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIG9wMUdQUiwg
b3AyR1BSKTsKLSAgICBtX2ppdC5tb3ZlKEltbTMyKDEpLCByZXN1bHRQYXlsb2FkR1BSKTsKKyAg
ICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW0zMigxKSwgcmVzdWx0UGF5bG9hZEdQUik7CiAgICAgTWFj
cm9Bc3NlbWJsZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsKICAgICBmYWxzZUNhc2UubGlu
aygmbV9qaXQpOwotICAgIG1faml0Lm1vdmUoSW1tMzIoMCksIHJlc3VsdFBheWxvYWRHUFIpOwor
ICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTMyKDApLCByZXN1bHRQYXlsb2FkR1BSKTsKICAgICBk
b25lLmxpbmsoJm1faml0KTsKIAogICAgIGJvb2xlYW5SZXN1bHQocmVzdWx0UGF5bG9hZEdQUiwg
bV9jb21waWxlSW5kZXgpOwpAQCAtMTQxNyw5ICsxNDE3LDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZURvdWJsZUNvbXBhcmUoTm9kZSYgbm9kZSwgTWFjcm9Bc3NlbWJsZXI6OkRvdWJs
ZUNvbmQKICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIG9wMih0aGlzLCBub2RlLmNoaWxkMigp
KTsKICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0UGF5bG9hZCh0aGlzKTsKICAgICAKLSAgICBtX2pp
dC5tb3ZlKEltbTMyKDEpLCByZXN1bHRQYXlsb2FkLmdwcigpKTsKKyAgICBtX2ppdC5tb3ZlKFRy
dXN0ZWRJbW0zMigxKSwgcmVzdWx0UGF5bG9hZC5ncHIoKSk7CiAgICAgTWFjcm9Bc3NlbWJsZXI6
Okp1bXAgdHJ1ZUNhc2UgPSBtX2ppdC5icmFuY2hEb3VibGUoY29uZGl0aW9uLCBvcDEuZnByKCks
IG9wMi5mcHIoKSk7Ci0gICAgbV9qaXQubW92ZShJbW0zMigwKSwgcmVzdWx0UGF5bG9hZC5ncHIo
KSk7CisgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tMzIoMCksIHJlc3VsdFBheWxvYWQuZ3ByKCkp
OwogICAgIHRydWVDYXNlLmxpbmsoJm1faml0KTsKICAgICAKICAgICBib29sZWFuUmVzdWx0KHJl
c3VsdFBheWxvYWQuZ3ByKCksIG1fY29tcGlsZUluZGV4KTsKQEAgLTI1NDMsOSArMjU0Myw5IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgbV9qaXQu
c3RvcmUzMih2YWx1ZVRhZ0dQUiwgTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChzdG9yYWdlR1BS
LCBzdG9yYWdlTGVuZ3RoR1BSLCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNFaWdodCwgT0JKRUNUX09G
RlNFVE9GKEFycmF5U3RvcmFnZSwgbV92ZWN0b3JbMF0pICsgT0JKRUNUX09GRlNFVE9GKEpTVmFs
dWUsIHUuYXNCaXRzLnRhZykpKTsKICAgICAgICAgbV9qaXQuc3RvcmUzMih2YWx1ZVBheWxvYWRH
UFIsIE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoc3RvcmFnZUdQUiwgc3RvcmFnZUxlbmd0aEdQ
UiwgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzRWlnaHQsIE9CSkVDVF9PRkZTRVRPRihBcnJheVN0b3Jh
Z2UsIG1fdmVjdG9yWzBdKSArIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy5wYXls
b2FkKSkpOwogICAgICAgICAKLSAgICAgICAgbV9qaXQuYWRkMzIoSW1tMzIoMSksIHN0b3JhZ2VM
ZW5ndGhHUFIpOworICAgICAgICBtX2ppdC5hZGQzMihUcnVzdGVkSW1tMzIoMSksIHN0b3JhZ2VM
ZW5ndGhHUFIpOwogICAgICAgICBtX2ppdC5zdG9yZTMyKHN0b3JhZ2VMZW5ndGhHUFIsIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VHUFIsIE9CSkVDVF9PRkZTRVRPRihBcnJheVN0b3Jh
Z2UsIG1fbGVuZ3RoKSkpOwotICAgICAgICBtX2ppdC5hZGQzMihJbW0zMigxKSwgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3Moc3RvcmFnZUdQUiwgT0JKRUNUX09GRlNFVE9GKEFycmF5U3RvcmFnZSwg
bV9udW1WYWx1ZXNJblZlY3RvcikpKTsKKyAgICAgICAgbV9qaXQuYWRkMzIoVHJ1c3RlZEltbTMy
KDEpLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlR1BSLCBPQkpFQ1RfT0ZGU0VUT0Yo
QXJyYXlTdG9yYWdlLCBtX251bVZhbHVlc0luVmVjdG9yKSkpOwogICAgICAgICBtX2ppdC5tb3Zl
KEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSwgc3RvcmFnZUdQUik7CiAgICAgICAgIAogICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBkb25lID0gbV9qaXQuanVtcCgpOwpAQCAtMjU4Myw3ICsy
NTgzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAg
ICAKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgZW1wdHlBcnJheUNhc2UgPSBtX2ppdC5i
cmFuY2hUZXN0MzIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIHN0b3JhZ2VMZW5ndGhHUFIpOwogICAg
ICAgICAKLSAgICAgICAgbV9qaXQuc3ViMzIoSW1tMzIoMSksIHN0b3JhZ2VMZW5ndGhHUFIpOwor
ICAgICAgICBtX2ppdC5zdWIzMihUcnVzdGVkSW1tMzIoMSksIHN0b3JhZ2VMZW5ndGhHUFIpOwog
ICAgICAgICAKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgc2xvd0Nhc2UgPSBtX2ppdC5i
cmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBzdG9yYWdlTGVuZ3RoR1BSLCBN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5Ojp2ZWN0b3JMZW5ndGhPZmZz
ZXQoKSkpOwogICAgICAgICAKQEAgLTI1OTIsMTEgKzI1OTIsMTEgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICAKICAgICAgICAgbV9qaXQuc3RvcmUz
MihzdG9yYWdlTGVuZ3RoR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlR1BSLCBP
QkpFQ1RfT0ZGU0VUT0YoQXJyYXlTdG9yYWdlLCBtX2xlbmd0aCkpKTsKIAotICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6SnVtcCBob2xlQ2FzZSA9IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVy
OjpFcXVhbCwgSW1tMzIoSlNWYWx1ZTo6RW1wdHlWYWx1ZVRhZyksIHZhbHVlVGFnR1BSKTsKKyAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgaG9sZUNhc2UgPSBtX2ppdC5icmFuY2gzMihNYWNy
b0Fzc2VtYmxlcjo6RXF1YWwsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpFbXB0eVZhbHVlVGFnKSwg
dmFsdWVUYWdHUFIpOwogICAgICAgICAKICAgICAgICAgbV9qaXQuc3RvcmUzMihUcnVzdGVkSW1t
MzIoSlNWYWx1ZTo6RW1wdHlWYWx1ZVRhZyksIE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoc3Rv
cmFnZUdQUiwgc3RvcmFnZUxlbmd0aEdQUiwgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzRWlnaHQsIE9C
SkVDVF9PRkZTRVRPRihBcnJheVN0b3JhZ2UsIG1fdmVjdG9yWzBdKSArIE9CSkVDVF9PRkZTRVRP
RihKU1ZhbHVlLCB1LmFzQml0cy50YWcpKSk7CiAKLSAgICAgICAgbV9qaXQuc3ViMzIoTWFjcm9B
c3NlbWJsZXI6OkltbTMyKDEpLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlR1BSLCBP
QkpFQ1RfT0ZGU0VUT0YoQXJyYXlTdG9yYWdlLCBtX251bVZhbHVlc0luVmVjdG9yKSkpOworICAg
ICAgICBtX2ppdC5zdWIzMihUcnVzdGVkSW1tMzIoMSksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KHN0b3JhZ2VHUFIsIE9CSkVDVF9PRkZTRVRPRihBcnJheVN0b3JhZ2UsIG1fbnVtVmFsdWVzSW5W
ZWN0b3IpKSk7CiAgICAgICAgIAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgZG9u
ZTsKICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDY0LmNwcAppbmRleCBlZmVlMmZiNzhhMzczNDI1ZmVlZDhlYzAxOTQzMWM2NzIwMjll
MzM1Li4yYjAzOTdkNzQxNzY3NjQxMmYzYzkxYWFkMzRmYTA2MTFlYThlNjUxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTk3
NCw3ICs5NzQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlJiBub2RlKQog
ICAgIAogICAgIHNsb3dQYXRoLmxpbmsoJm1faml0KTsKICAgICAKLSAgICBtX2ppdC5hZGRQdHIo
SW1tMzIobV9qaXQuY29kZUJsb2NrKCktPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzICogc2l6ZW9mKFJl
Z2lzdGVyKSksIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApOworICAgIG1faml0LmFkZFB0cihUcnVzdGVkSW1tMzIobV9qaXQuY29kZUJsb2NrKCktPm1f
bnVtQ2FsbGVlUmVnaXN0ZXJzICogc2l6ZW9mKFJlZ2lzdGVyKSksIEdQUkluZm86OmNhbGxGcmFt
ZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwogICAgIHRva2VuID0gbV9qaXQuYmVn
aW5DYWxsKCk7CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgc2xvd0NhbGwgPSBtX2ppdC5hcHBlbmRD
YWxsKHNsb3dDYWxsRnVuY3Rpb24pOwogICAgIG1faml0LmFkZEZhc3RFeGNlcHRpb25DaGVjayhz
bG93Q2FsbCwgY29kZU9yaWdpbiwgdG9rZW4pOwpAQCAtMTUwNiw3ICsxNTA2LDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURvdWJsZUNvbXBhcmUoTm9kZSYgbm9kZSwgTWFjcm9Bc3Nl
bWJsZXI6OkRvdWJsZUNvbmQKICAgICAKICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW0zMihWYWx1
ZVRydWUpLCByZXN1bHQuZ3ByKCkpOwogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHRydWVDYXNl
ID0gbV9qaXQuYnJhbmNoRG91YmxlKGNvbmRpdGlvbiwgb3AxLmZwcigpLCBvcDIuZnByKCkpOwot
ICAgIG1faml0LnhvclB0cihJbW0zMih0cnVlKSwgcmVzdWx0LmdwcigpKTsKKyAgICBtX2ppdC54
b3JQdHIoVHJ1c3RlZEltbTMyKHRydWUpLCByZXN1bHQuZ3ByKCkpOwogICAgIHRydWVDYXNlLmxp
bmsoJm1faml0KTsKICAgICAKICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdC5ncHIoKSwgbV9jb21w
aWxlSW5kZXgsIERhdGFGb3JtYXRKU0Jvb2xlYW4pOwpAQCAtMjU4NSw5ICsyNTg1LDkgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICAKICAgICAgICAg
bV9qaXQuc3RvcmVQdHIodmFsdWVHUFIsIE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoc3RvcmFn
ZUdQUiwgc3RvcmFnZUxlbmd0aEdQUiwgTWFjcm9Bc3NlbWJsZXI6OlNjYWxlUHRyLCBPQkpFQ1Rf
T0ZGU0VUT0YoQXJyYXlTdG9yYWdlLCBtX3ZlY3RvclswXSkpKTsKICAgICAgICAgCi0gICAgICAg
IG1faml0LmFkZDMyKEltbTMyKDEpLCBzdG9yYWdlTGVuZ3RoR1BSKTsKKyAgICAgICAgbV9qaXQu
YWRkMzIoVHJ1c3RlZEltbTMyKDEpLCBzdG9yYWdlTGVuZ3RoR1BSKTsKICAgICAgICAgbV9qaXQu
c3RvcmUzMihzdG9yYWdlTGVuZ3RoR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdl
R1BSLCBPQkpFQ1RfT0ZGU0VUT0YoQXJyYXlTdG9yYWdlLCBtX2xlbmd0aCkpKTsKLSAgICAgICAg
bV9qaXQuYWRkMzIoSW1tMzIoMSksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VHUFIs
IE9CSkVDVF9PRkZTRVRPRihBcnJheVN0b3JhZ2UsIG1fbnVtVmFsdWVzSW5WZWN0b3IpKSk7Cisg
ICAgICAgIG1faml0LmFkZDMyKFRydXN0ZWRJbW0zMigxKSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3Moc3RvcmFnZUdQUiwgT0JKRUNUX09GRlNFVE9GKEFycmF5U3RvcmFnZSwgbV9udW1WYWx1ZXNJ
blZlY3RvcikpKTsKICAgICAgICAgbV9qaXQub3JQdHIoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJl
Z2lzdGVyLCBzdG9yYWdlTGVuZ3RoR1BSKTsKICAgICAgICAgCiAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpKdW1wIGRvbmUgPSBtX2ppdC5qdW1wKCk7CkBAIC0yNjIzLDcgKzI2MjMsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIAogICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6SnVtcCBlbXB0eUFycmF5Q2FzZSA9IG1faml0LmJyYW5jaFRlc3QzMihN
YWNyb0Fzc2VtYmxlcjo6WmVybywgc3RvcmFnZUxlbmd0aEdQUik7CiAgICAgICAgIAotICAgICAg
ICBtX2ppdC5zdWIzMihJbW0zMigxKSwgc3RvcmFnZUxlbmd0aEdQUik7CisgICAgICAgIG1faml0
LnN1YjMyKFRydXN0ZWRJbW0zMigxKSwgc3RvcmFnZUxlbmd0aEdQUik7CiAgICAgICAgIAogICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBzbG93Q2FzZSA9IG1faml0LmJyYW5jaDMyKE1hY3Jv
QXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIHN0b3JhZ2VMZW5ndGhHUFIsIE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXk6OnZlY3Rvckxlbmd0aE9mZnNldCgpKSk7CiAgICAg
ICAgIApAQCAtMjYzNCw3ICsyNjM0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShO
b2RlJiBub2RlKQogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBob2xlQ2FzZSA9IG1faml0
LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIHZhbHVlR1BSKTsKICAgICAgICAg
CiAgICAgICAgIG1faml0LnN0b3JlUHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKDAp
LCBNYWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KHN0b3JhZ2VHUFIsIHN0b3JhZ2VMZW5ndGhHUFIs
IE1hY3JvQXNzZW1ibGVyOjpTY2FsZVB0ciwgT0JKRUNUX09GRlNFVE9GKEFycmF5U3RvcmFnZSwg
bV92ZWN0b3JbMF0pKSk7Ci0gICAgICAgIG1faml0LnN1YjMyKE1hY3JvQXNzZW1ibGVyOjpJbW0z
MigxKSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZUdQUiwgT0JKRUNUX09GRlNFVE9G
KEFycmF5U3RvcmFnZSwgbV9udW1WYWx1ZXNJblZlY3RvcikpKTsKKyAgICAgICAgbV9qaXQuc3Vi
MzIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMigxKSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3Moc3RvcmFnZUdQUiwgT0JKRUNUX09GRlNFVE9GKEFycmF5U3RvcmFnZSwgbV9udW1WYWx1ZXNJ
blZlY3RvcikpKTsKICAgICAgICAgCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBk
b25lOwogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRleCA4NGZhYzEyNGE1
M2FjY2QxOGRmOTEyYTBhMmQ1MDFkMDU4YjQ1YTJmLi45ODAxNzlhNmQ2Yzg3N2I3NDM0YmMzN2Jl
ZGViMTcyYTRhMGU1YzU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC01MDEsNyAr
NTAxLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKCkKICAgICAgICAgCiAj
aWYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQogICAgICAgICBpZiAobV9jYW5CZU9wdGltaXplZCkK
LSAgICAgICAgICAgIGFkZDMyKEltbTMyKDEpLCBBYnNvbHV0ZUFkZHJlc3MoJnJhcmVDYXNlUHJv
ZmlsZS0+bV9jb3VudGVyKSk7CisgICAgICAgICAgICBhZGQzMihUcnVzdGVkSW1tMzIoMSksIEFi
c29sdXRlQWRkcmVzcygmcmFyZUNhc2VQcm9maWxlLT5tX2NvdW50ZXIpKTsKICNlbmRpZgogCiAg
ICAgICAgIGVtaXRKdW1wU2xvd1RvSG90KGp1bXAoKSwgMCk7CkBAIC01NzMsNyArNTczLDcgQEAg
SklUQ29kZSBKSVQ6OnByaXZhdGVDb21waWxlKENvZGVQdHIqIGZ1bmN0aW9uRW50cnlBcml0eUNo
ZWNrLCBKSVRDb21waWxhdGlvbkVmZm8KICAgICAgICAgfQogI2VuZGlmCiAKLSAgICAgICAgYWRk
UHRyKEltbTMyKG1fY29kZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lzdGVycyAqIHNpemVvZihSZWdp
c3RlcikpLCBjYWxsRnJhbWVSZWdpc3RlciwgcmVnVDEpOworICAgICAgICBhZGRQdHIoVHJ1c3Rl
ZEltbTMyKG1fY29kZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lzdGVycyAqIHNpemVvZihSZWdpc3Rl
cikpLCBjYWxsRnJhbWVSZWdpc3RlciwgcmVnVDEpOwogICAgICAgICByZWdpc3RlckZpbGVDaGVj
ayA9IGJyYW5jaFB0cihCZWxvdywgQWJzb2x1dGVBZGRyZXNzKG1fZ2xvYmFsRGF0YS0+aW50ZXJw
cmV0ZXItPnJlZ2lzdGVyRmlsZSgpLmFkZHJlc3NPZkVuZCgpKSwgcmVnVDEpOwogICAgIH0KIApA
QCAtNTgxLDcgKzU4MSw3IEBAIEpJVENvZGUgSklUOjpwcml2YXRlQ29tcGlsZShDb2RlUHRyKiBm
dW5jdGlvbkVudHJ5QXJpdHlDaGVjaywgSklUQ29tcGlsYXRpb25FZmZvCiAgICAgCiAjaWYgRU5B
QkxFKFZBTFVFX1BST0ZJTEVSKQogICAgIGlmIChtX2NhbkJlT3B0aW1pemVkKQotICAgICAgICBh
ZGQzMihJbW0zMigxKSwgQWJzb2x1dGVBZGRyZXNzKCZtX2NvZGVCbG9jay0+bV9leGVjdXRpb25F
bnRyeUNvdW50KSk7CisgICAgICAgIGFkZDMyKFRydXN0ZWRJbW0zMigxKSwgQWJzb2x1dGVBZGRy
ZXNzKCZtX2NvZGVCbG9jay0+bV9leGVjdXRpb25FbnRyeUNvdW50KSk7CiAjZW5kaWYKIAogICAg
IHByaXZhdGVDb21waWxlTWFpblBhc3MoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VEFyaXRobWV0aWMuY3BwCmluZGV4IDdmMTUzNGRjZDMyNDg5ZDJlMjVkZDM3ZGJhY2Q0OWE0MWE0
NTI0MWIuLjFiMzJlM2JjZjc0NTIyYTZmMzcwZTBlOTQ5OTRkMDkwYTg2MGQ3YmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcApAQCAtODMzLDEzICs4MzMs
MTMgQEAgdm9pZCBKSVQ6OmNvbXBpbGVCaW5hcnlBcml0aE9wKE9wY29kZUlEIG9wY29kZUlELCB1
bnNpZ25lZCwgdW5zaWduZWQgb3AxLCB1bnNpZ24KICAgICAgICAgICAgIGFkZFNsb3dDYXNlKGJy
YW5jaE11bDMyKE92ZXJmbG93LCByZWdUMSwgcmVnVDIpKTsKICAgICAgICAgICAgIEp1bXBMaXN0
IGRvbmU7CiAgICAgICAgICAgICBkb25lLmFwcGVuZChicmFuY2hUZXN0MzIoTm9uWmVybywgcmVn
VDIpKTsKLSAgICAgICAgICAgIEp1bXAgbmVnYXRpdmVaZXJvID0gYnJhbmNoMzIoTGVzc1RoYW4s
IHJlZ1QwLCBJbW0zMigwKSk7Ci0gICAgICAgICAgICBkb25lLmFwcGVuZChicmFuY2gzMihHcmVh
dGVyVGhhbk9yRXF1YWwsIHJlZ1QxLCBJbW0zMigwKSkpOworICAgICAgICAgICAgSnVtcCBuZWdh
dGl2ZVplcm8gPSBicmFuY2gzMihMZXNzVGhhbiwgcmVnVDAsIFRydXN0ZWRJbW0zMigwKSk7Cisg
ICAgICAgICAgICBkb25lLmFwcGVuZChicmFuY2gzMihHcmVhdGVyVGhhbk9yRXF1YWwsIHJlZ1Qx
LCBUcnVzdGVkSW1tMzIoMCkpKTsKICAgICAgICAgICAgIG5lZ2F0aXZlWmVyby5saW5rKHRoaXMp
OwogICAgICAgICAgICAgLy8gV2Ugb25seSBnZXQgaGVyZSBpZiB3ZSBoYXZlIGEgZ2VudWluZSBu
ZWdhdGl2ZSB6ZXJvLiBSZWNvcmQgdGhpcywKICAgICAgICAgICAgIC8vIHNvIHRoYXQgdGhlIHNw
ZWN1bGF0aXZlIEpJVCBrbm93cyB0aGF0IHdlIGZhaWxlZCBzcGVjdWxhdGlvbgogICAgICAgICAg
ICAgLy8gYmVjYXVzZSBvZiBhIG5lZ2F0aXZlIHplcm8uCi0gICAgICAgICAgICBhZGQzMihJbW0z
MigxKSwgQWJzb2x1dGVBZGRyZXNzKCZwcm9maWxlLT5tX2NvdW50ZXIpKTsKKyAgICAgICAgICAg
IGFkZDMyKFRydXN0ZWRJbW0zMigxKSwgQWJzb2x1dGVBZGRyZXNzKCZwcm9maWxlLT5tX2NvdW50
ZXIpKTsKICAgICAgICAgICAgIGFkZFNsb3dDYXNlKGp1bXAoKSk7CiAgICAgICAgICAgICBkb25l
LmxpbmsodGhpcyk7CiAgICAgICAgICAgICBtb3ZlKHJlZ1QyLCByZWdUMCk7CkBAIC05NjMsMTMg
Kzk2MywxMyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9hZGQoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKICAgICBpZiAoaXNPcGVyYW5kQ29uc3RhbnRJbW1lZGlhdGVJbnQob3AxKSkgewog
ICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKG9wMiwgcmVnVDApOwogICAgICAgICBlbWl0
SnVtcFNsb3dDYXNlSWZOb3RJbW1lZGlhdGVJbnRlZ2VyKHJlZ1QwKTsKLSAgICAgICAgYWRkU2xv
d0Nhc2UoYnJhbmNoQWRkMzIoT3ZlcmZsb3csIEltbTMyKGdldENvbnN0YW50T3BlcmFuZEltbWVk
aWF0ZUludChvcDEpKSwgcmVnVDApKTsKLSAgICAgICAgZW1pdEZhc3RBcml0aEludFRvSW1tTm9D
aGVjayhyZWdUMCwgcmVnVDApOworICAgICAgICBhZGRTbG93Q2FzZShicmFuY2hBZGQzMihPdmVy
ZmxvdywgcmVnVDAsIEltbTMyKGdldENvbnN0YW50T3BlcmFuZEltbWVkaWF0ZUludChvcDEpKSwg
cmVnVDEpKTsKKyAgICAgICAgZW1pdEZhc3RBcml0aEludFRvSW1tTm9DaGVjayhyZWdUMSwgcmVn
VDApOwogICAgIH0gZWxzZSBpZiAoaXNPcGVyYW5kQ29uc3RhbnRJbW1lZGlhdGVJbnQob3AyKSkg
ewogICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKG9wMSwgcmVnVDApOwogICAgICAgICBl
bWl0SnVtcFNsb3dDYXNlSWZOb3RJbW1lZGlhdGVJbnRlZ2VyKHJlZ1QwKTsKLSAgICAgICAgYWRk
U2xvd0Nhc2UoYnJhbmNoQWRkMzIoT3ZlcmZsb3csIEltbTMyKGdldENvbnN0YW50T3BlcmFuZElt
bWVkaWF0ZUludChvcDIpKSwgcmVnVDApKTsKLSAgICAgICAgZW1pdEZhc3RBcml0aEludFRvSW1t
Tm9DaGVjayhyZWdUMCwgcmVnVDApOworICAgICAgICBhZGRTbG93Q2FzZShicmFuY2hBZGQzMihP
dmVyZmxvdywgcmVnVDAsIEltbTMyKGdldENvbnN0YW50T3BlcmFuZEltbWVkaWF0ZUludChvcDIp
KSwgcmVnVDEpKTsKKyAgICAgICAgZW1pdEZhc3RBcml0aEludFRvSW1tTm9DaGVjayhyZWdUMSwg
cmVnVDApOwogICAgIH0gZWxzZQogICAgICAgICBjb21waWxlQmluYXJ5QXJpdGhPcChvcF9hZGQs
IHJlc3VsdCwgb3AxLCBvcDIsIHR5cGVzKTsKIApAQCAtMTAwOSw4ICsxMDA5LDggQEAgdm9pZCBK
SVQ6OmVtaXRfb3BfbXVsKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAjZW5kaWYK
ICAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihvcDIsIHJlZ1QwKTsKICAgICAgICAgZW1p
dEp1bXBTbG93Q2FzZUlmTm90SW1tZWRpYXRlSW50ZWdlcihyZWdUMCk7Ci0gICAgICAgIGFkZFNs
b3dDYXNlKGJyYW5jaE11bDMyKE92ZXJmbG93LCBJbW0zMih2YWx1ZSksIHJlZ1QwLCByZWdUMCkp
OwotICAgICAgICBlbWl0RmFzdEFyaXRoUmVUYWdJbW1lZGlhdGUocmVnVDAsIHJlZ1QwKTsKKyAg
ICAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoTXVsMzIoT3ZlcmZsb3csIEltbTMyKHZhbHVlKSwgcmVn
VDAsIHJlZ1QxKSk7CisgICAgICAgIGVtaXRGYXN0QXJpdGhSZVRhZ0ltbWVkaWF0ZShyZWdUMSwg
cmVnVDApOwogICAgIH0gZWxzZSBpZiAoaXNPcGVyYW5kQ29uc3RhbnRJbW1lZGlhdGVJbnQob3Ay
KSAmJiAoKHZhbHVlID0gZ2V0Q29uc3RhbnRPcGVyYW5kSW1tZWRpYXRlSW50KG9wMikpID4gMCkp
IHsKICNpZiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCiAgICAgICAgIC8vIEFkZCBhIHNwZWNpYWwg
ZmFzdCBjYXNlIHByb2ZpbGUgYmVjYXVzZSB0aGUgREZHIEpJVCB3aWxsIGV4cGVjdCBvbmUuCkBA
IC0xMDE4LDggKzEwMTgsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9tdWwoSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKICNlbmRpZgogICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVy
KG9wMSwgcmVnVDApOwogICAgICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RJbW1lZGlhdGVJbnRl
Z2VyKHJlZ1QwKTsKLSAgICAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoTXVsMzIoT3ZlcmZsb3csIElt
bTMyKHZhbHVlKSwgcmVnVDAsIHJlZ1QwKSk7Ci0gICAgICAgIGVtaXRGYXN0QXJpdGhSZVRhZ0lt
bWVkaWF0ZShyZWdUMCwgcmVnVDApOworICAgICAgICBhZGRTbG93Q2FzZShicmFuY2hNdWwzMihP
dmVyZmxvdywgSW1tMzIodmFsdWUpLCByZWdUMCwgcmVnVDEpKTsKKyAgICAgICAgZW1pdEZhc3RB
cml0aFJlVGFnSW1tZWRpYXRlKHJlZ1QxLCByZWdUMCk7CiAgICAgfSBlbHNlCiAgICAgICAgIGNv
bXBpbGVCaW5hcnlBcml0aE9wKG9wX211bCwgcmVzdWx0LCBvcDEsIG9wMiwgdHlwZXMpOwogCkBA
IC0xMTA1LDcgKzExMDUsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9kaXYoSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0RmFzdEFyaXRoUmVUYWdJbW1lZGlhdGUocmVnVDAs
IHJlZ1QwKTsKICAgICBKdW1wIGlzSW50ZWdlciA9IGp1bXAoKTsKICAgICBub3RJbnRlZ2VyLmxp
bmsodGhpcyk7Ci0gICAgYWRkMzIoSW1tMzIoMSksIEFic29sdXRlQWRkcmVzcygmbV9jb2RlQmxv
Y2stPmFkZFNwZWNpYWxGYXN0Q2FzZVByb2ZpbGUobV9ieXRlY29kZU9mZnNldCktPm1fY291bnRl
cikpOworICAgIGFkZDMyKFRydXN0ZWRJbW0zMigxKSwgQWJzb2x1dGVBZGRyZXNzKCZtX2NvZGVC
bG9jay0+YWRkU3BlY2lhbEZhc3RDYXNlUHJvZmlsZShtX2J5dGVjb2RlT2Zmc2V0KS0+bV9jb3Vu
dGVyKSk7CiAgICAgbW92ZURvdWJsZVRvUHRyKGZwUmVnVDAsIHJlZ1QwKTsKICAgICBzdWJQdHIo
dGFnVHlwZU51bWJlclJlZ2lzdGVyLCByZWdUMCk7CiAgICAgaXNJbnRlZ2VyLmxpbmsodGhpcyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMzMl82
NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMzMl82NC5jcHAK
aW5kZXggMjQ0YTE2ZjY5MWQ1N2NlMTQyZTdhYWRiMDkxNDBmOWY5NDZhNzk1OS4uZWNlZWUxZWI5
NTQ5YTZjMzJiY2RiMGEzNGEwOTg1ZGJlMzgzZDk3MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYzMyXzY0LmNwcApAQCAtNjE5LDkgKzYxOSw5IEBAIHZv
aWQgSklUOjplbWl0X29wX2FkZChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogdm9p
ZCBKSVQ6OmVtaXRBZGQzMkNvbnN0YW50KHVuc2lnbmVkIGRzdCwgdW5zaWduZWQgb3AsIGludDMy
X3QgY29uc3RhbnQsIFJlc3VsdFR5cGUgb3BUeXBlKQogewogICAgIC8vIEludDMyIGNhc2UuCi0g
ICAgZW1pdExvYWQob3AsIHJlZ1QxLCByZWdUMCk7CisgICAgZW1pdExvYWQob3AsIHJlZ1QxLCBy
ZWdUMik7CiAgICAgSnVtcCBub3RJbnQzMiA9IGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMSwgVHJ1
c3RlZEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSk7Ci0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoQWRk
MzIoT3ZlcmZsb3csIEltbTMyKGNvbnN0YW50KSwgcmVnVDApKTsKKyAgICBhZGRTbG93Q2FzZShi
cmFuY2hBZGQzMihPdmVyZmxvdywgcmVnVDIsIEltbTMyKGNvbnN0YW50KSwgcmVnVDApKTsKICAg
ICBlbWl0U3RvcmVJbnQzMihkc3QsIHJlZ1QwLCAob3AgPT0gZHN0KSk7CiAKICAgICAvLyBEb3Vi
bGUgY2FzZS4KQEAgLTczMiw4ICs3MzIsOCBAQCB2b2lkIEpJVDo6ZW1pdFN1YjMyQ29uc3RhbnQo
dW5zaWduZWQgZHN0LCB1bnNpZ25lZCBvcCwgaW50MzJfdCBjb25zdGFudCwgUmVzdWx0VAogICAg
IC8vIEludDMyIGNhc2UuCiAgICAgZW1pdExvYWQob3AsIHJlZ1QxLCByZWdUMCk7CiAgICAgSnVt
cCBub3RJbnQzMiA9IGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKEpTVmFs
dWU6OkludDMyVGFnKSk7Ci0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoU3ViMzIoT3ZlcmZsb3csIElt
bTMyKGNvbnN0YW50KSwgcmVnVDApKTsKLSAgICBlbWl0U3RvcmVJbnQzMihkc3QsIHJlZ1QwLCAo
b3AgPT0gZHN0KSk7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoU3ViMzIoT3ZlcmZsb3csIHJlZ1Qw
LCBJbW0zMihjb25zdGFudCksIHJlZ1QyLCByZWdUMykpOworICAgIGVtaXRTdG9yZUludDMyKGRz
dCwgcmVnVDIsIChvcCA9PSBkc3QpKTsKIAogICAgIC8vIERvdWJsZSBjYXNlLgogICAgIGlmICgh
c3VwcG9ydHNGbG9hdGluZ1BvaW50KCkpIHsKQEAgLTg2MSw3ICs4NjEsNyBAQCB2b2lkIEpJVDo6
ZW1pdEJpbmFyeURvdWJsZU9wKE9wY29kZUlEIG9wY29kZUlELCB1bnNpZ25lZCBkc3QsIHVuc2ln
bmVkIG9wMSwgdW5zaQogICAgICAgICAgICAgICAgIGVtaXRTdG9yZUludDMyKGRzdCwgcmVnVDIp
OwogICAgICAgICAgICAgICAgIEp1bXAgaXNJbnRlZ2VyID0ganVtcCgpOwogICAgICAgICAgICAg
ICAgIG5vdEludGVnZXIubGluayh0aGlzKTsKLSAgICAgICAgICAgICAgICBhZGQzMihJbW0zMigx
KSwgQWJzb2x1dGVBZGRyZXNzKCZtX2NvZGVCbG9jay0+c3BlY2lhbEZhc3RDYXNlUHJvZmlsZUZv
ckJ5dGVjb2RlT2Zmc2V0KG1fYnl0ZWNvZGVPZmZzZXQpLT5tX2NvdW50ZXIpKTsKKyAgICAgICAg
ICAgICAgICBhZGQzMihUcnVzdGVkSW1tMzIoMSksIEFic29sdXRlQWRkcmVzcygmbV9jb2RlQmxv
Y2stPnNwZWNpYWxGYXN0Q2FzZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChtX2J5dGVjb2RlT2Zm
c2V0KS0+bV9jb3VudGVyKSk7CiAgICAgICAgICAgICAgICAgZW1pdFN0b3JlRG91YmxlKGRzdCwg
ZnBSZWdUMSk7CiAgICAgICAgICAgICAgICAgaXNJbnRlZ2VyLmxpbmsodGhpcyk7CiAjZWxzZQpA
QCAtOTY1LDcgKzk2NSw3IEBAIHZvaWQgSklUOjplbWl0QmluYXJ5RG91YmxlT3AoT3Bjb2RlSUQg
b3Bjb2RlSUQsIHVuc2lnbmVkIGRzdCwgdW5zaWduZWQgb3AxLCB1bnNpCiAgICAgICAgICAgICAg
ICAgZW1pdFN0b3JlSW50MzIoZHN0LCByZWdUMik7CiAgICAgICAgICAgICAgICAgSnVtcCBpc0lu
dGVnZXIgPSBqdW1wKCk7CiAgICAgICAgICAgICAgICAgbm90SW50ZWdlci5saW5rKHRoaXMpOwot
ICAgICAgICAgICAgICAgIGFkZDMyKEltbTMyKDEpLCBBYnNvbHV0ZUFkZHJlc3MoJm1fY29kZUJs
b2NrLT5zcGVjaWFsRmFzdENhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQobV9ieXRlY29kZU9m
ZnNldCktPm1fY291bnRlcikpOworICAgICAgICAgICAgICAgIGFkZDMyKFRydXN0ZWRJbW0zMigx
KSwgQWJzb2x1dGVBZGRyZXNzKCZtX2NvZGVCbG9jay0+c3BlY2lhbEZhc3RDYXNlUHJvZmlsZUZv
ckJ5dGVjb2RlT2Zmc2V0KG1fYnl0ZWNvZGVPZmZzZXQpLT5tX2NvdW50ZXIpKTsKICAgICAgICAg
ICAgICAgICBlbWl0U3RvcmVEb3VibGUoZHN0LCBmcFJlZ1QwKTsKICAgICAgICAgICAgICAgICBp
c0ludGVnZXIubGluayh0aGlzKTsKICNlbHNlCkBAIC0xMDcxLDcgKzEwNzEsNyBAQCB2b2lkIEpJ
VDo6ZW1pdFNsb3dfb3BfbXVsKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5PgogICAgIC8vIFdlIG9ubHkgZ2V0IGhlcmUgaWYgd2UgaGF2ZSBhIGdl
bnVpbmUgbmVnYXRpdmUgemVyby4gUmVjb3JkIHRoaXMsCiAgICAgLy8gc28gdGhhdCB0aGUgc3Bl
Y3VsYXRpdmUgSklUIGtub3dzIHRoYXQgd2UgZmFpbGVkIHNwZWN1bGF0aW9uCiAgICAgLy8gYmVj
YXVzZSBvZiBhIG5lZ2F0aXZlIHplcm8uCi0gICAgYWRkMzIoSW1tMzIoMSksIEFic29sdXRlQWRk
cmVzcygmbV9jb2RlQmxvY2stPnNwZWNpYWxGYXN0Q2FzZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNl
dChtX2J5dGVjb2RlT2Zmc2V0KS0+bV9jb3VudGVyKSk7CisgICAgYWRkMzIoVHJ1c3RlZEltbTMy
KDEpLCBBYnNvbHV0ZUFkZHJlc3MoJm1fY29kZUJsb2NrLT5zcGVjaWFsRmFzdENhc2VQcm9maWxl
Rm9yQnl0ZWNvZGVPZmZzZXQobV9ieXRlY29kZU9mZnNldCktPm1fY291bnRlcikpOwogI2VuZGlm
CiAgICAgb3ZlcmZsb3cubGluayh0aGlzKTsKIApAQCAtMTE1MCw3ICsxMTUwLDcgQEAgdm9pZCBK
SVQ6OmVtaXRfb3BfZGl2KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1p
dFN0b3JlSW50MzIoZHN0LCByZWdUMik7CiAgICAgZW5kLmFwcGVuZChqdW1wKCkpOwogICAgIG5v
dEludGVnZXIubGluayh0aGlzKTsKLSAgICBhZGQzMihJbW0zMigxKSwgQWJzb2x1dGVBZGRyZXNz
KCZtX2NvZGVCbG9jay0+c3BlY2lhbEZhc3RDYXNlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KG1f
Ynl0ZWNvZGVPZmZzZXQpLT5tX2NvdW50ZXIpKTsKKyAgICBhZGQzMihUcnVzdGVkSW1tMzIoMSks
IEFic29sdXRlQWRkcmVzcygmbV9jb2RlQmxvY2stPnNwZWNpYWxGYXN0Q2FzZVByb2ZpbGVGb3JC
eXRlY29kZU9mZnNldChtX2J5dGVjb2RlT2Zmc2V0KS0+bV9jb3VudGVyKSk7CiAgICAgZW1pdFN0
b3JlRG91YmxlKGRzdCwgZnBSZWdUMCk7CiAjZWxzZQogICAgIGVtaXRTdG9yZURvdWJsZShkc3Qs
IGZwUmVnVDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxs
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAKaW5kZXggYmIyZjIy
Mzg3ZGRjNzc1NTk3OGQ3YzBkMmUxNmVlYzRiZDVkNzg1Zi4uNzNkMDE3ZDA1MGIzZmFhMDQ3ZGJl
NDgyOWZjZGNlYjllOGY1NTcyYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRDYWxsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3Bw
CkBAIC05MiwxMyArOTIsMTMgQEAgdm9pZCBKSVQ6OmNvbXBpbGVMb2FkVmFyYXJncyhJbnN0cnVj
dGlvbiogaW5zdHJ1Y3Rpb24pCiAgICAgICAgIC8vIENvcHkgYXJndW1lbnRzLgogICAgICAgICBu
ZWczMihyZWdUMCk7CiAgICAgICAgIHNpZ25FeHRlbmQzMlRvUHRyKHJlZ1QwLCByZWdUMCk7Ci0g
ICAgICAgIGVuZC5hcHBlbmQoYnJhbmNoQWRkUHRyKFplcm8sIEltbTMyKDEpLCByZWdUMCkpOwor
ICAgICAgICBlbmQuYXBwZW5kKGJyYW5jaEFkZFB0cihaZXJvLCBUcnVzdGVkSW1tMzIoMSksIHJl
Z1QwKSk7CiAgICAgICAgIC8vIHJlZ1QwOiAtYXJndW1lbnRDb3VudAogCiAgICAgICAgIExhYmVs
IGNvcHlMb29wID0gbGFiZWwoKTsKICAgICAgICAgbG9hZFB0cihCYXNlSW5kZXgoY2FsbEZyYW1l
UmVnaXN0ZXIsIHJlZ1QwLCBUaW1lc0VpZ2h0LCBDYWxsRnJhbWU6OnRoaXNBcmd1bWVudE9mZnNl
dCgpICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSksIHJlZ1QyKTsKICAgICAg
ICAgc3RvcmVQdHIocmVnVDIsIEJhc2VJbmRleChyZWdUMSwgcmVnVDAsIFRpbWVzRWlnaHQsIENh
bGxGcmFtZTo6dGhpc0FyZ3VtZW50T2Zmc2V0KCkgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihS
ZWdpc3RlcikpKSk7Ci0gICAgICAgIGJyYW5jaEFkZFB0cihOb25aZXJvLCBJbW0zMigxKSwgcmVn
VDApLmxpbmtUbyhjb3B5TG9vcCwgdGhpcyk7CisgICAgICAgIGJyYW5jaEFkZFB0cihOb25aZXJv
LCBUcnVzdGVkSW1tMzIoMSksIHJlZ1QwKS5saW5rVG8oY29weUxvb3AsIHRoaXMpOwogCiAgICAg
ICAgIGVuZC5hcHBlbmQoanVtcCgpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVENhbGwzMl82NC5jcHAKaW5kZXggYjg0YWQxYTQ5OTZmY2NjYWE4YWU2YWE5ZTFmMDMzZjRk
NWY4ZmJmYy4uN2ZiNmM3OGI5ZGE4NzFkMGJhOWZkMTVlOWQ4MWQ0ZmMxMGI3NGEzNCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNwcApAQCAtMTcxLDcgKzE3MSw3
IEBAIHZvaWQgSklUOjpjb21waWxlTG9hZFZhcmFyZ3MoSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9u
KQogCiAgICAgICAgIC8vIENvcHkgYXJndW1lbnRzLgogICAgICAgICBuZWczMihyZWdUMik7Ci0g
ICAgICAgIGVuZC5hcHBlbmQoYnJhbmNoQWRkMzIoWmVybywgSW1tMzIoMSksIHJlZ1QyKSk7Cisg
ICAgICAgIGVuZC5hcHBlbmQoYnJhbmNoQWRkMzIoWmVybywgVHJ1c3RlZEltbTMyKDEpLCByZWdU
MikpOwogICAgICAgICAvLyByZWdUMjogLWFyZ3VtZW50Q291bnQ7CiAKICAgICAgICAgTGFiZWwg
Y29weUxvb3AgPSBsYWJlbCgpOwpAQCAtMTc5LDcgKzE3OSw3IEBAIHZvaWQgSklUOjpjb21waWxl
TG9hZFZhcmFyZ3MoSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uKQogICAgICAgICBsb2FkMzIoQmFz
ZUluZGV4KGNhbGxGcmFtZVJlZ2lzdGVyLCByZWdUMiwgVGltZXNFaWdodCwgT0JKRUNUX09GRlNF
VE9GKEpTVmFsdWUsIHUuYXNCaXRzLnRhZykgKyhDYWxsRnJhbWU6OnRoaXNBcmd1bWVudE9mZnNl
dCgpICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSkpLCByZWdUMSk7CiAgICAg
ICAgIHN0b3JlMzIocmVnVDAsIEJhc2VJbmRleChyZWdUMywgcmVnVDIsIFRpbWVzRWlnaHQsIE9C
SkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy5wYXlsb2FkKSArKENhbGxGcmFtZTo6dGhp
c0FyZ3VtZW50T2Zmc2V0KCkgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpKSkp
OwogICAgICAgICBzdG9yZTMyKHJlZ1QxLCBCYXNlSW5kZXgocmVnVDMsIHJlZ1QyLCBUaW1lc0Vp
Z2h0LCBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMudGFnKSArKENhbGxGcmFtZTo6
dGhpc0FyZ3VtZW50T2Zmc2V0KCkgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3Rlcikp
KSkpOwotICAgICAgICBicmFuY2hBZGQzMihOb25aZXJvLCBJbW0zMigxKSwgcmVnVDIpLmxpbmtU
byhjb3B5TG9vcCwgdGhpcyk7CisgICAgICAgIGJyYW5jaEFkZDMyKE5vblplcm8sIFRydXN0ZWRJ
bW0zMigxKSwgcmVnVDIpLmxpbmtUbyhjb3B5TG9vcCwgdGhpcyk7CiAKICAgICAgICAgZW5kLmFw
cGVuZChqdW1wKCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUSW5saW5lTWV0aG9kcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxp
bmVNZXRob2RzLmgKaW5kZXggNjJlMjEwMDQ1MmU2NDgyMzE0ZWQ4NGUzOTZlM2NjMzVkMDc4NmIx
Ni4uMWFlYjlmZDMzMjBkNzFmZGY2NDdhOGY4ZmEwODUxYzIyY2MwMzkyNCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVNZXRob2RzLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVNZXRob2RzLmgKQEAgLTI2OSw3ICsyNjksNyBA
QCBBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjp1cGRhdGVUb3BDYWxsRnJhbWUoKQogI2lmIFVTRShK
U1ZBTFVFMzJfNjQpCiAgICAgICAgIHN0b3JlUHRyKFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2st
Pmluc3RydWN0aW9ucygpLmJlZ2luKCkgKyBtX2J5dGVjb2RlT2Zmc2V0ICsgMSksIGludFRhZ0Zv
cihSZWdpc3RlckZpbGU6OkFyZ3VtZW50Q291bnQpKTsKICNlbHNlCi0gICAgICAgIHN0b3JlMzIo
SW1tMzIobV9ieXRlY29kZU9mZnNldCArIDEpLCBpbnRUYWdGb3IoUmVnaXN0ZXJGaWxlOjpBcmd1
bWVudENvdW50KSk7CisgICAgICAgIHN0b3JlMzIoVHJ1c3RlZEltbTMyKG1fYnl0ZWNvZGVPZmZz
ZXQgKyAxKSwgaW50VGFnRm9yKFJlZ2lzdGVyRmlsZTo6QXJndW1lbnRDb3VudCkpOwogI2VuZGlm
CiAgICAgfQogICAgIHN0b3JlUHRyKGNhbGxGcmFtZVJlZ2lzdGVyLCAmbV9nbG9iYWxEYXRhLT50
b3BDYWxsRnJhbWUpOwpAQCAtNTU3LDcgKzU1Nyw3IEBAIGlubGluZSB2b2lkIEpJVDo6ZW1pdFZh
bHVlUHJvZmlsaW5nU2l0ZShWYWx1ZVByb2ZpbGUqIHZhbHVlUHJvZmlsZSkKICAgICB9CiAgICAg
CiAgICAgaWYgKG1fcmFuZG9tR2VuZXJhdG9yLmdldFVpbnQzMigpICYgMSkKLSAgICAgICAgYWRk
MzIoSW1tMzIoMSksIGJ1Y2tldENvdW50ZXJSZWdpc3Rlcik7CisgICAgICAgIGFkZDMyKFRydXN0
ZWRJbW0zMigxKSwgYnVja2V0Q291bnRlclJlZ2lzdGVyKTsKICAgICBlbHNlCiAgICAgICAgIGFk
ZDMyKEltbTMyKDMpLCBidWNrZXRDb3VudGVyUmVnaXN0ZXIpOwogICAgIGFuZDMyKEltbTMyKFZh
bHVlUHJvZmlsZTo6YnVja2V0SW5kZXhNYXNrKSwgYnVja2V0Q291bnRlclJlZ2lzdGVyKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAppbmRleCAxYTA5
MzAyY2ZhNDc3MTIzMTYzNTA1YmQ3ZmQzMjEyMjNkYTI2ZGYwLi4xMjdiNDNkMjA0MmVkN2UwZWJl
OGFjNzljOGZkODJkYTQ3MDU3ZGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wY29kZXMzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGNvZGVzMzJfNjQuY3BwCkBAIC04MTcsNyArODE3LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93
X29wX2pmYWxzZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nh
c2VFbnQKIAogICAgIGlmIChzdXBwb3J0c0Zsb2F0aW5nUG9pbnQoKSkgewogICAgICAgICAvLyBy
ZWdUMSBjb250YWlucyB0aGUgdGFnIGZyb20gdGhlIGhvdCBwYXRoLgotICAgICAgICBKdW1wIG5v
dE51bWJlciA9IGJyYW5jaDMyKEFib3ZlLCByZWdUMSwgSW1tMzIoSlNWYWx1ZTo6TG93ZXN0VGFn
KSk7CisgICAgICAgIEp1bXAgbm90TnVtYmVyID0gYnJhbmNoMzIoQWJvdmUsIHJlZ1QxLCBUcnVz
dGVkSW1tMzIoSlNWYWx1ZTo6TG93ZXN0VGFnKSk7CiAKICAgICAgICAgZW1pdExvYWREb3VibGUo
Y29uZCwgZnBSZWdUMCk7CiAgICAgICAgIGVtaXRKdW1wU2xvd1RvSG90KGJyYW5jaERvdWJsZVpl
cm9Pck5hTihmcFJlZ1QwLCBmcFJlZ1QxKSwgdGFyZ2V0KTsKQEAgLTg1Myw3ICs4NTMsNyBAQCB2
b2lkIEpJVDo6ZW1pdFNsb3dfb3BfanRydWUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
biwgVmVjdG9yPFNsb3dDYXNlRW50cgogCiAgICAgaWYgKHN1cHBvcnRzRmxvYXRpbmdQb2ludCgp
KSB7CiAgICAgICAgIC8vIHJlZ1QxIGNvbnRhaW5zIHRoZSB0YWcgZnJvbSB0aGUgaG90IHBhdGgu
Ci0gICAgICAgIEp1bXAgbm90TnVtYmVyID0gYnJhbmNoMzIoQWJvdmUsIHJlZ1QxLCBJbW0zMihK
U1ZhbHVlOjpMb3dlc3RUYWcpKTsKKyAgICAgICAgSnVtcCBub3ROdW1iZXIgPSBicmFuY2gzMihB
Ym92ZSwgcmVnVDEsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpMb3dlc3RUYWcpKTsKIAogICAgICAg
ICBlbWl0TG9hZERvdWJsZShjb25kLCBmcFJlZ1QwKTsKICAgICAgICAgZW1pdEp1bXBTbG93VG9I
b3QoYnJhbmNoRG91YmxlTm9uWmVybyhmcFJlZ1QwLCBmcFJlZ1QxKSwgdGFyZ2V0KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YkNhbGwuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YkNhbGwuaAppbmRleCA1MTQwMWE3N2Y1OWU5OTFiNTAx
YTdiMDMwYTAxNDYzNDZmYzNmNGM2Li44N2VmZWNiYjg5ZWZkMWI3Y2NlYjJiYjljZjQyNmVlMTQ0
NDZmZGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJDYWxs
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHViQ2FsbC5oCkBAIC0xMDQs
NiArMTA0LDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgbV9qaXQtPnBva2UoYXJn
dW1lbnQsIG1fc3RhY2tJbmRleCk7CiAgICAgICAgICAgICBtX3N0YWNrSW5kZXggKz0gc3RhY2tJ
bmRleFN0ZXA7CiAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHZvaWQgYWRkQXJndW1lbnQo
SklUOjpJbW0zMiBhcmd1bWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgbV9qaXQtPnBva2Uo
YXJndW1lbnQsIG1fc3RhY2tJbmRleCk7CisgICAgICAgICAgICBtX3N0YWNrSW5kZXggKz0gc3Rh
Y2tJbmRleFN0ZXA7CisgICAgICAgIH0KIAogICAgICAgICB2b2lkIGFkZEFyZ3VtZW50KEpJVDo6
VHJ1c3RlZEltbVB0ciBhcmd1bWVudCkKICAgICAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFy
ci9ZYXJySklULmNwcAppbmRleCBjZDg2MWVjZjM3ODQ4NThjNmU5MmJmZmVjNzg4NDQ3MDNmOGVl
NmI1Li5kYTc0MmFiOGRhMTZiMzRjOTFkZGM0Mjc2Mjk1OWZhNWNiYjBjZDgzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNwcApAQCAtMTc0OCw3ICsxNzQ4LDcgQEAgY2xhc3Mg
WWFyckdlbmVyYXRvciA6IHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoYWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemUpCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWIzMihJbW0zMihhbHRlcm5hdGl2ZS0+bV9t
aW5pbXVtU2l6ZSAtIDEpLCByZWdUMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZDMyKEltbTMyKDEp
LCByZWdUMCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGQzMihUcnVz
dGVkSW1tMzIoMSksIHJlZ1QwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rv
cmUzMihyZWdUMCwgQWRkcmVzcyhvdXRwdXQpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgICAgICAgICB9CkBAIC0xODQ3LDcgKzE4NDcsNyBAQCBjbGFz
cyBZYXJyR2VuZXJhdG9yIDogcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgICAgICAg
ICAgaWYgKGFsdGVybmF0aXZlLT5tX21pbmltdW1TaXplID09IG1fcGF0dGVybi5tX2JvZHktPm1f
bWluaW11bVNpemUpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIGxhc3QgYWx0ZXJu
YXRpdmUgaGFkIHRoZSBzYW1lIG1pbmltdW0gc2l6ZSBhcyB0aGUgZGlzanVuY3Rpb24sCiAgICAg
ICAgICAgICAgICAgICAgIC8vIGp1c3Qgc2ltcGx5IGluY3JlbWVudCBpbnB1dCBwb3MgYnkgMSwg
bm8gYWRqdXN0bWVudCBiYXNlZCBvbiBtaW5pbXVtIHNpemUuCi0gICAgICAgICAgICAgICAgICAg
IGFkZDMyKEltbTMyKDEpLCBpbmRleCk7CisgICAgICAgICAgICAgICAgICAgIGFkZDMyKFRydXN0
ZWRJbW0zMigxKSwgaW5kZXgpOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICAgICAgICAgIC8vIElmIHRoZSBtaW51bXVtIGZvciB0aGUgbGFzdCBhbHRlcm5hdGl2ZSB3YXMg
b25lIGdyZWF0ZXIgdGhhbiB0aGFuIHRoYXQKICAgICAgICAgICAgICAgICAgICAgLy8gZm9yIHRo
ZSBkaXNqdW5jdGlvbiwgd2UncmUgYWxyZWFkeSBwcm9ncmVzc2VkIGJ5IDEsIG5vdGhpbmcgdG8g
ZG8hCg==
</data>
<flag name="review"
          id="133192"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130291</attachid>
            <date>2012-03-05 22:19:44 -0800</date>
            <delta_ts>2012-03-05 22:30:29 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>llintnojit_patch_10.diff</filename>
            <type>text/plain</type>
            <size>21055</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA5ODU4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUyIEBA
CisyMDEyLTAzLTA1ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
VGhlIExMSW50IHNob3VsZCB3b3JrIGV2ZW4gd2hlbiB0aGUgSklUIGlzIGRpc2FibGVkCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDM0MAorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vMTA5MjIyMzU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2F2aW4g
QmFycmFjbG91Z2guCisKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6Y3JlYXRlTExJbnRDb2Rl
UHRyKToKKyAgICAgICAgKE1hY3JvQXNzZW1ibGVyQ29kZVJlZik6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlTExJbnRDb2RlUmVmKToKKyAgICAgICAgKiBpbnRl
cnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjppbml0
aWFsaXplKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmV4ZWN1dGUpOgorICAgICAgICAo
SlNDOjpJbnRlcnByZXRlcjo6ZXhlY3V0ZUNhbGwpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRl
cjo6ZXhlY3V0ZUNvbnN0cnVjdCk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAoSlND
OjpKSVQ6OmNvbXBpbGVDVElOYXRpdmVDYWxsKToKKyAgICAgICAgKiBqaXQvSklUU3R1YnMuaDoK
KyAgICAgICAgKEpTQzo6SklUVGh1bmtzOjpjdGlOYXRpdmVDYWxsKToKKyAgICAgICAgKEpTQzo6
SklUVGh1bmtzOjpjdGlOYXRpdmVDb25zdHJ1Y3QpOgorICAgICAgICAqIGxsaW50L0xMSW50RW50
cnlwb2ludHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6Z2V0RnVuY3Rpb25FbnRyeXBvaW50
KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmdldEV2YWxFbnRyeXBvaW50KToKKyAgICAgICAgKEpT
Qzo6TExJbnQ6OmdldFByb2dyYW1FbnRyeXBvaW50KToKKyAgICAgICAgKiBsbGludC9MTEludFNs
b3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6
CisgICAgICAgIChMTEludCk6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuaDoKKyAg
ICAgICAgKExMSW50KToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmg6Cisg
ICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAgICAgICAgKiBy
dW50aW1lL0V4ZWN1dGFibGUuaDoKKyAgICAgICAgKE5hdGl2ZUV4ZWN1dGFibGUpOgorICAgICAg
ICAoSlNDOjpOYXRpdmVFeGVjdXRhYmxlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpOYXRpdmVF
eGVjdXRhYmxlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbERh
dGEuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbERhdGE6OkpTR2xvYmFsRGF0YSk6CisgICAg
ICAgICogcnVudGltZS9KU0dsb2JhbERhdGEuaDoKKyAgICAgICAgKEpTR2xvYmFsRGF0YSk6Cisg
ICAgICAgICogcnVudGltZS9PcHRpb25zLmNwcDoKKyAgICAgICAgKE9wdGlvbnMpOgorICAgICAg
ICAoSlNDOjpPcHRpb25zOjpwYXJzZSk6CisgICAgICAgIChKU0M6Ok9wdGlvbnM6OmluaXRpYWxp
emVPcHRpb25zKToKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMuaDoKKyAgICAgICAgKE9wdGlv
bnMpOgorICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5oOgorCiAyMDEyLTAzLTA1ICBPbGl2ZXIgSHVu
dCAgPG9saXZlckBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IFF0IGJ1aWxkLgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckNvZGVSZWYuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
Q29kZVJlZi5oCShyZXZpc2lvbiAxMDk4NTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyQ29kZVJlZi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yODAsNiAr
MjgwLDEwIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKKyAgICBz
dGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGNyZWF0ZUxMSW50Q29kZVB0cih2b2lkICgqZnVu
Y3Rpb24pKCkpCisgICAgeworICAgICAgICByZXR1cm4gY3JlYXRlRnJvbUV4ZWN1dGFibGVBZGRy
ZXNzKGJpdHdpc2VfY2FzdDx2b2lkKj4oZnVuY3Rpb24pKTsKKyAgICB9CiAgICAgZXhwbGljaXQg
TWFjcm9Bc3NlbWJsZXJDb2RlUHRyKFJldHVybkFkZHJlc3NQdHIgcmEpCiAgICAgICAgIDogbV92
YWx1ZShyYS52YWx1ZSgpKQogICAgIHsKQEAgLTM0MCw2ICszNDQsMTIgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJDb2RlUmVmKGNvZGVQdHIpOwogICAgIH0KICAgICAK
KyAgICAvLyBIZWxwZXIgZm9yIGNyZWF0aW5nIHNlbGYtbWFuYWdlZCBjb2RlIHJlZnMgZnJvbSBM
TEludC4KKyAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGNyZWF0ZUxMSW50Q29kZVJl
Zih2b2lkICgqZnVuY3Rpb24pKCkpCisgICAgeworICAgICAgICByZXR1cm4gY3JlYXRlU2VsZk1h
bmFnZWRDb2RlUmVmKE1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6Y3JlYXRlRnJvbUV4ZWN1dGFibGVB
ZGRyZXNzKGJpdHdpc2VfY2FzdDx2b2lkKj4oZnVuY3Rpb24pKSk7CisgICAgfQorICAgIAogICAg
IEV4ZWN1dGFibGVNZW1vcnlIYW5kbGUqIGV4ZWN1dGFibGVNZW1vcnkoKSBjb25zdAogICAgIHsK
ICAgICAgICAgcmV0dXJuIG1fZXhlY3V0YWJsZU1lbW9yeS5nZXQoKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAkocmV2aXNp
b24gMTA5ODU4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJl
dGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYwLDMxICs1NjAsMjcgQEAgdm9pZCBJbnRlcnBy
ZXRlcjo6aW5pdGlhbGl6ZShMTEludDo6RGF0YQogewogICAgIFVOVVNFRF9QQVJBTShsbGludERh
dGEpOwogICAgIFVOVVNFRF9QQVJBTShjYW5Vc2VKSVQpOwotI2lmIEVOQUJMRShDT01QVVRFRF9H
T1RPX0NMQVNTSUNfSU5URVJQUkVURVIpIHx8IEVOQUJMRShMTElOVCkKLSNpZiAhRU5BQkxFKENP
TVBVVEVEX0dPVE9fQ0xBU1NJQ19JTlRFUlBSRVRFUikKLSAgICAvLyBIYXZpbmcgTExJbnQgZW5h
YmxlZCwgYnV0IG5vdCBiZWluZyBhYmxlIHRvIHVzZSB0aGUgSklULCBhbmQgbm90IGhhdmluZwot
ICAgIC8vIGEgY29tcHV0ZWQgZ290byBpbnRlcnByZXRlciwgaXMgbm90IHN1cHBvcnRlZC4gTm90
IGJlY2F1c2Ugd2UgY2Fubm90Ci0gICAgLy8gc3VwcG9ydCBpdCwgYnV0IGJlY2F1c2UgSSBkZWNp
ZGVkIHRvIGRyYXcgdGhlIGxpbmUgYXQgdGhlIG51bWJlciBvZgotICAgIC8vIHBlcm11dGF0aW9u
cyBvZiBleGVjdXRpb24gZW5naW5lcyB0aGF0IEkgd2FudGVkIHRoaXMgY29kZSB0byBncm9rLgot
ICAgIEFTU0VSVChjYW5Vc2VKSVQpOworCisgICAgLy8gSWYgd2UgaGF2ZSBMTEludCwgdGhlbiB3
ZSBzaG91bGRuJ3QgYmUgYnVpbGRpbmcgYW55IGtpbmQgb2YgY2xhc3NpYyBpbnRlcnByZXRlci4K
KyNpZiBFTkFCTEUoTExJTlQpICYmIEVOQUJMRShDTEFTU0lDX0lOVEVSUFJFVEVSKQorI2Vycm9y
ICJCdWlsZGluZyBib3RoIExMSW50IGFuZCB0aGUgQ2xhc3NpYyBJbnRlcnByZXRlciBpcyBub3Qg
c3VwcG9ydGVkIGJlY2F1c2UgaXQgZG9lc24ndCBtYWtlIHNlbnNlLiIKICNlbmRpZgotICAgIGlm
IChjYW5Vc2VKSVQpIHsKKwogI2lmIEVOQUJMRShMTElOVCkKLSAgICAgICAgbV9vcGNvZGVUYWJs
ZSA9IGxsaW50RGF0YS0+b3Bjb2RlTWFwKCk7Ci0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
bnVtT3Bjb2RlSURzOyArK2kpCi0gICAgICAgICAgICBtX29wY29kZUlEVGFibGUuYWRkKG1fb3Bj
b2RlVGFibGVbaV0sIHN0YXRpY19jYXN0PE9wY29kZUlEPihpKSk7Ci0jZWxzZQorICAgIG1fb3Bj
b2RlVGFibGUgPSBsbGludERhdGEtPm9wY29kZU1hcCgpOworICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgbnVtT3Bjb2RlSURzOyArK2kpCisgICAgICAgIG1fb3Bjb2RlSURUYWJsZS5hZGQobV9vcGNv
ZGVUYWJsZVtpXSwgc3RhdGljX2Nhc3Q8T3Bjb2RlSUQ+KGkpKTsKKyAgICBtX2NsYXNzaWNFbmFi
bGVkID0gZmFsc2U7CisjZWxpZiBFTkFCTEUoQ09NUFVURURfR09UT19DTEFTU0lDX0lOVEVSUFJF
VEVSKQorICAgIGlmIChjYW5Vc2VKSVQpIHsKICAgICAgICAgLy8gSWYgdGhlIEpJVCBpcyBwcmVz
ZW50LCBkb24ndCB1c2UganVtcCBkZXN0aW5hdGlvbnMgZm9yIG9wY29kZXMuCiAgICAgICAgIAog
ICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bU9wY29kZUlEczsgKytpKSB7CiAgICAgICAg
ICAgICBPcGNvZGUgb3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDx1aW50
cHRyX3Q+KGkpKTsKICAgICAgICAgICAgIG1fb3Bjb2RlVGFibGVbaV0gPSBvcGNvZGU7CiAgICAg
ICAgIH0KLSNlbmRpZgorICAgICAgICBtX2NsYXNzaWNFbmFibGVkID0gZmFsc2U7CiAgICAgfSBl
bHNlIHsKLSNpZiBFTkFCTEUoTExJTlQpCi0gICAgICAgIG1fb3Bjb2RlVGFibGUgPSBuZXcgT3Bj
b2RlW251bU9wY29kZUlEc107Ci0jZW5kaWYKICAgICAgICAgcHJpdmF0ZUV4ZWN1dGUoSW5pdGlh
bGl6ZUFuZFJldHVybiwgMCwgMCk7CiAgICAgICAgIAogICAgICAgICBmb3IgKGludCBpID0gMDsg
aSA8IG51bU9wY29kZUlEczsgKytpKQpAQCAtMTE5OCw3ICsxMTk0LDcgQEAgZmFpbGVkSlNPTlA6
CiAKICAgICAgICAgbV9yZWVudHJ5RGVwdGgrKzsgIAogI2lmIEVOQUJMRShKSVQpCi0gICAgICAg
IGlmIChjYWxsRnJhbWUtPmdsb2JhbERhdGEoKS5jYW5Vc2VKSVQoKSkKKyAgICAgICAgaWYgKCFj
bGFzc2ljRW5hYmxlZCgpKQogICAgICAgICAgICAgcmVzdWx0ID0gcHJvZ3JhbS0+Z2VuZXJhdGVk
SklUQ29kZSgpLmV4ZWN1dGUoJm1fcmVnaXN0ZXJGaWxlLCBuZXdDYWxsRnJhbWUsIHNjb3BlQ2hh
aW4tPmdsb2JhbERhdGEpOwogICAgICAgICBlbHNlCiAjZW5kaWYKQEAgLTEyNzAsNyArMTI2Niw3
IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGVDYWxsKENhbGxGcmEKIAogICAgICAgICAg
ICAgbV9yZWVudHJ5RGVwdGgrKzsgIAogI2lmIEVOQUJMRShKSVQpCi0gICAgICAgICAgICBpZiAo
Y2FsbEZyYW1lLT5nbG9iYWxEYXRhKCkuY2FuVXNlSklUKCkpCisgICAgICAgICAgICBpZiAoIWNs
YXNzaWNFbmFibGVkKCkpCiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gY2FsbERhdGEuanMuZnVu
Y3Rpb25FeGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlRm9yQ2FsbCgpLmV4ZWN1dGUoJm1fcmVn
aXN0ZXJGaWxlLCBuZXdDYWxsRnJhbWUsIGNhbGxEYXRhU2NvcGVDaGFpbi0+Z2xvYmFsRGF0YSk7
CiAgICAgICAgICAgICBlbHNlCiAjZW5kaWYKQEAgLTEzNjYsNyArMTM2Miw3IEBAIEpTT2JqZWN0
KiBJbnRlcnByZXRlcjo6ZXhlY3V0ZUNvbnN0cnVjdCgKIAogICAgICAgICAgICAgbV9yZWVudHJ5
RGVwdGgrKzsgIAogI2lmIEVOQUJMRShKSVQpCi0gICAgICAgICAgICBpZiAoY2FsbEZyYW1lLT5n
bG9iYWxEYXRhKCkuY2FuVXNlSklUKCkpCisgICAgICAgICAgICBpZiAoIWNsYXNzaWNFbmFibGVk
KCkpCiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gY29uc3RydWN0RGF0YS5qcy5mdW5jdGlvbkV4
ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENvZGVGb3JDb25zdHJ1Y3QoKS5leGVjdXRlKCZtX3JlZ2lz
dGVyRmlsZSwgbmV3Q2FsbEZyYW1lLCBjb25zdHJ1Y3REYXRhU2NvcGVDaGFpbi0+Z2xvYmFsRGF0
YSk7CiAgICAgICAgICAgICBlbHNlCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
aAkocmV2aXNpb24gMTA5ODU4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAko
d29ya2luZyBjb3B5KQpAQCAtMjU0LDggKzI1NCwxMyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAg
ICAgICBzdGF0aWMgQ29kZVJlZiBjb21waWxlQ1RJTmF0aXZlQ2FsbChKU0dsb2JhbERhdGEqIGds
b2JhbERhdGEsIE5hdGl2ZUZ1bmN0aW9uIGZ1bmMpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlm
ICghZ2xvYmFsRGF0YS0+Y2FuVXNlSklUKCkpCisgICAgICAgICAgICBpZiAoIWdsb2JhbERhdGEt
PmNhblVzZUpJVCgpKSB7CisjaWYgRU5BQkxFKExMSU5UKQorICAgICAgICAgICAgICAgIHJldHVy
biBDb2RlUmVmOjpjcmVhdGVMTEludENvZGVSZWYobGxpbnRfbmF0aXZlX2NhbGxfdHJhbXBvbGlu
ZSk7CisjZWxzZQogICAgICAgICAgICAgICAgIHJldHVybiBDb2RlUmVmKCk7CisjZW5kaWYKKyAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIEpJVCBqaXQoZ2xvYmFsRGF0YSwgMCk7CiAgICAgICAg
ICAgICByZXR1cm4gaml0LnByaXZhdGVDb21waWxlQ1RJTmF0aXZlQ2FsbChnbG9iYWxEYXRhLCBm
dW5jKTsKICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVi
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuaAko
cmV2aXNpb24gMTA5ODU4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAKICNpbmNsdWRlICJDYWxsRGF0YS5o
IgogI2luY2x1ZGUgIkludHJpbnNpYy5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIu
aCIKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCIKICNpbmNsdWRlICJSZWdpc3Rl
ci5oIgogI2luY2x1ZGUgIlRodW5rR2VuZXJhdG9ycy5oIgpAQCAtMzA2LDggKzMwNywyMiBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGN0aVZpcnR1YWxD
b25zdHJ1Y3RMaW5rKCkgeyByZXR1cm4gbV90cmFtcG9saW5lU3RydWN0dXJlLmN0aVZpcnR1YWxD
b25zdHJ1Y3RMaW5rOyB9CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBjdGlWaXJ0dWFs
Q2FsbCgpIHsgcmV0dXJuIG1fdHJhbXBvbGluZVN0cnVjdHVyZS5jdGlWaXJ0dWFsQ2FsbDsgfQog
ICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgY3RpVmlydHVhbENvbnN0cnVjdCgpIHsgcmV0
dXJuIG1fdHJhbXBvbGluZVN0cnVjdHVyZS5jdGlWaXJ0dWFsQ29uc3RydWN0OyB9Ci0gICAgICAg
IE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBjdGlOYXRpdmVDYWxsKCkgeyByZXR1cm4gbV90cmFtcG9s
aW5lU3RydWN0dXJlLmN0aU5hdGl2ZUNhbGw7IH0KLSAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UHRyIGN0aU5hdGl2ZUNvbnN0cnVjdCgpIHsgcmV0dXJuIG1fdHJhbXBvbGluZVN0cnVjdHVyZS5j
dGlOYXRpdmVDb25zdHJ1Y3Q7IH0KKyAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGN0aU5h
dGl2ZUNhbGwoKQorICAgICAgICB7CisjaWYgRU5BQkxFKExMSU5UKQorICAgICAgICAgICAgaWYg
KCFtX2V4ZWN1dGFibGVNZW1vcnkpCisgICAgICAgICAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1i
bGVyQ29kZVB0cjo6Y3JlYXRlTExJbnRDb2RlUHRyKGxsaW50X25hdGl2ZV9jYWxsX3RyYW1wb2xp
bmUpOworI2VuZGlmCisgICAgICAgICAgICByZXR1cm4gbV90cmFtcG9saW5lU3RydWN0dXJlLmN0
aU5hdGl2ZUNhbGw7CisgICAgICAgIH0KKyAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGN0
aU5hdGl2ZUNvbnN0cnVjdCgpCisgICAgICAgIHsKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgICAg
ICAgICBpZiAoIW1fZXhlY3V0YWJsZU1lbW9yeSkKKyAgICAgICAgICAgICAgICByZXR1cm4gTWFj
cm9Bc3NlbWJsZXJDb2RlUHRyOjpjcmVhdGVMTEludENvZGVQdHIobGxpbnRfbmF0aXZlX2NvbnN0
cnVjdF90cmFtcG9saW5lKTsKKyNlbmRpZgorICAgICAgICAgICAgcmV0dXJuIG1fdHJhbXBvbGlu
ZVN0cnVjdHVyZS5jdGlOYXRpdmVDb25zdHJ1Y3Q7CisgICAgICAgIH0KICAgICAgICAgTWFjcm9B
c3NlbWJsZXJDb2RlUHRyIGN0aVNvZnRNb2R1bG8oKSB7IHJldHVybiBtX3RyYW1wb2xpbmVTdHJ1
Y3R1cmUuY3RpU29mdE1vZHVsbzsgfQogCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBj
dGlTdHViKEpTR2xvYmFsRGF0YSosIFRodW5rR2VuZXJhdG9yKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnRzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50cy5jcHAJKHJldmlzaW9uIDEw
OTg1OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnRzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzksMTQgKzM5LDE0IEBAIHZvaWQgZ2V0RnVuY3Rpb25FbnRy
eXBvaW50KEpTR2xvYmFsRGF0YSYKIHsKICAgICBpZiAoIWdsb2JhbERhdGEuY2FuVXNlSklUKCkp
IHsKICAgICAgICAgaWYgKGtpbmQgPT0gQ29kZUZvckNhbGwpIHsKLSAgICAgICAgICAgIGppdENv
ZGUgPSBKSVRDb2RlOjpIb3N0RnVuY3Rpb24oTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVT
ZWxmTWFuYWdlZENvZGVSZWYoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKGJpdHdpc2VfY2FzdDx2b2lk
Kj4oJmxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlKSkpKTsKLSAgICAgICAgICAgIGFy
aXR5Q2hlY2sgPSBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoYml0d2lzZV9jYXN0PHZvaWQqPigmbGxp
bnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2spKTsKKyAgICAgICAgICAgIGppdENvZGUg
PSBKSVRDb2RlKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlTExJbnRDb2RlUmVmKGxsaW50
X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlKSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuayk7
CisgICAgICAgICAgICBhcml0eUNoZWNrID0gTWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpjcmVhdGVM
TEludENvZGVQdHIobGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2spOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgQVNTRVJUKGtpbmQgPT0gQ29kZUZv
ckNvbnN0cnVjdCk7Ci0gICAgICAgIGppdENvZGUgPSBKSVRDb2RlOjpIb3N0RnVuY3Rpb24oTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYoTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1
Y3RfcHJvbG9ndWUpKSkpOwotICAgICAgICBhcml0eUNoZWNrID0gTWFjcm9Bc3NlbWJsZXJDb2Rl
UHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJp
dHlfY2hlY2spKTsKKyAgICAgICAgaml0Q29kZSA9IEpJVENvZGUoTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmOjpjcmVhdGVMTEludENvZGVSZWYobGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9s
b2d1ZSksIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspOworICAgICAgICBhcml0eUNoZWNrID0g
TWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpjcmVhdGVMTEludENvZGVQdHIobGxpbnRfZnVuY3Rpb25f
Zm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjayk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAg
CkBAIC02NCw3ICs2NCw3IEBAIHZvaWQgZ2V0RnVuY3Rpb25FbnRyeXBvaW50KEpTR2xvYmFsRGF0
YSYKIHZvaWQgZ2V0RXZhbEVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKSVRD
b2RlJiBqaXRDb2RlKQogewogICAgIGlmICghZ2xvYmFsRGF0YS5jYW5Vc2VKSVQoKSkgewotICAg
ICAgICBqaXRDb2RlID0gSklUQ29kZTo6SG9zdEZ1bmN0aW9uKE1hY3JvQXNzZW1ibGVyQ29kZVJl
Zjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKE1hY3JvQXNzZW1ibGVyQ29kZVB0cihiaXR3aXNl
X2Nhc3Q8dm9pZCo+KCZsbGludF9ldmFsX3Byb2xvZ3VlKSkpKTsKKyAgICAgICAgaml0Q29kZSA9
IEpJVENvZGUoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVMTEludENvZGVSZWYobGxpbnRf
ZXZhbF9wcm9sb2d1ZSksIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspOwogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIApAQCAtNzQsNyArNzQsNyBAQCB2b2lkIGdldEV2YWxFbnRyeXBvaW50
KEpTR2xvYmFsRGF0YSYgZ2xvCiB2b2lkIGdldFByb2dyYW1FbnRyeXBvaW50KEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgSklUQ29kZSYgaml0Q29kZSkKIHsKICAgICBpZiAoIWdsb2JhbERhdGEu
Y2FuVXNlSklUKCkpIHsKLSAgICAgICAgaml0Q29kZSA9IEpJVENvZGU6Okhvc3RGdW5jdGlvbihN
YWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZihNYWNyb0Fzc2Vt
YmxlckNvZGVQdHIoYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSkp
KSk7CisgICAgICAgIGppdENvZGUgPSBKSVRDb2RlKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3Jl
YXRlTExJbnRDb2RlUmVmKGxsaW50X3Byb2dyYW1fcHJvbG9ndWUpLCBKSVRDb2RlOjpJbnRlcnBy
ZXRlclRodW5rKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkocmV2aXNpb24gMTA5
ODU4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTU3Niw2ICsxNTc2LDEzIEBAIExMSU5UX1NMT1dfUEFUSF9ERUNM
KHNsb3dfcGF0aF9wcm9maWxlX2QKICAgICBMTElOVF9FTkQoKTsKIH0KIAorTExJTlRfU0xPV19Q
QVRIX0RFQ0wodGhyb3dfZnJvbV9uYXRpdmVfY2FsbCkKK3sKKyAgICBMTElOVF9CRUdJTigpOwor
ICAgIEFTU0VSVChnbG9iYWxEYXRhLmV4Y2VwdGlvbik7CisgICAgTExJTlRfRU5EKCk7Cit9CisK
IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAogCiAjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgJKHJl
dmlzaW9uIDEwOTg1OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQ
YXRocy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjEsNiArMTYxLDcgQEAgTExJTlRfU0xPV19QQVRI
X0RFQ0woc2xvd19wYXRoX3Rocm93X3JlZgogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRo
X2RlYnVnKTsKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wcm9maWxlX3dpbGxfY2Fs
bCk7CiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHJvZmlsZV9kaWRfY2FsbCk7CitM
TElOVF9TTE9XX1BBVEhfREVDTCh0aHJvd19mcm9tX25hdGl2ZV9jYWxsKTsKIAogfSB9IC8vIG5h
bWVzcGFjZSBKU0M6OkxMSW50CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCShyZXZpc2lvbiAxMDk4
NTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMy
XzY0LmFzbQkod29ya2luZyBjb3B5KQpAQCAtMjMwMiw2ICsyMzAyLDUzIEBAIF9sbGludF90aHJv
d19kdXJpbmdfY2FsbF90cmFtcG9saW5lOgogICAgIGptcCBKU0dsb2JhbERhdGE6OnRhcmdldE1h
Y2hpbmVQQ0ZvclRocm93W3QxXQogCiAKK21hY3JvIG5hdGl2ZUNhbGxUcmFtcG9saW5lKGV4ZWN1
dGFibGVPZmZzZXRUb0Z1bmN0aW9uKQorICAgIHN0b3JlcCAwLCBDb2RlQmxvY2tbY2ZyXQorICAg
IGxvYWRwIENhbGxlckZyYW1lW2Nmcl0sIHQwCisgICAgbG9hZGkgU2NvcGVDaGFpbiArIFBheWxv
YWRPZmZzZXRbdDBdLCB0MQorICAgIHN0b3JlaSBDZWxsVGFnLCBTY29wZUNoYWluICsgVGFnT2Zm
c2V0W2Nmcl0KKyAgICBzdG9yZWkgdDEsIFNjb3BlQ2hhaW4gKyBQYXlsb2FkT2Zmc2V0W2Nmcl0K
KyAgICBpZiBYODYKKyAgICAgICAgcGVlayAwLCB0MQorICAgICAgICBzdG9yZXAgdDEsIFJldHVy
blBDW2Nmcl0KKyAgICAgICAgbW92ZSBjZnIsIHQyICAjIHQyID0gZWN4CisgICAgICAgIHN1YnAg
MTYgLSA0LCBzcAorICAgICAgICBsb2FkaSBDYWxsZWUgKyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIHQx
CisgICAgICAgIGxvYWRwIEpTRnVuY3Rpb246Om1fZXhlY3V0YWJsZVt0MV0sIHQxCisgICAgICAg
IG1vdmUgdDAsIGNmcgorICAgICAgICBjYWxsIGV4ZWN1dGFibGVPZmZzZXRUb0Z1bmN0aW9uW3Qx
XQorICAgICAgICBhZGRwIDE2IC0gNCwgc3AKKyAgICAgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6
Z2xvYmFsRGF0YSArIDRbc3BdLCB0MworICAgIGVsc2lmIEFSTXY3CisgICAgICAgIG1vdmUgdDAs
IHQyCisgICAgICAgIHByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbCh0MykKKyAgICAgICAg
c3RvcmVwIHQzLCBSZXR1cm5QQ1tjZnJdCisgICAgICAgIG1vdmUgY2ZyLCB0MAorICAgICAgICBs
b2FkaSBDYWxsZWUgKyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIHQxCisgICAgICAgIGxvYWRwIEpTRnVu
Y3Rpb246Om1fZXhlY3V0YWJsZVt0MV0sIHQxCisgICAgICAgIG1vdmUgdDIsIGNmcgorICAgICAg
ICBjYWxsIGV4ZWN1dGFibGVPZmZzZXRUb0Z1bmN0aW9uW3QxXQorICAgICAgICByZXN0b3JlUmV0
dXJuQWRkcmVzc0JlZm9yZVJldHVybih0MykKKyAgICAgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6
Z2xvYmFsRGF0YVtzcF0sIHQzCisgICAgZWxzZSAgCisgICAgICAgIGVycm9yCisgICAgZW5kCisg
ICAgYmluZXEgSlNHbG9iYWxEYXRhOjpleGNlcHRpb24gKyBUYWdPZmZzZXRbdDNdLCBFbXB0eVZh
bHVlVGFnLCAuZXhjZXB0aW9uCisgICAgcmV0CisuZXhjZXB0aW9uOgorICAgIHByZXNlcnZlUmV0
dXJuQWRkcmVzc0FmdGVyQ2FsbCh0MSkgIyBUaGlzIGlzIHJlYWxseSBvbmx5IG5lZWRlZCBvbiBY
ODYKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Rocm93X2Zyb21fbmF0aXZlX2NhbGwpCisgICAg
am1wIF9sbGludF90aHJvd19mcm9tX3Nsb3dfcGF0aF90cmFtcG9saW5lCitlbmQKKworX2xsaW50
X25hdGl2ZV9jYWxsX3RyYW1wb2xpbmU6CisgICAgbmF0aXZlQ2FsbFRyYW1wb2xpbmUoTmF0aXZl
RXhlY3V0YWJsZTo6bV9mdW5jdGlvbikKKworCitfbGxpbnRfbmF0aXZlX2NvbnN0cnVjdF90cmFt
cG9saW5lOgorICAgIG5hdGl2ZUNhbGxUcmFtcG9saW5lKE5hdGl2ZUV4ZWN1dGFibGU6Om1fY29u
c3RydWN0b3IpCisKKwogIyBMYXN0bHksIG1ha2Ugc3VyZSB0aGF0IHdlIGNhbiBsaW5rIGV2ZW4g
dGhvdWdoIHdlIGRvbid0IHN1cHBvcnQgYWxsIG9wY29kZXMuCiAjIFRoZXNlIG9wY29kZXMgc2hv
dWxkIG5ldmVyIGFyaXNlIHdoZW4gdXNpbmcgTExJbnQgb3IgZWl0aGVyIEpJVC4gV2UgYXNzZXJ0
CiAjIGFzIG11Y2guCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyLmgJKHJldmlzaW9uIDEwOTg1OCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4
LDYgKzQ4LDEwIEBAIGV4dGVybiAiQyIgdm9pZCBsbGludF9nZW5lcmljX3JldHVybl9wb2kKIGV4
dGVybiAiQyIgdm9pZCBsbGludF90aHJvd19mcm9tX3Nsb3dfcGF0aF90cmFtcG9saW5lKCk7CiBl
eHRlcm4gIkMiIHZvaWQgbGxpbnRfdGhyb3dfZHVyaW5nX2NhbGxfdHJhbXBvbGluZSgpOwogCisv
LyBOYXRpdmUgY2FsbCB0cmFtcG9saW5lcworZXh0ZXJuICJDIiB2b2lkIGxsaW50X25hdGl2ZV9j
YWxsX3RyYW1wb2xpbmUoKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9uYXRpdmVfY29uc3RydWN0
X3RyYW1wb2xpbmUoKTsKKwogI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKIAogI2VuZGlmIC8vIExv
d0xldmVsSW50ZXJwcmV0ZXJfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXhlY3V0YWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0V4ZWN1dGFibGUuaAkocmV2aXNpb24gMTA5ODU4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXhlY3V0YWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODAsMTMgKzE4MCwxNCBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIE5hdGl2ZUV4ZWN1dGFibGUgOiBwdWJsaWMg
RXhlY3V0YWJsZUJhc2UgewogICAgICAgICBmcmllbmQgY2xhc3MgSklUOworICAgICAgICBmcmll
bmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIHB1YmxpYzoKICAgICAgICAgdHlw
ZWRlZiBFeGVjdXRhYmxlQmFzZSBCYXNlOwogCiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgc3Rh
dGljIE5hdGl2ZUV4ZWN1dGFibGUqIGNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZiBjYWxsVGh1bmssIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBN
YWNyb0Fzc2VtYmxlckNvZGVSZWYgY29uc3RydWN0VGh1bmssIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0
cnVjdG9yLCBJbnRyaW5zaWMgaW50cmluc2ljKQogICAgICAgICB7Ci0gICAgICAgICAgICBBU1NF
UlQoZ2xvYmFsRGF0YS5jYW5Vc2VKSVQoKSk7CisgICAgICAgICAgICBBU1NFUlQoIWdsb2JhbERh
dGEuaW50ZXJwcmV0ZXItPmNsYXNzaWNFbmFibGVkKCkpOwogICAgICAgICAgICAgTmF0aXZlRXhl
Y3V0YWJsZSogZXhlY3V0YWJsZTsKICAgICAgICAgICAgIGlmICghY2FsbFRodW5rKSB7CiAgICAg
ICAgICAgICAgICAgZXhlY3V0YWJsZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPE5hdGl2
ZUV4ZWN1dGFibGU+KGdsb2JhbERhdGEuaGVhcCkpIE5hdGl2ZUV4ZWN1dGFibGUoZ2xvYmFsRGF0
YSwgZnVuY3Rpb24sIGNvbnN0cnVjdG9yKTsKQEAgLTIyOCw3ICsyMjksNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICNpZiBFTkFCTEUoSklUKQogICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgSklUQ29kZSBjYWxsVGh1bmssIEpJVENvZGUgY29uc3RydWN0
VGh1bmssIEludHJpbnNpYyBpbnRyaW5zaWMpCiAgICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VS
VChnbG9iYWxEYXRhLmNhblVzZUpJVCgpKTsKKyAgICAgICAgICAgIEFTU0VSVCghZ2xvYmFsRGF0
YS5pbnRlcnByZXRlci0+Y2xhc3NpY0VuYWJsZWQoKSk7CiAgICAgICAgICAgICBCYXNlOjpmaW5p
c2hDcmVhdGlvbihnbG9iYWxEYXRhKTsKICAgICAgICAgICAgIG1faml0Q29kZUZvckNhbGwgPSBj
YWxsVGh1bms7CiAgICAgICAgICAgICBtX2ppdENvZGVGb3JDb25zdHJ1Y3QgPSBjb25zdHJ1Y3RU
aHVuazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxE
YXRhLmNwcAkocmV2aXNpb24gMTA5ODU4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxEYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTkzLDcgKzE5Myw3IEBAIEpT
R2xvYmFsRGF0YTo6SlNHbG9iYWxEYXRhKEdsb2JhbERhdGFUeXAKIAogICAgIHd0ZlRocmVhZERh
dGEoKS5zZXRDdXJyZW50SWRlbnRpZmllclRhYmxlKGV4aXN0aW5nRW50cnlJZGVudGlmaWVyVGFi
bGUpOwogCi0jaWYgRU5BQkxFKEpJVCkgJiYgRU5BQkxFKENMQVNTSUNfSU5URVJQUkVURVIpCisj
aWYgRU5BQkxFKEpJVCkgJiYgKEVOQUJMRShDTEFTU0lDX0lOVEVSUFJFVEVSKSB8fCBFTkFCTEUo
TExJTlQpKQogI2lmIFVTRShDRikKICAgICBDRlN0cmluZ1JlZiBjYW5Vc2VKSVRLZXkgPSBDRlN0
cmluZ0NyZWF0ZVdpdGhDU3RyaW5nKDAgLCAiSmF2YVNjcmlwdENvcmVVc2VKSVQiLCBrQ0ZTdHJp
bmdFbmNvZGluZ01hY1JvbWFuKTsKICAgICBDRkJvb2xlYW5SZWYgY2FuVXNlSklUID0gKENGQm9v
bGVhblJlZilDRlByZWZlcmVuY2VzQ29weUFwcFZhbHVlKGNhblVzZUpJVEtleSwga0NGUHJlZmVy
ZW5jZXNDdXJyZW50QXBwbGljYXRpb24pOwpAQCAtMjEzLDEzICsyMTMsMTYgQEAgSlNHbG9iYWxE
YXRhOjpKU0dsb2JhbERhdGEoR2xvYmFsRGF0YVR5cAogI2VuZGlmCiAjZW5kaWYKICNpZiBFTkFC
TEUoSklUKQotI2lmIEVOQUJMRShDTEFTU0lDX0lOVEVSUFJFVEVSKQorI2lmIEVOQUJMRShDTEFT
U0lDX0lOVEVSUFJFVEVSKSB8fCBFTkFCTEUoTExJTlQpCiAgICAgaWYgKG1fY2FuVXNlSklUKQog
ICAgICAgICBtX2NhblVzZUpJVCA9IGV4ZWN1dGFibGVBbGxvY2F0b3IuaXNWYWxpZCgpOworICAg
IAorICAgIGlmICghT3B0aW9uczo6dXNlSklUKQorICAgICAgICBtX2NhblVzZUpJVCA9IGZhbHNl
OwogI2VuZGlmCiAgICAgaml0U3R1YnMgPSBhZG9wdFB0cihuZXcgSklUVGh1bmtzKHRoaXMpKTsK
ICNlbmRpZgotCisgICAgCiAgICAgaW50ZXJwcmV0ZXItPmluaXRpYWxpemUoJmxsaW50RGF0YSwg
dGhpcy0+Y2FuVXNlSklUKCkpOwogICAgIAogICAgIGluaXRpYWxpemVIb3N0Q2FsbFJldHVyblZh
bHVlKCk7IC8vIFRoaXMgaXMgbmVlZGVkIHRvIGNvbnZpbmNlIHRoZSBsaW5rZXIgbm90IHRvIGRy
b3AgaG9zdCBjYWxsIHJldHVybiBzdXBwb3J0LgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgJKHJldmlzaW9uIDEwOTg1OCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
MzEsNyArMjMxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICNpZiAhRU5BQkxFKEpJVCkKICAgICAg
ICAgYm9vbCBjYW5Vc2VKSVQoKSB7IHJldHVybiBmYWxzZTsgfSAvLyBpbnRlcnByZXRlciBvbmx5
Ci0jZWxpZiAhRU5BQkxFKENMQVNTSUNfSU5URVJQUkVURVIpCisjZWxpZiAhRU5BQkxFKENMQVNT
SUNfSU5URVJQUkVURVIpICYmICFFTkFCTEUoTExJTlQpCiAgICAgICAgIGJvb2wgY2FuVXNlSklU
KCkgeyByZXR1cm4gdHJ1ZTsgfSAvLyBqaXQgb25seQogI2Vsc2UKICAgICAgICAgYm9vbCBjYW5V
c2VKSVQoKSB7IHJldHVybiBtX2NhblVzZUpJVDsgfQpAQCAtMzY5LDcgKzM2OSw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBKU0dsb2JhbERhdGEoR2xvYmFsRGF0YVR5cGUsIFRocmVhZFN0
YWNrVHlwZSwgSGVhcFNpemUpOwogICAgICAgICBzdGF0aWMgSlNHbG9iYWxEYXRhKiYgc2hhcmVk
SW5zdGFuY2VJbnRlcm5hbCgpOwogICAgICAgICB2b2lkIGNyZWF0ZU5hdGl2ZVRodW5rKCk7Ci0j
aWYgRU5BQkxFKEpJVCkgJiYgRU5BQkxFKENMQVNTSUNfSU5URVJQUkVURVIpCisjaWYgRU5BQkxF
KEpJVCkgJiYgKEVOQUJMRShDTEFTU0lDX0lOVEVSUFJFVEVSKSB8fCBFTkFCTEUoTExJTlQpKQog
ICAgICAgICBib29sIG1fY2FuVXNlSklUOwogI2VuZGlmCiAjaWYgRU5BQkxFKEdDX1ZBTElEQVRJ
T04pCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAkocmV2
aXNpb24gMTA5ODU4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDggQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBPcHRpb25zIHsKIAorYm9vbCB1c2VKSVQ7CisKIHVuc2lnbmVkIG1heGltdW1PcHRp
bWl6YXRpb25DYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50OwogCiB1bnNpZ25lZCBtYXhpbXVtRnVu
Y3Rpb25Gb3JDYWxsSW5saW5lQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudDsKQEAgLTkzLDYgKzk1
LDE5IEBAIHVuc2lnbmVkIG51bWJlck9mR0NNYXJrZXJzOwogdW5zaWduZWQgb3BhcXVlUm9vdE1l
cmdlVGhyZXNob2xkOwogCiAjaWYgRU5BQkxFKFJVTl9USU1FX0hFVVJJU1RJQ1MpCitzdGF0aWMg
Ym9vbCBwYXJzZShjb25zdCBjaGFyKiBzdHJpbmcsIGJvb2wmIHZhbHVlKQoreworICAgIGlmICgh
c3RyY2FzZWNtcChzdHJpbmcsICJ0cnVlIikgfHwgIXN0cmNhc2VjbXAoc3RyaW5nLCAieWVzIikg
fHwgIXN0cmNtcChzdHJpbmcsICIxIikpIHsKKyAgICAgICAgdmFsdWUgPSB0cnVlOworICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgaWYgKCFzdHJjYXNlY21wKHN0cmluZywgImZhbHNl
IikgfHwgIXN0cmNhc2VjbXAoc3RyaW5nLCAibm8iKSB8fCAhc3RyY21wKHN0cmluZywgIjAiKSkg
eworICAgICAgICB2YWx1ZSA9IGZhbHNlOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9Cisg
ICAgcmV0dXJuIGZhbHNlOworfQorCiBzdGF0aWMgYm9vbCBwYXJzZShjb25zdCBjaGFyKiBzdHJp
bmcsIGludDMyX3QmIHZhbHVlKQogewogICAgIHJldHVybiBzc2NhbmYoc3RyaW5nLCAiJWQiLCAm
dmFsdWUpID09IDE7CkBAIC0xMzEsNiArMTQ2LDggQEAgdm9pZCBzZXRIZXVyaXN0aWMoVCYgdmFy
aWFibGUsIGNvbnN0IGNoYQogCiB2b2lkIGluaXRpYWxpemVPcHRpb25zKCkKIHsKKyAgICBTRVQo
dXNlSklULCBmYWxzZSk7CisgICAgCiAgICAgU0VUKG1heGltdW1PcHRpbWl6YXRpb25DYW5kaWRh
dGVJbnN0cnVjdGlvbkNvdW50LCAxMTAwKTsKICAgICAKICAgICBTRVQobWF4aW11bUZ1bmN0aW9u
Rm9yQ2FsbElubGluZUNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQsIDE4MCk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCShyZXZpc2lvbiAxMDk4NTgpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAg
LTMwLDYgKzMwLDggQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBPcHRpb25zIHsKIAor
ZXh0ZXJuIGJvb2wgdXNlSklUOworCiBleHRlcm4gdW5zaWduZWQgbWF4aW11bU9wdGltaXphdGlv
bkNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQ7CiAKIGV4dGVybiB1bnNpZ25lZCBtYXhpbXVtRnVu
Y3Rpb25Gb3JDYWxsSW5saW5lQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudDsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgJKHJldmlzaW9uIDEwOTg1OCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAkod29ya2luZyBjb3B5KQpAQCAtNjEwLDggKzYx
MCw5IEBACiAgICAgI2RlZmluZSBFTkFCTEVfSklUIDAKICAgICAjZGVmaW5lIEVOQUJMRV9ZQVJS
X0pJVCAwCiAjZWxzZQotICAgICNkZWZpbmUgRU5BQkxFX0NMQVNTSUNfSU5URVJQUkVURVIgMQor
ICAgICNkZWZpbmUgRU5BQkxFX0NMQVNTSUNfSU5URVJQUkVURVIgMAogICAgICNkZWZpbmUgRU5B
QkxFX0pJVCAxCisgICAgI2RlZmluZSBFTkFCTEVfTExJTlQgMQogICAgICNkZWZpbmUgRU5BQkxF
X1lBUlJfSklUIDEKICNlbmRpZgogCg==
</data>
<flag name="review"
          id="133259"
          type_id="1"
          status="-"
          setter="fpizlo"
    />
          </attachment>
      

    </bug>

</bugzilla>