<?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>111497</bug_id>
          
          <creation_ts>2013-03-05 16:41:44 -0800</creation_ts>
          <short_desc>Bring back eager resolution of function scoped variables</short_desc>
          <delta_ts>2013-03-06 16:27:19 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Oliver Hunt">oliver</reporter>
          <assigned_to name="Oliver Hunt">oliver</assigned_to>
          <cc>buildbot</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>848246</commentid>
    <comment_count>0</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-03-05 16:41:44 -0800</bug_when>
    <thetext>Bring back eager resolution of function scoped variables</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>848255</commentid>
    <comment_count>1</comment_count>
      <attachid>191603</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-03-05 16:50:10 -0800</bug_when>
    <thetext>Created attachment 191603
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>848258</commentid>
    <comment_count>2</comment_count>
      <attachid>191604</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-03-05 16:51:06 -0800</bug_when>
    <thetext>Created attachment 191604
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>848871</commentid>
    <comment_count>3</comment_count>
      <attachid>191604</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-03-06 08:05:07 -0800</bug_when>
    <thetext>Comment on attachment 191604
Patch

Attachment 191604 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-commit-queue.appspot.com/results/17079093

New failing tests:
fast/js/dfg-int32-to-double-on-known-number.html
fast/workers/shared-worker-frame-lifecycle.html
fast/js/dfg-cse-cfa-discrepancy.html
fast/frames/take-focus-from-iframe.html
fast/workers/dedicated-worker-lifecycle.html
fast/js/dfg-obvious-constant-cfa.html
fast/js/regress/inline-get-scoped-var.html
jquery/attributes.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849017</commentid>
    <comment_count>4</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-03-06 10:20:01 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 191604 [details])
&gt; Attachment 191604 [details] did not pass mac-wk2-ews (mac-wk2):
&gt; Output: http://webkit-commit-queue.appspot.com/results/17079093
&gt; 
&gt; New failing tests:
&gt; fast/js/dfg-int32-to-double-on-known-number.html
&gt; fast/workers/shared-worker-frame-lifecycle.html
&gt; fast/js/dfg-cse-cfa-discrepancy.html
&gt; fast/frames/take-focus-from-iframe.html
&gt; fast/workers/dedicated-worker-lifecycle.html
&gt; fast/js/dfg-obvious-constant-cfa.html
&gt; fast/js/regress/inline-get-scoped-var.html
&gt; jquery/attributes.html

wk2 is a 64bit bot right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849104</commentid>
    <comment_count>5</comment_count>
      <attachid>191604</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-03-06 11:13:21 -0800</bug_when>
    <thetext>Comment on attachment 191604
Patch

Attachment 191604 did not pass mac-ews (mac):
Output: http://webkit-commit-queue.appspot.com/results/17066104

New failing tests:
fast/js/dfg-int32-to-double-on-known-number.html
fast/workers/shared-worker-frame-lifecycle.html
fast/js/dfg-cse-cfa-discrepancy.html
jquery/attributes.html
fast/js/dfg-obvious-constant-cfa.html
fast/js/regress/inline-get-scoped-var.html
http/tests/workers/terminate-during-sync-operation.html
fast/workers/dedicated-worker-lifecycle.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849128</commentid>
    <comment_count>6</comment_count>
      <attachid>191604</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-03-06 11:32:15 -0800</bug_when>
    <thetext>Comment on attachment 191604
Patch

r-&apos;ing until i work out wtf is happening to the mac bots</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849177</commentid>
    <comment_count>7</comment_count>
      <attachid>191809</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-03-06 12:18:33 -0800</bug_when>
    <thetext>Created attachment 191809
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849386</commentid>
    <comment_count>8</comment_count>
      <attachid>191809</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-03-06 15:49:11 -0800</bug_when>
    <thetext>Comment on attachment 191809
Patch

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

What&apos;s the performance result here?

&gt; Source/JavaScriptCore/bytecode/CodeBlock.cpp:1944
&gt; +#if ENABLE(DFG_JIT)

I believe this should be ENABLE(VALUE_PROFILING).

&gt; Source/JavaScriptCore/bytecode/CodeBlock.h:1158
&gt; +        bool m_needsFullScopeChain;

Let&apos;s call this m_needsActivation.

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:241
&gt; +    , m_globalObjectRegister(0)

Can we use -1 as the default value in the bytecode generator, to match the code block?

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:1280
&gt; +    size_t depthOfFirstScopeWithDynamicChecks = 0;

I believe this value is wrong if the current scope needsActivation(), since there isn&apos;t any code that adds 1 in that case.

Actually, let&apos;s just remove this, since it&apos;s unused.

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:1294
&gt; +            depth += m_codeBlock-&gt;needsFullScopeChain();

I think it would be clearer to initialize &apos;depth&apos; to 0 or 1 based on needsActivation(), rather than adding 1 in at the end. That way, depth is always consistent with the depth you&apos;ll see at runtime.

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:1296
&gt; +                // Global scope

This comment would be better if it explained why global scope forces a dynamic resolve. I&apos;m not sure, from reading this, why it should.

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:1307
&gt; +            break;

I think this would be clearer as an early  return, like you used in other places in the function.

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:1310
&gt; +        if (!(flags &amp; ResolveResult::DynamicFlag)) {
&gt; +            if (scopeRequiresDynamicChecks)
&gt; +                flags |= ResolveResult::DynamicFlag;

Can this |= just be unconditional? I think that would be clearer.

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:1375
&gt; +        // Global object is the base

I don&apos;t think this comment adds anything over the code below it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849433</commentid>
    <comment_count>9</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-03-06 16:27:19 -0800</bug_when>
    <thetext>Committed r145000: &lt;http://trac.webkit.org/changeset/145000&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191603</attachid>
            <date>2013-03-05 16:50:10 -0800</date>
            <delta_ts>2013-03-05 16:51:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111497-20130305164616.patch</filename>
            <type>text/plain</type>
            <size>65125</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0ODQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
NTc0ZmM4ODk3Y2NmYzM0NWI2MTk1YjViMzEyOGY3NzdmOThiZDVjLi4zNmI5ZDc1ZTBlYjA1MmQy
N2UwM2VhZWNkMTA3OTU5YWNkOTkxNjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDQgQEAKKzIwMTMtMDMtMDUgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4K
KworICAgICAgICBCcmluZyBiYWNrIGVhZ2VyIHJlc29sdXRpb24gb2YgZnVuY3Rpb24gc2NvcGVk
IHZhcmlhYmxlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTExNDk3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhpcyByZXZlcnRzIHRoZSBnZXQvcHV0X3Njb3BlZF92YXIgcGFydCBvZiB0aGUgZ3JlYXQg
bm9uLWxvY2FsCisgICAgICAgIHZhcmlhYmxlIHJlc29sdXRpb24gcmVmYWN0b3JpbmcuICBUaGlz
IHN0aWxsIGxlYXZlcyBhbGwgdGhlIGxhenkKKyAgICAgICAgdmFyaWFibGUgcmVzb2x1dGlvbiBs
b2dpYyBhcyBpdCdzIG5lY2Vzc2FyeSBmb3IgZ2xvYmFsIHByb3BlcnR5CisgICAgICAgIHJlc29s
dXRpb24sIGFuZCBpIGRvbid0IHdhbnQgdG8gbWFrZSB0aGUgcGF0Y2ggYmlnZ2VyIHRoYW4gaXQK
KyAgICAgICAgYWxyZWFkeSBpcy4KKworICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6
CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6
Q29kZUJsb2NrOjpDb2RlQmxvY2spOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgor
ICAgICAgICAoQ29kZUJsb2NrKToKKyAgICAgICAgKiBieXRlY29kZS9PcGNvZGUuaDoKKyAgICAg
ICAgKEpTQyk6CisgICAgICAgIChKU0M6OnBhZE9wY29kZU5hbWUpOgorICAgICAgICAqIGJ5dGVj
b2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Z2VuZXJhdGVGdW5jdGlv
bkNvZGVCbG9jayk6CisgICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpj
b2RlQmxvY2tGb3IpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRD
b2RlQmxvY2spOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmg6CisgICAg
ICAgIChKU0MpOgorICAgICAgICAoVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUpOgorICAgICAg
ICAoVW5saW5rZWRDb2RlQmxvY2spOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6
dXNlc0dsb2JhbE9iamVjdCk6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpzZXRH
bG9iYWxPYmplY3RSZWdpc3Rlcik6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpn
bG9iYWxPYmplY3RSZWdpc3Rlcik6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6UmVzb2x2ZVJlc3VsdDo6Y2hlY2tWYWxpZGl0eSk6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TG9hZEdsb2JhbE9iamVjdCk6Cisg
ICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6cmVzb2x2ZSk6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpyZXNvbHZlQ29uc3REZWNsKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbHZlKToKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbHZlQmFzZSk6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2x2ZUJhc2VGb3JQdXQpOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc29sdmVXaXRoQmFzZUZvclB1dCk6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2x2ZVdpdGhUaGlzKToKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRTdGF0aWNWYXIpOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dFN0YXRpY1Zhcik6CisgICAgICAgICogYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OlJlc29sdmVSZXN1bHQ6Omxl
eGljYWxSZXNvbHZlKToKKyAgICAgICAgKEpTQzo6UmVzb2x2ZVJlc3VsdDo6aXNTdGF0aWMpOgor
ICAgICAgICAoSlNDOjpSZXNvbHZlUmVzdWx0OjpkZXB0aCk6CisgICAgICAgIChKU0M6OlJlc29s
dmVSZXN1bHQ6OmluZGV4KToKKyAgICAgICAgKFJlc29sdmVSZXN1bHQpOgorICAgICAgICAoSlND
OjpSZXNvbHZlUmVzdWx0OjpSZXNvbHZlUmVzdWx0KToKKyAgICAgICAgKEJ5dGVjb2RlR2VuZXJh
dG9yKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAg
KEpTQzo6UmVzb2x2ZU5vZGU6OmlzUHVyZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQ2FsbFJl
c29sdmVOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpQb3N0Zml4Tm9kZTo6ZW1p
dFJlc29sdmUpOgorICAgICAgICAoSlNDOjpUeXBlT2ZSZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjb2Rl
KToKKyAgICAgICAgKEpTQzo6UHJlZml4Tm9kZTo6ZW1pdFJlc29sdmUpOgorICAgICAgICAoSlND
OjpSZWFkTW9kaWZ5UmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkFz
c2lnblJlc29sdmVOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpDb25zdERlY2xO
b2RlOjplbWl0Q29kZVNpbmdsZSk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAg
ICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6ZGVidWdG
YWlsKToKKyAgICAgICAgKiBkZmcvREZHQ2FwYWJpbGl0aWVzLmg6CisgICAgICAgIChKU0M6OkRG
Rzo6Y2FuQ29tcGlsZU9wY29kZSk6CisgICAgICAgIChKU0M6OkRGRzo6Y2FuSW5saW5lT3Bjb2Rl
KToKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29t
cGlsZU1haW5QYXNzKToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAgIChKSVQpOgorICAg
ICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dF9vcF9nZXRfc2NvcGVkX3Zhcik6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3BfcHV0X3Njb3BlZF92YXIpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vz
czMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9zY29wZWRfdmFyKToK
KyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfc2NvcGVkX3Zh
cik6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAgICAg
ICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAqIHJ1bnRpbWUv
Q29kZUNhY2hlLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUNhY2hlOjpnZXRDb2RlQmxvY2spOgor
ICAgICAgICAoSlNDOjpDb2RlQ2FjaGU6OmdldFByb2dyYW1Db2RlQmxvY2spOgorICAgICAgICAo
SlNDOjpDb2RlQ2FjaGU6OmdldEV2YWxDb2RlQmxvY2spOgorICAgICAgICAqIHJ1bnRpbWUvQ29k
ZUNhY2hlLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoQ29kZUNhY2hlKToKKyAgICAgICAg
KiBydW50aW1lL0V4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpFdmFsRXhlY3V0YWJsZTo6
Y29tcGlsZUludGVybmFsKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpwcm9k
dWNlQ29kZUJsb2NrRm9yKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoK
KyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmNyZWF0ZUV2YWxDb2RlQmxvY2spOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTR2xvYmFsT2JqZWN0
KToKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpPcHRpb25z
Ojppbml0aWFsaXplKToKKwogMjAxMy0wMy0wNSAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJl
cmdAYXBwbGUuY29tPgogCiAgICAgICAgIE9iamVjdGl2ZS1DIEFQSTogSlNWYWx1ZSBzaG91bGQg
aW1wbGVtZW50IGluaXQgYW5kIHJldHVybiBuaWwgaW4gZXhjZXB0aW9uYWwgY2FzZXMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXggOTc0YTA0YmEx
ZjRjZTNhMWMyZjY2NjJmOTg0M2RlMWQ2Y2JlZmRjYy4uOWYxYWZjMTIyMTk3ZWQ1ZWM0ZWNjZTZj
Y2Y1M2U5YjY0ZjAwMWZlMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5jcHAKQEAgLTk4MCw2ICs5ODAsMjEgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRl
Y29kZShQcmludFN0cmVhbSYgb3V0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEluc3RydWN0aW8K
ICAgICAgICAgICAgIGR1bXBWYWx1ZVByb2ZpbGluZyhvdXQsIGl0LCBoYXNQcmludGVkUHJvZmls
aW5nKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAgICAgIGNhc2Ugb3BfZ2V0
X3Njb3BlZF92YXI6IHsKKyAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwor
ICAgICAgICAgICAgaW50IGluZGV4ID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBp
bnQgc2tpcExldmVscyA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgb3V0LnByaW50
ZigiWyU0ZF0gZ2V0X3Njb3BlZF92YXJcdCAlcywgJWQsICVkIiwgbG9jYXRpb24sIHJlZ2lzdGVy
TmFtZShleGVjLCByMCkuZGF0YSgpLCBpbmRleCwgc2tpcExldmVscyk7CisgICAgICAgICAgICBk
dW1wVmFsdWVQcm9maWxpbmcob3V0LCBpdCwgaGFzUHJpbnRlZFByb2ZpbGluZyk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIG9wX3B1dF9zY29wZWRfdmFyOiB7
CisgICAgICAgICAgICBpbnQgaW5kZXggPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAg
IGludCBza2lwTGV2ZWxzID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBpbnQgcjAg
PSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIG91dC5wcmludGYoIlslNGRdIHB1dF9z
Y29wZWRfdmFyXHQgJWQsICVkLCAlcyIsIGxvY2F0aW9uLCBpbmRleCwgc2tpcExldmVscywgcmVn
aXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KICAgICAgICAgY2FzZSBvcF9pbml0X2dsb2JhbF9jb25zdF9ub3A6IHsKICAgICAgICAgICAg
IG91dC5wcmludGYoIlslNGRdIGluaXRfZ2xvYmFsX2NvbnN0X25vcFx0IiwgbG9jYXRpb24pOwog
ICAgICAgICAgICAgaXQrKzsKQEAgLTE2NDQsOCArMTY1OSwxMCBAQCBDb2RlQmxvY2s6OkNvZGVC
bG9jayhDb3B5UGFyc2VkQmxvY2tUYWcsIENvZGVCbG9jayYgb3RoZXIpCiAgICAgLCBtX2FyZ3Vt
ZW50c1JlZ2lzdGVyKG90aGVyLm1fYXJndW1lbnRzUmVnaXN0ZXIpCiAgICAgLCBtX2FjdGl2YXRp
b25SZWdpc3RlcihvdGhlci5tX2FjdGl2YXRpb25SZWdpc3RlcikKICAgICAsIG1faXNTdHJpY3RN
b2RlKG90aGVyLm1faXNTdHJpY3RNb2RlKQorICAgICwgbV9uZWVkc0Z1bGxTY29wZUNoYWluKG90
aGVyLm1fbmVlZHNGdWxsU2NvcGVDaGFpbikKICAgICAsIG1fc291cmNlKG90aGVyLm1fc291cmNl
KQogICAgICwgbV9zb3VyY2VPZmZzZXQob3RoZXIubV9zb3VyY2VPZmZzZXQpCisgICAgLCBtX2Nv
ZGVUeXBlKG90aGVyLm1fY29kZVR5cGUpCiAgICAgLCBtX2lkZW50aWZpZXJzKG90aGVyLm1faWRl
bnRpZmllcnMpCiAgICAgLCBtX2NvbnN0YW50UmVnaXN0ZXJzKG90aGVyLm1fY29uc3RhbnRSZWdp
c3RlcnMpCiAgICAgLCBtX2Z1bmN0aW9uRGVjbHMob3RoZXIubV9mdW5jdGlvbkRlY2xzKQpAQCAt
MTY4Nyw4ICsxNzA0LDEwIEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKFNjcmlwdEV4ZWN1dGFibGUq
IG93bmVyRXhlY3V0YWJsZSwgVW5saW5rZWRDb2RlQmxvY2sqIHVubGluCiAgICAgLCBtX2FyZ3Vt
ZW50c1JlZ2lzdGVyKHVubGlua2VkQ29kZUJsb2NrLT5hcmd1bWVudHNSZWdpc3RlcigpKQogICAg
ICwgbV9hY3RpdmF0aW9uUmVnaXN0ZXIodW5saW5rZWRDb2RlQmxvY2stPmFjdGl2YXRpb25SZWdp
c3RlcigpKQogICAgICwgbV9pc1N0cmljdE1vZGUodW5saW5rZWRDb2RlQmxvY2stPmlzU3RyaWN0
TW9kZSgpKQorICAgICwgbV9uZWVkc0Z1bGxTY29wZUNoYWluKHVubGlua2VkQ29kZUJsb2NrLT5u
ZWVkc0Z1bGxTY29wZUNoYWluKCkpCiAgICAgLCBtX3NvdXJjZShzb3VyY2VQcm92aWRlcikKICAg
ICAsIG1fc291cmNlT2Zmc2V0KHNvdXJjZU9mZnNldCkKKyAgICAsIG1fY29kZVR5cGUodW5saW5r
ZWRDb2RlQmxvY2stPmNvZGVUeXBlKCkpCiAgICAgLCBtX2FsdGVybmF0aXZlKGFsdGVybmF0aXZl
KQogICAgICwgbV9vc3JFeGl0Q291bnRlcigwKQogICAgICwgbV9vcHRpbWl6YXRpb25EZWxheUNv
dW50ZXIoMCkKQEAgLTE3MDQsNyArMTcyMyw4IEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKFNjcmlw
dEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rZWRDb2RlQmxvY2sqIHVubGluCiAj
ZW5kaWYKICAgICBzZXRJZGVudGlmaWVycyh1bmxpbmtlZENvZGVCbG9jay0+aWRlbnRpZmllcnMo
KSk7CiAgICAgc2V0Q29uc3RhbnRSZWdpc3RlcnModW5saW5rZWRDb2RlQmxvY2stPmNvbnN0YW50
UmVnaXN0ZXJzKCkpOwotCisgICAgaWYgKHVubGlua2VkQ29kZUJsb2NrLT51c2VzR2xvYmFsT2Jq
ZWN0KCkpCisgICAgICAgIG1fY29uc3RhbnRSZWdpc3RlcnNbdW5saW5rZWRDb2RlQmxvY2stPmds
b2JhbE9iamVjdFJlZ2lzdGVyKCldLnNldCgqbV9nbG9iYWxEYXRhLCBvd25lckV4ZWN1dGFibGUs
IGdsb2JhbE9iamVjdCk7CiAgICAgbV9mdW5jdGlvbkRlY2xzLmdyb3codW5saW5rZWRDb2RlQmxv
Y2stPm51bWJlck9mRnVuY3Rpb25EZWNscygpKTsKICAgICBmb3IgKHNpemVfdCBjb3VudCA9IHVu
bGlua2VkQ29kZUJsb2NrLT5udW1iZXJPZkZ1bmN0aW9uRGVjbHMoKSwgaSA9IDA7IGkgPCBjb3Vu
dDsgKytpKSB7CiAgICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiB1bmxpbmtlZEV4
ZWN1dGFibGUgPSB1bmxpbmtlZENvZGVCbG9jay0+ZnVuY3Rpb25EZWNsKGkpOwpAQCAtMTkyMCw2
ICsxOTQwLDE2IEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKFNjcmlwdEV4ZWN1dGFibGUqIG93bmVy
RXhlY3V0YWJsZSwgVW5saW5rZWRDb2RlQmxvY2sqIHVubGluCiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogCisgICAgICAgIGNhc2Ugb3BfZ2V0X3Njb3BlZF92YXI6IHsKKyNpZiBFTkFC
TEUoREZHX0pJVCkKKyAgICAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9ICZtX3ZhbHVl
UHJvZmlsZXNbcGNbaSArIG9wTGVuZ3RoIC0gMV0udS5vcGVyYW5kXTsKKyAgICAgICAgICAgIEFT
U0VSVChwcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0ID09IC0xKTsKKyAgICAgICAgICAgIHByb2Zp
bGUtPm1fYnl0ZWNvZGVPZmZzZXQgPSBpOworICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyBv
cExlbmd0aCAtIDFdID0gcHJvZmlsZTsKKyNlbmRpZgorICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKwogICAgICAgICBjYXNlIG9wX2NhbGw6CiAgICAgICAgIGNhc2Ugb3BfY2FsbF9ldmFs
OiB7CiAjaWYgRU5BQkxFKERGR19KSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmgKaW5kZXggZThlM2U3Zjg3MmIwMDQwYjA3MzQyNzJkMDQ2NDE0NDc5NjFlMTYy
Yy4uNTc1ZGY3ZGViYzI4YjJlZjU2YTFkYmIzZjM1MWVlMmQwNzM2YTU4MSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaApAQCAtNTMyLDcgKzUzMiw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gbmVlZHNGdWxsU2Nv
cGVDaGFpbigpICYmIGNvZGVUeXBlKCkgIT0gR2xvYmFsQ29kZTsKICAgICAgICAgfQotICAgICAg
ICAKKwogICAgICAgICBib29sIGlzQ2FwdHVyZWQoaW50IG9wZXJhbmQsIElubGluZUNhbGxGcmFt
ZSogaW5saW5lQ2FsbEZyYW1lID0gMCkgY29uc3QKICAgICAgICAgewogICAgICAgICAgICAgaWYg
KG9wZXJhbmRJc0FyZ3VtZW50KG9wZXJhbmQpKQpAQCAtMTE1NSw5ICsxMTU1LDExIEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBpbnQgbV9hY3RpdmF0aW9uUmVnaXN0ZXI7CiAKICAgICAgICAg
Ym9vbCBtX2lzU3RyaWN0TW9kZTsKKyAgICAgICAgYm9vbCBtX25lZWRzRnVsbFNjb3BlQ2hhaW47
CiAKICAgICAgICAgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiBtX3NvdXJjZTsKICAgICAgICAgdW5z
aWduZWQgbV9zb3VyY2VPZmZzZXQ7CisgICAgICAgIHVuc2lnbmVkIG1fY29kZVR5cGU7CiAKICNp
ZiBFTkFCTEUoTExJTlQpCiAgICAgICAgIFNlZ21lbnRlZFZlY3RvcjxMTEludENhbGxMaW5rSW5m
bywgOD4gbV9sbGludENhbGxMaW5rSW5mb3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
T3Bjb2RlLmgKaW5kZXggYzkxN2UwN2JlMDc4MzIzMTJlOWQyMDk4OWU5YjYwY2FjNTJjYWUzNC4u
NTQ0MTRjMzVmOGQyMzUwMmY5ZDcxYjg0MDNmNDUyMmMwM2IzZDgxMiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaApAQCAtOTcsNiArOTcsOSBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICBtYWNybyhvcF9pc19mdW5jdGlvbiwgMykgXAogICAgIG1hY3JvKG9wX2luLCA0KSBc
CiAgICAgXAorICAgIG1hY3JvKG9wX2dldF9zY29wZWRfdmFyLCA1KSAvKiBoYXMgdmFsdWUgcHJv
ZmlsaW5nICovIFwKKyAgICBtYWNybyhvcF9wdXRfc2NvcGVkX3ZhciwgNCkgXAorICAgIFwKICAg
ICBtYWNybyhvcF9yZXNvbHZlLCA1KSAvKiBoYXMgdmFsdWUgcHJvZmlsaW5nICovICBcCiAgICAg
bWFjcm8ob3BfcmVzb2x2ZV9nbG9iYWxfcHJvcGVydHksIDUpIC8qIGhhcyB2YWx1ZSBwcm9maWxp
bmcgKi8gIFwKICAgICBtYWNybyhvcF9yZXNvbHZlX2dsb2JhbF92YXIsIDUpIC8qIGhhcyB2YWx1
ZSBwcm9maWxpbmcgKi8gIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCmluZGV4IGU5MWYxMzg0MzkwMmJiZDgzMGIwZWRjNjFh
MjZlMDZlZDg4YTcyNTQuLmNkMDM2YmRhOTVhNjk2ZTJiMzIxYWZhNjQ5YzY0NWI1OTE4YmMzYmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVC
bG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrLmNwcApAQCAtNDcsNyArNDcsNyBAQCBjb25zdCBDbGFzc0luZm8gVW5saW5rZWRQcm9n
cmFtQ29kZUJsb2NrOjpzX2luZm8gPSB7ICJVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2siLAogY29u
c3QgQ2xhc3NJbmZvIFVubGlua2VkRXZhbENvZGVCbG9jazo6c19pbmZvID0geyAiVW5saW5rZWRF
dmFsQ29kZUJsb2NrIiwgJkJhc2U6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShV
bmxpbmtlZEV2YWxDb2RlQmxvY2spIH07CiBjb25zdCBDbGFzc0luZm8gVW5saW5rZWRGdW5jdGlv
bkNvZGVCbG9jazo6c19pbmZvID0geyAiVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayIsICZCYXNl
OjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoVW5saW5rZWRGdW5jdGlvbkNvZGVC
bG9jaykgfTsKIAotc3RhdGljIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGdlbmVyYXRlRnVu
Y3Rpb25Db2RlQmxvY2soSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlU3Bl
Y2lhbGl6YXRpb25LaW5kIGtpbmQsIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVy
TW9kZSBwcm9maWxlck1vZGUsIFBhcnNlckVycm9yJiBlcnJvcikKK3N0YXRpYyBVbmxpbmtlZEZ1
bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZUZ1bmN0aW9uQ29kZUJsb2NrKEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgSlNTY29wZSogc2NvcGUsIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBl
eGVjdXRhYmxlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIENvZGVTcGVjaWFsaXphdGlvbktp
bmQga2luZCwgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlIHByb2ZpbGVy
TW9kZSwgUGFyc2VyRXJyb3ImIGVycm9yKQogewogICAgIFJlZlB0cjxGdW5jdGlvbkJvZHlOb2Rl
PiBib2R5ID0gcGFyc2U8RnVuY3Rpb25Cb2R5Tm9kZT4oJmdsb2JhbERhdGEsIHNvdXJjZSwgZXhl
Y3V0YWJsZS0+cGFyYW1ldGVycygpLCBleGVjdXRhYmxlLT5uYW1lKCksIGV4ZWN1dGFibGUtPmlz
SW5TdHJpY3RDb250ZXh0KCkgPyBKU1BhcnNlU3RyaWN0IDogSlNQYXJzZU5vcm1hbCwgSlNQYXJz
ZUZ1bmN0aW9uQ29kZSwgZXJyb3IpOwogCkBAIC02Miw3ICs2Miw3IEBAIHN0YXRpYyBVbmxpbmtl
ZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZUZ1bmN0aW9uQ29kZUJsb2NrKEpTR2xvYmFsRGF0
YSYgZ2xvYmFsCiAgICAgZXhlY3V0YWJsZS0+cmVjb3JkUGFyc2UoYm9keS0+ZmVhdHVyZXMoKSwg
Ym9keS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSwgYm9keS0+bGluZU5vKCksIGJvZHktPmxhc3RM
aW5lKCkpOwogICAgIAogICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHJlc3VsdCA9IFVu
bGlua2VkRnVuY3Rpb25Db2RlQmxvY2s6OmNyZWF0ZSgmZ2xvYmFsRGF0YSwgRnVuY3Rpb25Db2Rl
LCBFeGVjdXRhYmxlSW5mbyhib2R5LT5uZWVkc0FjdGl2YXRpb24oKSwgYm9keS0+dXNlc0V2YWwo
KSwgYm9keS0+aXNTdHJpY3RNb2RlKCksIGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCkpOwotICAg
IE93blB0cjxCeXRlY29kZUdlbmVyYXRvcj4gZ2VuZXJhdG9yKGFkb3B0UHRyKG5ldyBCeXRlY29k
ZUdlbmVyYXRvcihnbG9iYWxEYXRhLCBib2R5LmdldCgpLCByZXN1bHQsIGRlYnVnZ2VyTW9kZSwg
cHJvZmlsZXJNb2RlKSkpOworICAgIE93blB0cjxCeXRlY29kZUdlbmVyYXRvcj4gZ2VuZXJhdG9y
KGFkb3B0UHRyKG5ldyBCeXRlY29kZUdlbmVyYXRvcihnbG9iYWxEYXRhLCBzY29wZSwgYm9keS5n
ZXQoKSwgcmVzdWx0LCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSkpKTsKICAgICBlcnJvciA9
IGdlbmVyYXRvci0+Z2VuZXJhdGUoKTsKICAgICBib2R5LT5kZXN0cm95RGF0YSgpOwogICAgIGlm
IChlcnJvci5tX3R5cGUgIT0gUGFyc2VyRXJyb3I6OkVycm9yTm9uZSkKQEAgLTEzOSw3ICsxMzks
NyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGU6OmZyb21HbG9iYWxDb2RlKGNvbnN0IElkZQogICAgIHJldHVybiBleGVjdXRhYmxlOwogfQog
Ci1VbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6
Y29kZUJsb2NrRm9yKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgU291cmNlQ29kZSYg
c291cmNlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIHNwZWNpYWxpemF0aW9uS2luZCwgRGVidWdn
ZXJNb2RlIGRlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSwgUGFyc2VyRXJy
b3ImIGVycm9yKQorVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGU6OmNvZGVCbG9ja0ZvcihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTU2NvcGUq
IHNjb3BlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIENvZGVTcGVjaWFsaXphdGlvbktpbmQg
c3BlY2lhbGl6YXRpb25LaW5kLCBEZWJ1Z2dlck1vZGUgZGVidWdnZXJNb2RlLCBQcm9maWxlck1v
ZGUgcHJvZmlsZXJNb2RlLCBQYXJzZXJFcnJvciYgZXJyb3IpCiB7CiAgICAgc3dpdGNoIChzcGVj
aWFsaXphdGlvbktpbmQpIHsKICAgICBjYXNlIENvZGVGb3JDYWxsOgpAQCAtMTUyLDcgKzE1Miw3
IEBAIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
Ojpjb2RlQmxvY2tGb3IoSlNHbG9iYWxEYXRhCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAg
IFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHJlc3VsdCA9IGdlbmVyYXRlRnVuY3Rpb25Db2Rl
QmxvY2soZ2xvYmFsRGF0YSwgdGhpcywgc291cmNlLCBzcGVjaWFsaXphdGlvbktpbmQsIGRlYnVn
Z2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBlcnJvcik7CisgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVC
bG9jayogcmVzdWx0ID0gZ2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jayhnbG9iYWxEYXRhLCBzY29w
ZSwgdGhpcywgc291cmNlLCBzcGVjaWFsaXphdGlvbktpbmQsIGRlYnVnZ2VyTW9kZSwgcHJvZmls
ZXJNb2RlLCBlcnJvcik7CiAgICAgCiAgICAgaWYgKGVycm9yLm1fdHlwZSAhPSBQYXJzZXJFcnJv
cjo6RXJyb3JOb25lKQogICAgICAgICByZXR1cm4gMDsKQEAgLTE4OSw2ICsxODksNyBAQCBVbmxp
bmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2soSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRh
LCBTdHJ1Y3R1cmUqIHN0cnVjdAogICAgICwgbV9udW1QYXJhbWV0ZXJzKDApCiAgICAgLCBtX2ds
b2JhbERhdGEoZ2xvYmFsRGF0YSkKICAgICAsIG1fYXJndW1lbnRzUmVnaXN0ZXIoLTEpCisgICAg
LCBtX2dsb2JhbE9iamVjdFJlZ2lzdGVyKC0xKQogICAgICwgbV9uZWVkc0Z1bGxTY29wZUNoYWlu
KGluZm8ubV9uZWVkc0FjdGl2YXRpb24pCiAgICAgLCBtX3VzZXNFdmFsKGluZm8ubV91c2VzRXZh
bCkKICAgICAsIG1faXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uKGZhbHNlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAppbmRleCA4MGU4
OWQzZTc2MjFmYzBmMWEzYmRjYmE5YTIyZDU2ZTliZWVkOWFjLi44Y2IyOWY5MzUxMDRhMjBkODA1
M2FhNTBjZmRhOTdhMWNiNDFkY2E3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaApAQCAtNDksNiArNDksNyBAQCBjbGFzcyBEZWJ1
Z2dlcjsKIGNsYXNzIEZ1bmN0aW9uQm9keU5vZGU7CiBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7
CiBjbGFzcyBGdW5jdGlvblBhcmFtZXRlcnM7CitjbGFzcyBKU1Njb3BlOwogc3RydWN0IFBhcnNl
ckVycm9yOwogY2xhc3MgU2NyaXB0RXhlY3V0YWJsZTsKIGNsYXNzIFNvdXJjZUNvZGU7CkBAIC0x
MDcsNyArMTA4LDcgQEAgcHVibGljOgogCiAgICAgU3RyaW5nIHBhcmFtU3RyaW5nKCkgY29uc3Q7
CiAKLSAgICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBjb2RlQmxvY2tGb3IoSlNHbG9iYWxE
YXRhJiwgY29uc3QgU291cmNlQ29kZSYsIENvZGVTcGVjaWFsaXphdGlvbktpbmQsIERlYnVnZ2Vy
TW9kZSwgUHJvZmlsZXJNb2RlLCBQYXJzZXJFcnJvciYpOworICAgIFVubGlua2VkRnVuY3Rpb25D
b2RlQmxvY2sqIGNvZGVCbG9ja0ZvcihKU0dsb2JhbERhdGEmLCBKU1Njb3BlKiwgY29uc3QgU291
cmNlQ29kZSYsIENvZGVTcGVjaWFsaXphdGlvbktpbmQsIERlYnVnZ2VyTW9kZSwgUHJvZmlsZXJN
b2RlLCBQYXJzZXJFcnJvciYpOwogCiAgICAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlKiBmcm9tR2xvYmFsQ29kZShjb25zdCBJZGVudGlmaWVyJiwgRXhlY1N0YXRlKiwgRGVidWdn
ZXIqLCBjb25zdCBTb3VyY2VDb2RlJiwgSlNPYmplY3QqKiBleGNlcHRpb24pOwogCkBAIC0yNjgs
NiArMjY5LDExIEBAIHB1YmxpYzoKICAgICBib29sIHVzZXNBcmd1bWVudHMoKSBjb25zdCB7IHJl
dHVybiBtX2FyZ3VtZW50c1JlZ2lzdGVyICE9IC0xOyB9CiAgICAgaW50IGFyZ3VtZW50c1JlZ2lz
dGVyKCkgY29uc3QgeyByZXR1cm4gbV9hcmd1bWVudHNSZWdpc3RlcjsgfQogCisKKyAgICBib29s
IHVzZXNHbG9iYWxPYmplY3QoKSBjb25zdCB7IHJldHVybiBtX2dsb2JhbE9iamVjdFJlZ2lzdGVy
ICE9IC0xOyB9CisgICAgdm9pZCBzZXRHbG9iYWxPYmplY3RSZWdpc3RlcihpbnQgZ2xvYmFsT2Jq
ZWN0UmVnaXN0ZXIpIHsgbV9nbG9iYWxPYmplY3RSZWdpc3RlciA9IGdsb2JhbE9iamVjdFJlZ2lz
dGVyOyB9CisgICAgaW50IGdsb2JhbE9iamVjdFJlZ2lzdGVyKCkgY29uc3QgeyByZXR1cm4gbV9n
bG9iYWxPYmplY3RSZWdpc3RlcjsgfQorCiAgICAgLy8gUGFyYW1ldGVyIGluZm9ybWF0aW9uCiAg
ICAgdm9pZCBzZXROdW1QYXJhbWV0ZXJzKGludCBuZXdWYWx1ZSkgeyBtX251bVBhcmFtZXRlcnMg
PSBuZXdWYWx1ZTsgfQogICAgIHZvaWQgYWRkUGFyYW1ldGVyKCkgeyBtX251bVBhcmFtZXRlcnMr
KzsgfQpAQCAtNDkzLDYgKzQ5OSw3IEBAIHByaXZhdGU6CiAgICAgaW50IG1fdGhpc1JlZ2lzdGVy
OwogICAgIGludCBtX2FyZ3VtZW50c1JlZ2lzdGVyOwogICAgIGludCBtX2FjdGl2YXRpb25SZWdp
c3RlcjsKKyAgICBpbnQgbV9nbG9iYWxPYmplY3RSZWdpc3RlcjsKIAogICAgIGJvb2wgbV9uZWVk
c0Z1bGxTY29wZUNoYWluIDogMTsKICAgICBib29sIG1fdXNlc0V2YWwgOiAxOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmNwcAppbmRleCBkNjUyMTc5MDQ0OTAxYmE1N2I4Y2YxZjE4ZTQ1MTM4MWQ4NmMwYjZlLi4wZjk4
YTg2NDk1YzM1OTAwM2M2MzhiNGViZDYxMzdmMDQ0MDc1MTg1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApA
QCAtMTQxLDYgKzE0MSwxMCBAQCB2b2lkIFJlc29sdmVSZXN1bHQ6OmNoZWNrVmFsaWRpdHkoKQog
ICAgIGNhc2UgRHluYW1pYzoKICAgICAgICAgQVNTRVJUKCFtX2xvY2FsKTsKICAgICAgICAgcmV0
dXJuOworICAgIGNhc2UgTGV4aWNhbDoKKyAgICBjYXNlIFJlYWRPbmx5TGV4aWNhbDoKKyAgICAg
ICAgQVNTRVJUKCFtX2xvY2FsKTsKKyAgICAgICAgcmV0dXJuOwogICAgIGRlZmF1bHQ6CiAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQpAQCAtMjI2LDcgKzIzMCw3
IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OnByZXNlcnZlTGFzdFZhcigpCiAgICAgICAgIG1f
bGFzdFZhciA9ICZtX2NhbGxlZVJlZ2lzdGVycy5sYXN0KCk7CiB9CiAKLUJ5dGVjb2RlR2VuZXJh
dG9yOjpCeXRlY29kZUdlbmVyYXRvcihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb2dyYW1O
b2RlKiBwcm9ncmFtTm9kZSwgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKiBjb2RlQmxvY2ssIERl
YnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxlck1vZGUpCitCeXRl
Y29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBKU1Njb3BlKiwgUHJvZ3JhbU5vZGUqIHByb2dyYW1Ob2RlLCBVbmxpbmtlZFByb2dyYW1Db2Rl
QmxvY2sqIGNvZGVCbG9jaywgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2Rl
IHByb2ZpbGVyTW9kZSkKICAgICA6IG1fc2hvdWxkRW1pdERlYnVnSG9va3MoZGVidWdnZXJNb2Rl
ID09IERlYnVnZ2VyT24pCiAgICAgLCBtX3Nob3VsZEVtaXRQcm9maWxlSG9va3MocHJvZmlsZXJN
b2RlID09IFByb2ZpbGVyT24pCiAgICAgLCBtX3N5bWJvbFRhYmxlKDApCkBAIC0yMzQsNiArMjM4
LDcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgUHJvZ3JhbU5vZGUqIHByb2cKICAgICAsIG1fY29kZUJsb2NrKGdsb2JhbERh
dGEsIGNvZGVCbG9jaykKICAgICAsIG1fdGhpc1JlZ2lzdGVyKENhbGxGcmFtZTo6dGhpc0FyZ3Vt
ZW50T2Zmc2V0KCkpCiAgICAgLCBtX2VtcHR5VmFsdWVSZWdpc3RlcigwKQorICAgICwgbV9nbG9i
YWxPYmplY3RSZWdpc3RlcigwKQogICAgICwgbV9maW5hbGx5RGVwdGgoMCkKICAgICAsIG1fZHlu
YW1pY1Njb3BlRGVwdGgoMCkKICAgICAsIG1fY29kZVR5cGUoR2xvYmFsQ29kZSkKQEAgLTI3Mywx
NCArMjc4LDE2IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIFByb2dyYW1Ob2RlKiBwcm9nCiAKIH0KIAotQnl0ZWNvZGVHZW5l
cmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgRnVuY3Rp
b25Cb2R5Tm9kZSogZnVuY3Rpb25Cb2R5LCBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBjb2Rl
QmxvY2ssIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxlck1v
ZGUpCitCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBKU1Njb3BlKiBzY29wZSwgRnVuY3Rpb25Cb2R5Tm9kZSogZnVuY3Rpb25Cb2R5
LCBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBjb2RlQmxvY2ssIERlYnVnZ2VyTW9kZSBkZWJ1
Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxlck1vZGUpCiAgICAgOiBtX3Nob3VsZEVtaXRE
ZWJ1Z0hvb2tzKGRlYnVnZ2VyTW9kZSA9PSBEZWJ1Z2dlck9uKQogICAgICwgbV9zaG91bGRFbWl0
UHJvZmlsZUhvb2tzKHByb2ZpbGVyTW9kZSA9PSBQcm9maWxlck9uKQogICAgICwgbV9zeW1ib2xU
YWJsZShjb2RlQmxvY2stPnN5bWJvbFRhYmxlKCkpCiAgICAgLCBtX3Njb3BlTm9kZShmdW5jdGlv
bkJvZHkpCisgICAgLCBtX3Njb3BlKGdsb2JhbERhdGEsIHNjb3BlKQogICAgICwgbV9jb2RlQmxv
Y2soZ2xvYmFsRGF0YSwgY29kZUJsb2NrKQogICAgICwgbV9hY3RpdmF0aW9uUmVnaXN0ZXIoMCkK
ICAgICAsIG1fZW1wdHlWYWx1ZVJlZ2lzdGVyKDApCisgICAgLCBtX2dsb2JhbE9iamVjdFJlZ2lz
dGVyKDApCiAgICAgLCBtX2ZpbmFsbHlEZXB0aCgwKQogICAgICwgbV9keW5hbWljU2NvcGVEZXB0
aCgwKQogICAgICwgbV9jb2RlVHlwZShGdW5jdGlvbkNvZGUpCkBAIC00NjgsMTQgKzQ3NSwxNiBA
QCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBGdW5jdGlvbkJvZHlOb2RlKgogICAgIH0KIH0KIAotQnl0ZWNvZGVHZW5lcmF0b3I6
OkJ5dGVjb2RlR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgRXZhbE5vZGUqIGV2
YWxOb2RlLCBVbmxpbmtlZEV2YWxDb2RlQmxvY2sqIGNvZGVCbG9jaywgRGVidWdnZXJNb2RlIGRl
YnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSkKK0J5dGVjb2RlR2VuZXJhdG9y
OjpCeXRlY29kZUdlbmVyYXRvcihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTU2NvcGUqIHNj
b3BlLCBFdmFsTm9kZSogZXZhbE5vZGUsIFVubGlua2VkRXZhbENvZGVCbG9jayogY29kZUJsb2Nr
LCBEZWJ1Z2dlck1vZGUgZGVidWdnZXJNb2RlLCBQcm9maWxlck1vZGUgcHJvZmlsZXJNb2RlKQog
ICAgIDogbV9zaG91bGRFbWl0RGVidWdIb29rcyhkZWJ1Z2dlck1vZGUgPT0gRGVidWdnZXJPbikK
ICAgICAsIG1fc2hvdWxkRW1pdFByb2ZpbGVIb29rcyhwcm9maWxlck1vZGUgPT0gUHJvZmlsZXJP
bikKICAgICAsIG1fc3ltYm9sVGFibGUoY29kZUJsb2NrLT5zeW1ib2xUYWJsZSgpKQogICAgICwg
bV9zY29wZU5vZGUoZXZhbE5vZGUpCisgICAgLCBtX3Njb3BlKGdsb2JhbERhdGEsIHNjb3BlKQog
ICAgICwgbV9jb2RlQmxvY2soZ2xvYmFsRGF0YSwgY29kZUJsb2NrKQogICAgICwgbV90aGlzUmVn
aXN0ZXIoQ2FsbEZyYW1lOjp0aGlzQXJndW1lbnRPZmZzZXQoKSkKICAgICAsIG1fZW1wdHlWYWx1
ZVJlZ2lzdGVyKDApCisgICAgLCBtX2dsb2JhbE9iamVjdFJlZ2lzdGVyKDApCiAgICAgLCBtX2Zp
bmFsbHlEZXB0aCgwKQogICAgICwgbV9keW5hbWljU2NvcGVEZXB0aCgwKQogICAgICwgbV9jb2Rl
VHlwZShFdmFsQ29kZSkKQEAgLTEyMjcsNiArMTIzNiwyMSBAQCBSZWdpc3RlcklEKiBCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdExvYWQoUmVnaXN0ZXJJRCogZHN0LCBKU1ZhbHVlIHYpCiAgICAgcmV0
dXJuIGNvbnN0YW50SUQ7CiB9CiAKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
TG9hZEdsb2JhbE9iamVjdChSZWdpc3RlcklEKiBkc3QpCit7CisgICAgaWYgKCFtX2dsb2JhbE9i
amVjdFJlZ2lzdGVyKSB7CisgICAgICAgIGludCBpbmRleCA9IG1fbmV4dENvbnN0YW50T2Zmc2V0
OworICAgICAgICBtX2NvbnN0YW50UG9vbFJlZ2lzdGVycy5hcHBlbmQoRmlyc3RDb25zdGFudFJl
Z2lzdGVySW5kZXggKyBtX25leHRDb25zdGFudE9mZnNldCk7CisgICAgICAgICsrbV9uZXh0Q29u
c3RhbnRPZmZzZXQ7CisgICAgICAgIG1fY29kZUJsb2NrLT5hZGRDb25zdGFudChKU1ZhbHVlKCkp
OworICAgICAgICBtX2dsb2JhbE9iamVjdFJlZ2lzdGVyID0gJm1fY29uc3RhbnRQb29sUmVnaXN0
ZXJzW2luZGV4XTsKKyAgICAgICAgbV9jb2RlQmxvY2stPnNldEdsb2JhbE9iamVjdFJlZ2lzdGVy
KGluZGV4KTsKKyAgICB9CisgICAgaWYgKGRzdCkKKyAgICAgICAgZW1pdE1vdmUoZHN0LCBtX2ds
b2JhbE9iamVjdFJlZ2lzdGVyKTsKKyAgICByZXR1cm4gbV9nbG9iYWxPYmplY3RSZWdpc3RlcjsK
K30KKwogUmVzb2x2ZVJlc3VsdCBCeXRlY29kZUdlbmVyYXRvcjo6cmVzb2x2ZShjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eSkKIHsKICAgICBpZiAocHJvcGVydHkgPT0gcHJvcGVydHlOYW1lcygp
LnRoaXNJZGVudGlmaWVyKQpAQCAtMTI0MywxMyArMTI2Nyw1OSBAQCBSZXNvbHZlUmVzdWx0IEJ5
dGVjb2RlR2VuZXJhdG9yOjpyZXNvbHZlKGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5KQogICAg
ICAgICAgICAgcmV0dXJuIFJlc29sdmVSZXN1bHQ6OnJlZ2lzdGVyUmVzb2x2ZShsb2NhbCwgZmxh
Z3MpOwogICAgICAgICB9CiAgICAgfQorICAgIC8vIENhc2VzIHdoZXJlIHdlIGNhbm5vdCBzdGF0
aWNhbGx5IG9wdGltaXplIHRoZSBsb29rdXAuCisgICAgaWYgKHByb3BlcnR5ID09IHByb3BlcnR5
TmFtZXMoKS5hcmd1bWVudHMgfHwgIWNhbk9wdGltaXplTm9uTG9jYWxzKCkpCisgICAgICAgIHJl
dHVybiBSZXNvbHZlUmVzdWx0OjpkeW5hbWljUmVzb2x2ZSgpOworCisgICAgaWYgKCFtX3Njb3Bl
IHx8IG1fY29kZVR5cGUgIT0gRnVuY3Rpb25Db2RlKQorICAgICAgICByZXR1cm4gUmVzb2x2ZVJl
c3VsdDo6ZHluYW1pY1Jlc29sdmUoKTsKKworICAgIFNjb3BlQ2hhaW5JdGVyYXRvciBpdGVyID0g
bV9zY29wZS0+YmVnaW4oKTsKKyAgICBTY29wZUNoYWluSXRlcmF0b3IgZW5kID0gbV9zY29wZS0+
ZW5kKCk7CisgICAgc2l6ZV90IGRlcHRoID0gMDsKKyAgICBzaXplX3QgZGVwdGhPZkZpcnN0U2Nv
cGVXaXRoRHluYW1pY0NoZWNrcyA9IDA7CisgICAgdW5zaWduZWQgZmxhZ3MgPSAwOworICAgIGZv
ciAoOyBpdGVyICE9IGVuZDsgKytpdGVyLCArK2RlcHRoKSB7CisgICAgICAgIEpTT2JqZWN0KiBj
dXJyZW50U2NvcGUgPSBpdGVyLmdldCgpOworICAgICAgICBpZiAoIWN1cnJlbnRTY29wZS0+aXNW
YXJpYWJsZU9iamVjdCgpKQorICAgICAgICAgICAgcmV0dXJuIFJlc29sdmVSZXN1bHQ6OmR5bmFt
aWNSZXNvbHZlKCk7CisKKyAgICAgICAgSlNTeW1ib2xUYWJsZU9iamVjdCogY3VycmVudFZhcmlh
YmxlT2JqZWN0ID0ganNDYXN0PEpTU3ltYm9sVGFibGVPYmplY3QqPihjdXJyZW50U2NvcGUpOwor
ICAgICAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gY3VycmVudFZhcmlhYmxlT2JqZWN0LT5z
eW1ib2xUYWJsZSgpLT5nZXQocHJvcGVydHkuaW1wbCgpKTsKKworICAgICAgICAvLyBGb3VuZCB0
aGUgcHJvcGVydHkKKyAgICAgICAgaWYgKCFlbnRyeS5pc051bGwoKSkgeworICAgICAgICAgICAg
aWYgKGVudHJ5LmlzUmVhZE9ubHkoKSkKKyAgICAgICAgICAgICAgICBmbGFncyB8PSBSZXNvbHZl
UmVzdWx0OjpSZWFkT25seUZsYWc7CisgICAgICAgICAgICBkZXB0aCArPSBtX2NvZGVCbG9jay0+
bmVlZHNGdWxsU2NvcGVDaGFpbigpOworICAgICAgICAgICAgaWYgKCsraXRlciA9PSBlbmQpIHsK
KyAgICAgICAgICAgICAgICAvLyBHbG9iYWwgc2NvcGUKKyAgICAgICAgICAgICAgICByZXR1cm4g
UmVzb2x2ZVJlc3VsdDo6ZHluYW1pY1Jlc29sdmUoKTsKKyAgICAgICAgICAgIH0KKyNpZiAhQVNT
RVJUX0RJU0FCTEVECisgICAgICAgICAgICBpZiAoSlNBY3RpdmF0aW9uKiBhY3RpdmF0aW9uID0g
anNEeW5hbWljQ2FzdDxKU0FjdGl2YXRpb24qPihjdXJyZW50VmFyaWFibGVPYmplY3QpKQorICAg
ICAgICAgICAgICAgIEFTU0VSVChhY3RpdmF0aW9uLT5pc1ZhbGlkKGVudHJ5KSk7CisjZW5kaWYK
KyAgICAgICAgICAgIHJldHVybiBSZXNvbHZlUmVzdWx0OjpsZXhpY2FsUmVzb2x2ZShlbnRyeS5n
ZXRJbmRleCgpLCBkZXB0aCwgZmxhZ3MpOworICAgICAgICB9CisgICAgICAgIGJvb2wgc2NvcGVS
ZXF1aXJlc0R5bmFtaWNDaGVja3MgPSBmYWxzZTsKKyAgICAgICAgaWYgKGN1cnJlbnRWYXJpYWJs
ZU9iamVjdC0+aXNEeW5hbWljU2NvcGUoc2NvcGVSZXF1aXJlc0R5bmFtaWNDaGVja3MpKQorICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGlmICghKGZsYWdzICYgUmVzb2x2ZVJlc3VsdDo6RHlu
YW1pY0ZsYWcpKSB7CisgICAgICAgICAgICBpZiAoc2NvcGVSZXF1aXJlc0R5bmFtaWNDaGVja3Mp
CisgICAgICAgICAgICAgICAgZmxhZ3MgfD0gUmVzb2x2ZVJlc3VsdDo6RHluYW1pY0ZsYWc7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgKytkZXB0aE9mRmlyc3RTY29wZVdpdGhE
eW5hbWljQ2hlY2tzOworICAgICAgICB9CisgICAgfQorCiAgICAgcmV0dXJuIFJlc29sdmVSZXN1
bHQ6OmR5bmFtaWNSZXNvbHZlKCk7CiB9CiAKIFJlc29sdmVSZXN1bHQgQnl0ZWNvZGVHZW5lcmF0
b3I6OnJlc29sdmVDb25zdERlY2woY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHkpCiB7CiAgICAg
Ly8gUmVnaXN0ZXItYWxsb2NhdGVkIGNvbnN0IGRlY2xhcmF0aW9ucy4KLSAgICBpZiAobV9jb2Rl
VHlwZSAhPSBFdmFsQ29kZSAmJiBtX2NvZGVUeXBlICE9IEdsb2JhbENvZGUgJiYgbV9zeW1ib2xU
YWJsZSkgeworICAgIGlmIChtX2NvZGVUeXBlID09IEZ1bmN0aW9uQ29kZSAmJiBtX3N5bWJvbFRh
YmxlKSB7CiAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBzeW1ib2xUYWJsZSgpLmdl
dChwcm9wZXJ0eS5pbXBsKCkpOwogICAgICAgICBpZiAoIWVudHJ5LmlzTnVsbCgpKSB7CiAgICAg
ICAgICAgICB1bnNpZ25lZCBmbGFncyA9IGVudHJ5LmlzUmVhZE9ubHkoKSA/IFJlc29sdmVSZXN1
bHQ6OlJlYWRPbmx5RmxhZyA6IDA7CkBAIC0xMjg4LDggKzEzNTgsOCBAQCBib29sIEJ5dGVjb2Rl
R2VuZXJhdG9yOjpzaG91bGRBdm9pZFJlc29sdmVHbG9iYWwoKQogUmVnaXN0ZXJJRCogQnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRSZXNvbHZlKFJlZ2lzdGVySUQqIGRzdCwgY29uc3QgUmVzb2x2ZVJl
c3VsdCYgcmVzb2x2ZVJlc3VsdCwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHkpCiB7CiAKLSAg
ICBpZiAocmVzb2x2ZVJlc3VsdC5pc1JlZ2lzdGVyKCkpCi0gICAgICAgIHJldHVybiBlbWl0R2V0
TG9jYWxWYXIoZHN0LCByZXNvbHZlUmVzdWx0LCBwcm9wZXJ0eSk7CisgICAgaWYgKHJlc29sdmVS
ZXN1bHQuaXNTdGF0aWMoKSkKKyAgICAgICAgcmV0dXJuIGVtaXRHZXRTdGF0aWNWYXIoZHN0LCBy
ZXNvbHZlUmVzdWx0LCBwcm9wZXJ0eSk7CiAKICAgICBVbmxpbmtlZFZhbHVlUHJvZmlsZSBwcm9m
aWxlID0gZW1pdFByb2ZpbGVkT3Bjb2RlKG9wX3Jlc29sdmUpOwogICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZChraWxsKGRzdCkpOwpAQCAtMTMwMSw3ICsxMzcxLDExIEBAIFJlZ2lzdGVySUQqIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2x2ZShSZWdpc3RlcklEKiBkc3QsIGNvbnN0IFJlc29s
dmVSZXN1bHQmCiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2x2ZUJh
c2UoUmVnaXN0ZXJJRCogZHN0LCBjb25zdCBSZXNvbHZlUmVzdWx0JiByZXNvbHZlUmVzdWx0LCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSkKIHsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc29sdmVS
ZXN1bHQsICFyZXNvbHZlUmVzdWx0LmlzUmVnaXN0ZXIoKSk7CisgICAgaWYgKCFyZXNvbHZlUmVz
dWx0LmlzRHluYW1pYygpKSB7CisgICAgICAgIC8vIEdsb2JhbCBvYmplY3QgaXMgdGhlIGJhc2UK
KyAgICAgICAgcmV0dXJuIGVtaXRMb2FkR2xvYmFsT2JqZWN0KGRzdCk7CisgICAgfQorCiAgICAg
Ly8gV2UgY2FuJ3Qgb3B0aW1pc2UgYXQgYWxsIDotKAogICAgIFVubGlua2VkVmFsdWVQcm9maWxl
IHByb2ZpbGUgPSBlbWl0UHJvZmlsZWRPcGNvZGUob3BfcmVzb2x2ZV9iYXNlKTsKICAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQoa2lsbChkc3QpKTsKQEAgLTEzMTMsOSArMTM4Nyw4IEBAIFJlZ2lz
dGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2x2ZUJhc2UoUmVnaXN0ZXJJRCogZHN0
LCBjb25zdCBSZXNvbHZlUmVzCiAgICAgcmV0dXJuIGRzdDsKIH0KIAotUmVnaXN0ZXJJRCogQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbHZlQmFzZUZvclB1dChSZWdpc3RlcklEKiBkc3QsIGNv
bnN0IFJlc29sdmVSZXN1bHQmIHJlc29sdmVSZXN1bHQsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5LCBOb25sb2NhbFJlc29sdmVJbmZvJiB2ZXJpZmllcikKK1JlZ2lzdGVySUQqIEJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0UmVzb2x2ZUJhc2VGb3JQdXQoUmVnaXN0ZXJJRCogZHN0LCBjb25zdCBS
ZXNvbHZlUmVzdWx0JiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHksIE5vbmxvY2FsUmVzb2x2
ZUluZm8mIHZlcmlmaWVyKQogewotICAgIEFTU0VSVF9VTlVTRUQocmVzb2x2ZVJlc3VsdCwgIXJl
c29sdmVSZXN1bHQuaXNSZWdpc3RlcigpKTsKICAgICAvLyBXZSBjYW4ndCBvcHRpbWlzZSBhdCBh
bGwgOi0oCiAgICAgVW5saW5rZWRWYWx1ZVByb2ZpbGUgcHJvZmlsZSA9IGVtaXRQcm9maWxlZE9w
Y29kZShvcF9yZXNvbHZlX2Jhc2UpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChraWxsKGRz
dCkpOwpAQCAtMTMzMSw3ICsxNDA0LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRSZXNvbHZlQmFzZUZvclB1dChSZWdpc3RlcklEKiBkc3QsIGNvbnN0IFJlc28KIAogUmVn
aXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbHZlV2l0aEJhc2VGb3JQdXQoUmVn
aXN0ZXJJRCogYmFzZURzdCwgUmVnaXN0ZXJJRCogcHJvcERzdCwgY29uc3QgUmVzb2x2ZVJlc3Vs
dCYgcmVzb2x2ZVJlc3VsdCwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHksIE5vbmxvY2FsUmVz
b2x2ZUluZm8mIHZlcmlmaWVyKQogewotICAgIEFTU0VSVF9VTlVTRUQocmVzb2x2ZVJlc3VsdCwg
IXJlc29sdmVSZXN1bHQuaXNSZWdpc3RlcigpKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc29sdmVS
ZXN1bHQsICFyZXNvbHZlUmVzdWx0LmlzU3RhdGljKCkpOwogICAgIFVubGlua2VkVmFsdWVQcm9m
aWxlIHByb2ZpbGUgPSBlbWl0UHJvZmlsZWRPcGNvZGUob3BfcmVzb2x2ZV93aXRoX2Jhc2UpOwog
ICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChraWxsKGJhc2VEc3QpKTsKICAgICBpbnN0cnVjdGlv
bnMoKS5hcHBlbmQocHJvcERzdC0+aW5kZXgoKSk7CkBAIC0xMzQ2LDkgKzE0MTksOSBAQCBSZWdp
c3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc29sdmVXaXRoQmFzZUZvclB1dChSZWdp
c3RlcklEKiBiYXNlRHN0LCBSZQogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dFJlc29sdmVXaXRoVGhpcyhSZWdpc3RlcklEKiBiYXNlRHN0LCBSZWdpc3RlcklEKiBwcm9wRHN0
LCBjb25zdCBSZXNvbHZlUmVzdWx0JiByZXNvbHZlUmVzdWx0LCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eSkKIHsKLSAgICBpZiAocmVzb2x2ZVJlc3VsdC5pc1JlZ2lzdGVyKCkpIHsKKyAgICBp
ZiAocmVzb2x2ZVJlc3VsdC5pc1N0YXRpYygpKSB7CiAgICAgICAgIGVtaXRMb2FkKGJhc2VEc3Qs
IGpzVW5kZWZpbmVkKCkpOwotICAgICAgICBlbWl0R2V0TG9jYWxWYXIocHJvcERzdCwgcmVzb2x2
ZVJlc3VsdCwgcHJvcGVydHkpOworICAgICAgICBlbWl0R2V0U3RhdGljVmFyKHByb3BEc3QsIHJl
c29sdmVSZXN1bHQsIHByb3BlcnR5KTsKICAgICAgICAgcmV0dXJuIGJhc2VEc3Q7CiAgICAgfQog
CkBAIC0xMzYxLDggKzE0MzQsOSBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dFJlc29sdmVXaXRoVGhpcyhSZWdpc3RlcklEKiBiYXNlRHN0LCBSZWdpc3RlcgogICAgIHJldHVy
biBiYXNlRHN0OwogfQogCi1SZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldExv
Y2FsVmFyKFJlZ2lzdGVySUQqIGRzdCwgY29uc3QgUmVzb2x2ZVJlc3VsdCYgcmVzb2x2ZVJlc3Vs
dCwgY29uc3QgSWRlbnRpZmllciYpCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dEdldFN0YXRpY1ZhcihSZWdpc3RlcklEKiBkc3QsIGNvbnN0IFJlc29sdmVSZXN1bHQmIHJlc29s
dmVSZXN1bHQsIGNvbnN0IElkZW50aWZpZXImKQogeworICAgIEFTU0VSVChtX2NvZGVUeXBlID09
IEZ1bmN0aW9uQ29kZSk7CiAgICAgc3dpdGNoIChyZXNvbHZlUmVzdWx0LnR5cGUoKSkgewogICAg
IGNhc2UgUmVzb2x2ZVJlc3VsdDo6UmVnaXN0ZXI6CiAgICAgY2FzZSBSZXNvbHZlUmVzdWx0OjpS
ZWFkT25seVJlZ2lzdGVyOgpAQCAtMTM3MCw2ICsxNDQ0LDE2IEBAIFJlZ2lzdGVySUQqIEJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0R2V0TG9jYWxWYXIoUmVnaXN0ZXJJRCogZHN0LCBjb25zdCBSZXNv
bHZlUmVzCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgcmV0dXJuIG1vdmVUb0Rlc3Rp
bmF0aW9uSWZOZWVkZWQoZHN0LCByZXNvbHZlUmVzdWx0LmxvY2FsKCkpOwogCisgICAgY2FzZSBS
ZXNvbHZlUmVzdWx0OjpMZXhpY2FsOgorICAgIGNhc2UgUmVzb2x2ZVJlc3VsdDo6UmVhZE9ubHlM
ZXhpY2FsOiB7CisgICAgICAgIFVubGlua2VkVmFsdWVQcm9maWxlIHByb2ZpbGUgPSBlbWl0UHJv
ZmlsZWRPcGNvZGUob3BfZ2V0X3Njb3BlZF92YXIpOworICAgICAgICBpbnN0cnVjdGlvbnMoKS5h
cHBlbmQoZHN0LT5pbmRleCgpKTsKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHJlc29s
dmVSZXN1bHQuaW5kZXgoKSk7CisgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChyZXNvbHZl
UmVzdWx0LmRlcHRoKCkpOworICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQocHJvZmlsZSk7
CisgICAgICAgIHJldHVybiBkc3Q7CisgICAgfQorCiAgICAgZGVmYXVsdDoKICAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIDA7CkBAIC0xMzg3LDYg
KzE0NzEsMjggQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJbml0R2xvYmFs
Q29uc3QoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllciwKICAgICByZXR1cm4gdmFsdWU7CiB9
CiAKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0U3RhdGljVmFyKGNvbnN0
IFJlc29sdmVSZXN1bHQmIHJlc29sdmVSZXN1bHQsIGNvbnN0IElkZW50aWZpZXImLCBSZWdpc3Rl
cklEKiB2YWx1ZSkKK3sKKyAgICBBU1NFUlQobV9jb2RlVHlwZSA9PSBGdW5jdGlvbkNvZGUpOwor
ICAgIHN3aXRjaCAocmVzb2x2ZVJlc3VsdC50eXBlKCkpIHsKKyAgICBjYXNlIFJlc29sdmVSZXN1
bHQ6OlJlZ2lzdGVyOgorICAgIGNhc2UgUmVzb2x2ZVJlc3VsdDo6UmVhZE9ubHlSZWdpc3RlcjoK
KyAgICAgICAgcmV0dXJuIG1vdmVUb0Rlc3RpbmF0aW9uSWZOZWVkZWQocmVzb2x2ZVJlc3VsdC5s
b2NhbCgpLCB2YWx1ZSk7CisKKyAgICBjYXNlIFJlc29sdmVSZXN1bHQ6OkxleGljYWw6CisgICAg
Y2FzZSBSZXNvbHZlUmVzdWx0OjpSZWFkT25seUxleGljYWw6CisgICAgICAgIGVtaXRPcGNvZGUo
b3BfcHV0X3Njb3BlZF92YXIpOworICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQocmVzb2x2
ZVJlc3VsdC5pbmRleCgpKTsKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHJlc29sdmVS
ZXN1bHQuZGVwdGgoKSk7CisgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCh2YWx1ZS0+aW5k
ZXgoKSk7CisgICAgICAgIHJldHVybiB2YWx1ZTsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KK30K
KwogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRCeUlkKFJlZ2lzdGVySUQq
IGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHkpCiB7CiAg
ICAgbV9jb2RlQmxvY2stPmFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25z
KCkuc2l6ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRleCBkZDAxMzJjYTY4OGQ2NjZkYjRhMzE4NzE4YmFl
MDVjNTExMWE0NmJkLi5hNTEzNWQ3MWZlYjcyODg4ZTkyOTQ5MWNkNzliYThlYjYyNjhiOTEyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5oCkBAIC0xMjgsMTQgKzEyOCwyMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgICAgIER5bmFtaWNGbGFnID0gMHgyLAogICAgICAgICAgICAgLy8gVGhlIHJlc29sdmVkIGJp
bmRpbmcgaXMgaW1tdXRhYmxlLgogICAgICAgICAgICAgUmVhZE9ubHlGbGFnID0gMHg0LAorICAg
ICAgICAgICAgLy8gVGhlIHByb3BlcnR5IGhhcyBhIHN0YXRpYyBsb2NhdGlvbgorICAgICAgICAg
ICAgU3RhdGljRmxhZyA9IDB4OCwKKyAgICAgICAgICAgIC8vIEVudHJ5IGF0IHNjb3BlIGRpc3Rh
bmNlICJtX2RlcHRoIiBhbmQgbG9jYXRlZCBhdCAibV9pbmRleCIKKyAgICAgICAgICAgIFNjb3Bl
ZEZsYWcgPSAweDEwCiAgICAgICAgIH07CiAKICAgICAgICAgZW51bSBUeXBlIHsKICAgICAgICAg
ICAgIC8vIFRoZSBwcm9wZXJ0eSBpcyBsb2NhbCwgYW5kIHN0b3JlZCBpbiBhIHJlZ2lzdGVyLgot
ICAgICAgICAgICAgUmVnaXN0ZXIgPSBSZWdpc3RlckZsYWcsCisgICAgICAgICAgICBSZWdpc3Rl
ciA9IFJlZ2lzdGVyRmxhZyB8IFN0YXRpY0ZsYWcsCiAgICAgICAgICAgICAvLyBBIHJlYWQtb25s
eSBsb2NhbCwgY3JlYXRlZCBieSAiY29uc3QiLgotICAgICAgICAgICAgUmVhZE9ubHlSZWdpc3Rl
ciA9IFJlZ2lzdGVyRmxhZyB8IFJlYWRPbmx5RmxhZywKLSAgICAgICAgICAgIC8vIEFueSBmb3Jt
IG9mIG5vbi1sb2NhbCBsb29rdXAKKyAgICAgICAgICAgIFJlYWRPbmx5UmVnaXN0ZXIgPSBSZWdp
c3RlckZsYWcgfCBSZWFkT25seUZsYWcgfCBTdGF0aWNGbGFnLAorICAgICAgICAgICAgLy8gTGV4
aWNhbGx5IGZpeGVkIGxvY2F0aW9uIGluIHRoZSBzY29wZSBjaGFpbgorICAgICAgICAgICAgTGV4
aWNhbCA9IFNjb3BlZEZsYWcgfCBTdGF0aWNGbGFnLAorICAgICAgICAgICAgLy8gQSByZWFkLW9u
bHkgTGV4aWNhbCwgY3JlYXRlZCBieSAiY29uc3QiLgorICAgICAgICAgICAgUmVhZE9ubHlMZXhp
Y2FsID0gU2NvcGVkRmxhZyB8IFJlYWRPbmx5RmxhZyB8IFN0YXRpY0ZsYWcsCisgICAgICAgICAg
ICAvLyBBbnkgb3RoZXIgZm9ybSBvZiBsb29rdXAKICAgICAgICAgICAgIER5bmFtaWMgPSBEeW5h
bWljRmxhZywKICAgICAgICAgfTsKIApAQCAtMTQ3LDYgKzE1NSwxMiBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIFJlc29sdmVSZXN1bHQoRHluYW1pYywg
MCk7CiAgICAgICAgIH0KKyAgICAgICAgc3RhdGljIFJlc29sdmVSZXN1bHQgbGV4aWNhbFJlc29s
dmUoaW50IGluZGV4LCBzaXplX3QgZGVwdGgsIHVuc2lnbmVkIGZsYWdzKQorICAgICAgICB7Cisg
ICAgICAgICAgICBpZiAoZmxhZ3MgJiBEeW5hbWljRmxhZykKKyAgICAgICAgICAgICAgICByZXR1
cm4gZHluYW1pY1Jlc29sdmUoKTsKKyAgICAgICAgICAgIHJldHVybiBSZXNvbHZlUmVzdWx0KExl
eGljYWwgfCBmbGFncywgaW5kZXgsIGRlcHRoKTsKKyAgICAgICAgfQogICAgICAgICB1bnNpZ25l
ZCB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAKICAgICAgICAgLy8gUmV0dXJucyB0
aGUgcmVnaXN0ZXIgY29ycmVzcG9uZGluZyB0byBhIGxvY2FsIHZhcmlhYmxlLCBvciAwIGlmIG5v
CkBAIC0xNTUsMTMgKzE2OSwzMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXJJ
RCogbG9jYWwoKSBjb25zdCB7IHJldHVybiBtX2xvY2FsOyB9CiAKICAgICAgICAgYm9vbCBpc1Jl
Z2lzdGVyKCkgY29uc3QgeyByZXR1cm4gbV90eXBlICYgUmVnaXN0ZXJGbGFnOyB9CisgICAgICAg
IGJvb2wgaXNTdGF0aWMoKSBjb25zdCB7IHJldHVybiAobV90eXBlICYgU3RhdGljRmxhZykgJiYg
IWlzRHluYW1pYygpOyB9CiAgICAgICAgIGJvb2wgaXNEeW5hbWljKCkgY29uc3QgeyByZXR1cm4g
bV90eXBlICYgRHluYW1pY0ZsYWc7IH0KICAgICAgICAgYm9vbCBpc1JlYWRPbmx5KCkgY29uc3Qg
eyByZXR1cm4gKG1fdHlwZSAmIFJlYWRPbmx5RmxhZykgJiYgIWlzRHluYW1pYygpOyB9CiAKKyAg
ICAgICAgdW5zaWduZWQgZGVwdGgoKSBjb25zdCB7IEFTU0VSVChpc1N0YXRpYygpKTsgcmV0dXJu
IG1fZGVwdGg7IH0KKyAgICAgICAgaW50MzJfdCBpbmRleCgpIGNvbnN0IHsgQVNTRVJUKGlzU3Rh
dGljKCkpOyByZXR1cm4gbV9pbmRleDsgfQorCiAgICAgcHJpdmF0ZToKICAgICAgICAgUmVzb2x2
ZVJlc3VsdCh1bnNpZ25lZCB0eXBlLCBSZWdpc3RlcklEKiBsb2NhbCkKICAgICAgICAgICAgIDog
bV90eXBlKHR5cGUpCiAgICAgICAgICAgICAsIG1fbG9jYWwobG9jYWwpCisgICAgICAgICAgICAs
IG1faW5kZXgoMCkKKyAgICAgICAgICAgICwgbV9kZXB0aCgwKQorICAgICAgICB7CisjaWZuZGVm
IE5ERUJVRworICAgICAgICAgICAgY2hlY2tWYWxpZGl0eSgpOworI2VuZGlmCisgICAgICAgIH0K
KworICAgICAgICBSZXNvbHZlUmVzdWx0KHVuc2lnbmVkIHR5cGUsIGludCBpbmRleCwgdW5zaWdu
ZWQgZGVwdGgpCisgICAgICAgICAgICA6IG1fdHlwZSh0eXBlKQorICAgICAgICAgICAgLCBtX2xv
Y2FsKDApCisgICAgICAgICAgICAsIG1faW5kZXgoaW5kZXgpCisgICAgICAgICAgICAsIG1fZGVw
dGgoZGVwdGgpCiAgICAgICAgIHsKICNpZm5kZWYgTkRFQlVHCiAgICAgICAgICAgICBjaGVja1Zh
bGlkaXR5KCk7CkBAIC0xNzQsNiArMjA1LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAg
dW5zaWduZWQgbV90eXBlOwogICAgICAgICBSZWdpc3RlcklEKiBtX2xvY2FsOyAvLyBMb2NhbCBy
ZWdpc3RlciwgaWYgUmVnaXN0ZXJGbGFnIGlzIHNldAorICAgICAgICBpbnQgbV9pbmRleDsKKyAg
ICAgICAgdW5zaWduZWQgbV9kZXB0aDsKICAgICB9OwogCiAgICAgc3RydWN0IE5vbmxvY2FsUmVz
b2x2ZUluZm8gewpAQCAtMjExLDkgKzI0NCw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB0
eXBlZGVmIERlY2xhcmF0aW9uU3RhY2tzOjpWYXJTdGFjayBWYXJTdGFjazsKICAgICAgICAgdHlw
ZWRlZiBEZWNsYXJhdGlvblN0YWNrczo6RnVuY3Rpb25TdGFjayBGdW5jdGlvblN0YWNrOwogCi0g
ICAgICAgIEJ5dGVjb2RlR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSYsIFByb2dyYW1Ob2RlKiwgVW5s
aW5rZWRQcm9ncmFtQ29kZUJsb2NrKiwgRGVidWdnZXJNb2RlLCBQcm9maWxlck1vZGUpOwotICAg
ICAgICBCeXRlY29kZUdlbmVyYXRvcihKU0dsb2JhbERhdGEmLCBGdW5jdGlvbkJvZHlOb2RlKiwg
VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayosIERlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlKTsK
LSAgICAgICAgQnl0ZWNvZGVHZW5lcmF0b3IoSlNHbG9iYWxEYXRhJiwgRXZhbE5vZGUqLCBVbmxp
bmtlZEV2YWxDb2RlQmxvY2sqLCBEZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSk7CisgICAgICAg
IEJ5dGVjb2RlR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSYsIEpTU2NvcGUqLCBQcm9ncmFtTm9kZSos
IFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jayosIERlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlKTsK
KyAgICAgICAgQnl0ZWNvZGVHZW5lcmF0b3IoSlNHbG9iYWxEYXRhJiwgSlNTY29wZSosIEZ1bmN0
aW9uQm9keU5vZGUqLCBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiwgRGVidWdnZXJNb2RlLCBQ
cm9maWxlck1vZGUpOworICAgICAgICBCeXRlY29kZUdlbmVyYXRvcihKU0dsb2JhbERhdGEmLCBK
U1Njb3BlKiwgRXZhbE5vZGUqLCBVbmxpbmtlZEV2YWxDb2RlQmxvY2sqLCBEZWJ1Z2dlck1vZGUs
IFByb2ZpbGVyTW9kZSk7CiAKICAgICAgICAgfkJ5dGVjb2RlR2VuZXJhdG9yKCk7CiAgICAgICAg
IApAQCAtMzc5LDYgKzQxMiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZWdpc3RlcklE
KiBlbWl0TG9hZChSZWdpc3RlcklEKiBkc3QsIGRvdWJsZSk7CiAgICAgICAgIFJlZ2lzdGVySUQq
IGVtaXRMb2FkKFJlZ2lzdGVySUQqIGRzdCwgY29uc3QgSWRlbnRpZmllciYpOwogICAgICAgICBS
ZWdpc3RlcklEKiBlbWl0TG9hZChSZWdpc3RlcklEKiBkc3QsIEpTVmFsdWUpOworICAgICAgICBS
ZWdpc3RlcklEKiBlbWl0TG9hZEdsb2JhbE9iamVjdChSZWdpc3RlcklEKiBkc3QpOwogCiAgICAg
ICAgIFJlZ2lzdGVySUQqIGVtaXRVbmFyeU9wKE9wY29kZUlELCBSZWdpc3RlcklEKiBkc3QsIFJl
Z2lzdGVySUQqIHNyYyk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRCaW5hcnlPcChPcGNvZGVJ
RCwgUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMxLCBSZWdpc3RlcklEKiBzcmMyLCBP
cGVyYW5kVHlwZXMpOwpAQCAtNDA4LDcgKzQ0Miw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBSZWdpc3RlcklEKiBlbWl0VHlwZU9mKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3Jj
KSB7IHJldHVybiBlbWl0VW5hcnlPcChvcF90eXBlb2YsIGRzdCwgc3JjKTsgfQogICAgICAgICBS
ZWdpc3RlcklEKiBlbWl0SW4oUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwg
UmVnaXN0ZXJJRCogYmFzZSkgeyByZXR1cm4gZW1pdEJpbmFyeU9wKG9wX2luLCBkc3QsIHByb3Bl
cnR5LCBiYXNlLCBPcGVyYW5kVHlwZXMoKSk7IH0KIAotICAgICAgICBSZWdpc3RlcklEKiBlbWl0
R2V0TG9jYWxWYXIoUmVnaXN0ZXJJRCogZHN0LCBjb25zdCBSZXNvbHZlUmVzdWx0JiwgY29uc3Qg
SWRlbnRpZmllciYpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0R2V0U3RhdGljVmFyKFJlZ2lz
dGVySUQqIGRzdCwgY29uc3QgUmVzb2x2ZVJlc3VsdCYsIGNvbnN0IElkZW50aWZpZXImKTsKKyAg
ICAgICAgUmVnaXN0ZXJJRCogZW1pdFB1dFN0YXRpY1Zhcihjb25zdCBSZXNvbHZlUmVzdWx0Jiwg
Y29uc3QgSWRlbnRpZmllciYsIFJlZ2lzdGVySUQqIHZhbHVlKTsKICAgICAgICAgUmVnaXN0ZXJJ
RCogZW1pdEluaXRHbG9iYWxDb25zdChjb25zdCBJZGVudGlmaWVyJiwgUmVnaXN0ZXJJRCogdmFs
dWUpOwogCiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRSZXNvbHZlKFJlZ2lzdGVySUQqIGRzdCwg
Y29uc3QgUmVzb2x2ZVJlc3VsdCYsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5KTsKQEAgLTY1
MCw2ICs2ODUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgU2hhcmVkU3ltYm9sVGFibGUq
IG1fc3ltYm9sVGFibGU7CiAKICAgICAgICAgU2NvcGVOb2RlKiBtX3Njb3BlTm9kZTsKKyAgICAg
ICAgU3Ryb25nPEpTU2NvcGU+IG1fc2NvcGU7CiAgICAgICAgIFN0cm9uZzxVbmxpbmtlZENvZGVC
bG9jaz4gbV9jb2RlQmxvY2s7CiAKICAgICAgICAgLy8gU29tZSBvZiB0aGVzZSBvYmplY3RzIGtl
ZXAgcG9pbnRlcnMgdG8gb25lIGFub3RoZXIuIFRoZXkgYXJlIGFycmFuZ2VkCkBAIC02NjAsNiAr
Njk2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZ2lzdGVySUQgbV9jYWxsZWVSZWdp
c3RlcjsKICAgICAgICAgUmVnaXN0ZXJJRCogbV9hY3RpdmF0aW9uUmVnaXN0ZXI7CiAgICAgICAg
IFJlZ2lzdGVySUQqIG1fZW1wdHlWYWx1ZVJlZ2lzdGVyOworICAgICAgICBSZWdpc3RlcklEKiBt
X2dsb2JhbE9iamVjdFJlZ2lzdGVyOwogICAgICAgICBTZWdtZW50ZWRWZWN0b3I8UmVnaXN0ZXJJ
RCwgMzI+IG1fY29uc3RhbnRQb29sUmVnaXN0ZXJzOwogICAgICAgICBTZWdtZW50ZWRWZWN0b3I8
UmVnaXN0ZXJJRCwgMzI+IG1fY2FsbGVlUmVnaXN0ZXJzOwogICAgICAgICBTZWdtZW50ZWRWZWN0
b3I8UmVnaXN0ZXJJRCwgMzI+IG1fcGFyYW1ldGVyczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCA0ZTc0NWUxYzEwYzFj
YzFjNzM2OTM0YjBhMTZkZGU1ZWM2NWQ4ZjNmLi5hODE4NzNmNjlkYmYxNWQ5NmU3YTQ2NTU0Nzhm
ZmQ4OTMyYTE2NDdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC0xNDEsNyArMTQxLDcgQEAgUmVnaXN0ZXJJRCogVGhp
c05vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3Rl
cklEKiBkc3QKIAogYm9vbCBSZXNvbHZlTm9kZTo6aXNQdXJlKEJ5dGVjb2RlR2VuZXJhdG9yJiBn
ZW5lcmF0b3IpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGdlbmVyYXRvci5yZXNvbHZlKG1faWRlbnQp
LmlzUmVnaXN0ZXIoKTsKKyAgICByZXR1cm4gZ2VuZXJhdG9yLnJlc29sdmUobV9pZGVudCkuaXNT
dGF0aWMoKTsKIH0KIAogUmVnaXN0ZXJJRCogUmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCkBAIC00MzksNiArNDM5
LDE0IEBAIFJlZ2lzdGVySUQqIEZ1bmN0aW9uQ2FsbFJlc29sdmVOb2RlOjplbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwKICAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5l
bWl0Q2FsbChnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbk9ySWdub3JlZChkc3QsIGNhbGxBcmd1
bWVudHMudGhpc1JlZ2lzdGVyKCkpLCBmdW5jLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNh
bGxBcmd1bWVudHMsIGRpdm90KCksIHN0YXJ0T2Zmc2V0KCksIGVuZE9mZnNldCgpKTsKICAgICB9
CiAKKyAgICBpZiAocmVzb2x2ZVJlc3VsdC5pc1N0YXRpYygpKSB7CisgICAgICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiBmdW5jID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOworICAgICAgICBDYWxs
QXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOworICAgICAgICBnZW5l
cmF0b3IuZW1pdEdldFN0YXRpY1ZhcihmdW5jLmdldCgpLCByZXNvbHZlUmVzdWx0LCBtX2lkZW50
KTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVy
KCksIGpzVW5kZWZpbmVkKCkpOworICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRDYWxsKGdl
bmVyYXRvci5maW5hbERlc3RpbmF0aW9uT3JJZ25vcmVkKGRzdCwgZnVuYy5nZXQoKSksIGZ1bmMu
Z2V0KCksIGV4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIHN0YXJ0T2Zm
c2V0KCksIGVuZE9mZnNldCgpKTsKKyAgICB9CisKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZnVu
YyA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1
bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwogICAgIGludCBpZGVudGlmaWVyU3RhcnQgPSBkaXZv
dCgpIC0gc3RhcnRPZmZzZXQoKTsKQEAgLTYyMiw3ICs2MzAsMTkgQEAgUmVnaXN0ZXJJRCogUG9z
dGZpeE5vZGU6OmVtaXRSZXNvbHZlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lz
dGVySUQqIGQKICAgICAgICAgICAgIHJldHVybiBlbWl0UHJlSW5jT3JEZWMoZ2VuZXJhdG9yLCBs
b2NhbCwgbV9vcGVyYXRvcik7CiAgICAgICAgIHJldHVybiBlbWl0UG9zdEluY09yRGVjKGdlbmVy
YXRvciwgZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSwgbG9jYWwsIG1fb3BlcmF0b3Ip
OwogICAgIH0KLSAgICAKKworICAgIGlmIChyZXNvbHZlUmVzdWx0LmlzU3RhdGljKCkgJiYgIXJl
c29sdmVSZXN1bHQuaXNSZWFkT25seSgpKSB7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2
YWx1ZSA9IGdlbmVyYXRvci5lbWl0R2V0U3RhdGljVmFyKGdlbmVyYXRvci5uZXdUZW1wb3Jhcnko
KSwgcmVzb2x2ZVJlc3VsdCwgaWRlbnQpOworICAgICAgICBSZWdpc3RlcklEKiBvbGRWYWx1ZTsK
KyAgICAgICAgaWYgKGRzdCA9PSBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKSB7CisgICAgICAg
ICAgICBvbGRWYWx1ZSA9IDA7CisgICAgICAgICAgICBlbWl0UHJlSW5jT3JEZWMoZ2VuZXJhdG9y
LCB2YWx1ZS5nZXQoKSwgbV9vcGVyYXRvcik7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAg
b2xkVmFsdWUgPSBlbWl0UG9zdEluY09yRGVjKGdlbmVyYXRvciwgZ2VuZXJhdG9yLmZpbmFsRGVz
dGluYXRpb24oZHN0KSwgdmFsdWUuZ2V0KCksIG1fb3BlcmF0b3IpOworICAgICAgICBnZW5lcmF0
b3IuZW1pdFB1dFN0YXRpY1ZhcihyZXNvbHZlUmVzdWx0LCBpZGVudCwgdmFsdWUuZ2V0KCkpOwor
ICAgICAgICByZXR1cm4gb2xkVmFsdWU7CisgICAgfQorCiAgICAgZ2VuZXJhdG9yLmVtaXRFeHBy
ZXNzaW9uSW5mbyhkaXZvdCgpLCBzdGFydE9mZnNldCgpLCBlbmRPZmZzZXQoKSk7CiAgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwogICAgIE5v
bmxvY2FsUmVzb2x2ZUluZm8gcmVzb2x2ZUluZm87CkBAIC03NjcsNiArNzg3LDExIEBAIFJlZ2lz
dGVySUQqIFR5cGVPZlJlc29sdmVOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
IGdlbmVyYXRvciwgUmVnaXN0CiAgICAgICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdFR5cGVPZihn
ZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QpLCBsb2NhbCk7CiAgICAgfQogCisgICAgaWYg
KHJlc29sdmVSZXN1bHQuaXNTdGF0aWMoKSkgeworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
c2NyYXRjaCA9IGdlbmVyYXRvci5lbWl0R2V0U3RhdGljVmFyKGdlbmVyYXRvci50ZW1wRGVzdGlu
YXRpb24oZHN0KSwgcmVzb2x2ZVJlc3VsdCwgbV9pZGVudCk7CisgICAgICAgIHJldHVybiBnZW5l
cmF0b3IuZW1pdFR5cGVPZihnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QsIHNjcmF0Y2gu
Z2V0KCkpLCBzY3JhdGNoLmdldCgpKTsKKyAgICB9CisKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
c2NyYXRjaCA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZUJhc2UoZ2VuZXJhdG9yLnRlbXBEZXN0aW5h
dGlvbihkc3QpLCByZXNvbHZlUmVzdWx0LCBtX2lkZW50KTsKICAgICBnZW5lcmF0b3IuZW1pdEdl
dEJ5SWQoc2NyYXRjaC5nZXQoKSwgc2NyYXRjaC5nZXQoKSwgbV9pZGVudCk7CiAgICAgaWYgKGRz
dCA9PSBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKQpAQCAtODA4LDYgKzgzMywxMyBAQCBSZWdp
c3RlcklEKiBQcmVmaXhOb2RlOjplbWl0UmVzb2x2ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLCBSZWdpc3RlcklEKiBkcwogICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmVUb0Rlc3Rp
bmF0aW9uSWZOZWVkZWQoZHN0LCBsb2NhbCk7CiAgICAgfQogCisgICAgaWYgKHJlc29sdmVSZXN1
bHQuaXNTdGF0aWMoKSAmJiAhcmVzb2x2ZVJlc3VsdC5pc1JlYWRPbmx5KCkpIHsKKyAgICAgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IHByb3BEc3QgPSBnZW5lcmF0b3IuZW1pdEdldFN0YXRpY1Zhcihn
ZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIHJlc29sdmVSZXN1bHQsIGlkZW50KTsKKyAg
ICAgICAgZW1pdFByZUluY09yRGVjKGdlbmVyYXRvciwgcHJvcERzdC5nZXQoKSwgbV9vcGVyYXRv
cik7CisgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0U3RhdGljVmFyKHJlc29sdmVSZXN1bHQsIGlk
ZW50LCBwcm9wRHN0LmdldCgpKTsKKyAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5tb3ZlVG9EZXN0
aW5hdGlvbklmTmVlZGVkKGRzdCwgcHJvcERzdC5nZXQoKSk7CisgICAgfQorCiAgICAgZ2VuZXJh
dG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBzdGFydE9mZnNldCgpLCBlbmRPZmZzZXQo
KSk7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByb3BEc3QgPSBnZW5lcmF0b3IudGVtcERlc3Rp
bmF0aW9uKGRzdCk7CiAgICAgTm9ubG9jYWxSZXNvbHZlSW5mbyByZXNvbHZlVmVyaWZpZXI7CkBA
IC0xMjY3LDYgKzEyOTksMTMgQEAgUmVnaXN0ZXJJRCogUmVhZE1vZGlmeVJlc29sdmVOb2RlOjpl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmUKICAgICAgICAgcmV0
dXJuIGdlbmVyYXRvci5tb3ZlVG9EZXN0aW5hdGlvbklmTmVlZGVkKGRzdCwgcmVzdWx0KTsKICAg
ICB9CiAKKyAgICBpZiAocmVzb2x2ZVJlc3VsdC5pc1N0YXRpYygpICYmICFyZXNvbHZlUmVzdWx0
LmlzUmVhZE9ubHkoKSkgeworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3JjMSA9IGdlbmVy
YXRvci5lbWl0R2V0U3RhdGljVmFyKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgcmVz
b2x2ZVJlc3VsdCwgbV9pZGVudCk7CisgICAgICAgIFJlZ2lzdGVySUQqIHJlc3VsdCA9IGVtaXRS
ZWFkTW9kaWZ5QXNzaWdubWVudChnZW5lcmF0b3IsIGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9u
KGRzdCwgc3JjMS5nZXQoKSksIHNyYzEuZ2V0KCksIG1fcmlnaHQsIG1fb3BlcmF0b3IsIE9wZXJh
bmRUeXBlcyhSZXN1bHRUeXBlOjp1bmtub3duVHlwZSgpLCBtX3JpZ2h0LT5yZXN1bHREZXNjcmlw
dG9yKCkpKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRTdGF0aWNWYXIocmVzb2x2ZVJlc3Vs
dCwgbV9pZGVudCwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKICAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3JjMSA9IGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0
KTsKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCkgLSBzdGFydE9mZnNl
dCgpICsgbV9pZGVudC5sZW5ndGgoKSwgbV9pZGVudC5sZW5ndGgoKSwgMCk7CiAgICAgTm9ubG9j
YWxSZXNvbHZlSW5mbyByZXNvbHZlVmVyaWZpZXI7CkBAIC0xMjkwLDYgKzEzMjksMTQgQEAgUmVn
aXN0ZXJJRCogQXNzaWduUmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYgZ2VuZXJhdG9yLCBSZWdpc3QKICAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5tb3ZlVG9EZXN0
aW5hdGlvbklmTmVlZGVkKGRzdCwgcmVzdWx0KTsKICAgICB9CiAKKyAgICBpZiAocmVzb2x2ZVJl
c3VsdC5pc1N0YXRpYygpICYmICFyZXNvbHZlUmVzdWx0LmlzUmVhZE9ubHkoKSkgeworICAgICAg
ICBpZiAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpCisgICAgICAgICAgICBkc3Qg
PSAwOworICAgICAgICBSZWdpc3RlcklEKiB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShkc3Qs
IG1fcmlnaHQpOworICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dFN0YXRpY1ZhcihyZXNvbHZlUmVz
dWx0LCBtX2lkZW50LCB2YWx1ZSk7CisgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICB9CisKICAg
ICBOb25sb2NhbFJlc29sdmVJbmZvIHJlc29sdmVWZXJpZmllcjsKICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gYmFzZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZUJhc2VGb3JQdXQoZ2VuZXJhdG9yLm5l
d1RlbXBvcmFyeSgpLCByZXNvbHZlUmVzdWx0LCBtX2lkZW50LCByZXNvbHZlVmVyaWZpZXIpOwog
ICAgIGlmIChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSkKQEAgLTEzOTEsMTAgKzE0
MzgsOSBAQCBSZWdpc3RlcklEKiBDb25zdERlY2xOb2RlOjplbWl0Q29kZVNpbmdsZShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yKQogCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0g
bV9pbml0ID8gZ2VuZXJhdG9yLmVtaXROb2RlKG1faW5pdCkgOiBnZW5lcmF0b3IuZW1pdExvYWQo
MCwganNVbmRlZmluZWQoKSk7CiAKLSAgICBpZiAoZ2VuZXJhdG9yLmNvZGVUeXBlKCkgPT0gR2xv
YmFsQ29kZSkgewotICAgICAgICBpZiAoUmVnaXN0ZXJJRCogcmVzdWx0ID0gZ2VuZXJhdG9yLmVt
aXRJbml0R2xvYmFsQ29uc3QobV9pZGVudCwgdmFsdWUuZ2V0KCkpKQotICAgICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKLSAgICB9CisgICAgaWYgKGdlbmVyYXRvci5jb2RlVHlwZSgpID09IEdsb2Jh
bENvZGUpCisgICAgICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdEluaXRHbG9iYWxDb25zdChtX2lk
ZW50LCB2YWx1ZS5nZXQoKSk7CisKICAgICBpZiAoZ2VuZXJhdG9yLmNvZGVUeXBlKCkgIT0gRXZh
bENvZGUpCiAgICAgICAgIHJldHVybiB2YWx1ZS5nZXQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCA4NDY1YTcwZDJjYmY4ODZj
MTA5MTUzY2E4NWVhMGMzNDc1NmRkNjg4Li5kZGNiMzRiNDMxODAzMzcxNDA3YWM5MjhiYWVjN2Zj
Y2ViZWYzNDgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVD
b2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcApAQCAtMzA4Myw2ICszMDgzLDMyIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBh
cnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICBhZGRUb0dyYXBoKEp1bXAsIE9w
SW5mbyhtX2N1cnJlbnRJbmRleCArIE9QQ09ERV9MRU5HVEgob3Bfam5lcV9wdHIpKSk7CiAgICAg
ICAgICAgICBMQVNUX09QQ09ERShvcF9qbmVxX3B0cik7CiAKKyAgICAgICAgY2FzZSBvcF9nZXRf
c2NvcGVkX3ZhcjogeworICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiA9IGdl
dFByZWRpY3Rpb24oKTsKKyAgICAgICAgICAgIGludCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25b
MV0udS5vcGVyYW5kOworICAgICAgICAgICAgaW50IHNsb3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25b
Ml0udS5vcGVyYW5kOworICAgICAgICAgICAgaW50IGRlcHRoID0gY3VycmVudEluc3RydWN0aW9u
WzNdLnUub3BlcmFuZDsKKyAgICAgICAgICAgIGJvb2wgaGFzVG9wU2NvcGUgPSBtX2NvZGVCbG9j
ay0+Y29kZVR5cGUoKSA9PSBGdW5jdGlvbkNvZGUgJiYgbV9jb2RlQmxvY2stPm5lZWRzRnVsbFNj
b3BlQ2hhaW4oKTsKKyAgICAgICAgICAgIEFTU0VSVCghaGFzVG9wU2NvcGUgfHwgZGVwdGggPj0g
MSk7CisgICAgICAgICAgICBOb2RlKiBzY29wZSA9IGdldFNjb3BlKGhhc1RvcFNjb3BlLCBkZXB0
aCAtIGhhc1RvcFNjb3BlKTsKKyAgICAgICAgICAgIE5vZGUqIGdldFNjb3BlUmVnaXN0ZXJzID0g
YWRkVG9HcmFwaChHZXRTY29wZVJlZ2lzdGVycywgc2NvcGUpOworICAgICAgICAgICAgTm9kZSog
Z2V0U2NvcGVkVmFyID0gYWRkVG9HcmFwaChHZXRTY29wZWRWYXIsIE9wSW5mbyhzbG90KSwgT3BJ
bmZvKHByZWRpY3Rpb24pLCBnZXRTY29wZVJlZ2lzdGVycyk7CisgICAgICAgICAgICBzZXQoZHN0
LCBnZXRTY29wZWRWYXIpOworICAgICAgICAgICAgTkVYVF9PUENPREUob3BfZ2V0X3Njb3BlZF92
YXIpOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBvcF9wdXRfc2NvcGVkX3ZhcjogeworICAg
ICAgICAgICAgaW50IHNsb3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworICAg
ICAgICAgICAgaW50IGRlcHRoID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKKyAg
ICAgICAgICAgIGludCBzb3VyY2UgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOwor
ICAgICAgICAgICAgYm9vbCBoYXNUb3BTY29wZSA9IG1fY29kZUJsb2NrLT5jb2RlVHlwZSgpID09
IEZ1bmN0aW9uQ29kZSAmJiBtX2NvZGVCbG9jay0+bmVlZHNGdWxsU2NvcGVDaGFpbigpOworICAg
ICAgICAgICAgQVNTRVJUKCFoYXNUb3BTY29wZSB8fCBkZXB0aCA+PSAxKTsKKyAgICAgICAgICAg
IE5vZGUqIHNjb3BlID0gZ2V0U2NvcGUoaGFzVG9wU2NvcGUsIGRlcHRoIC0gaGFzVG9wU2NvcGUp
OworICAgICAgICAgICAgTm9kZSogc2NvcGVSZWdpc3RlcnMgPSBhZGRUb0dyYXBoKEdldFNjb3Bl
UmVnaXN0ZXJzLCBzY29wZSk7CisgICAgICAgICAgICBhZGRUb0dyYXBoKFB1dFNjb3BlZFZhciwg
T3BJbmZvKHNsb3QpLCBzY29wZSwgc2NvcGVSZWdpc3RlcnMsIGdldChzb3VyY2UpKTsKKyAgICAg
ICAgICAgIE5FWFRfT1BDT0RFKG9wX3B1dF9zY29wZWRfdmFyKTsKKyAgICAgICAgfQorCiAgICAg
ICAgIGNhc2Ugb3BfcmVzb2x2ZToKICAgICAgICAgY2FzZSBvcF9yZXNvbHZlX2dsb2JhbF9wcm9w
ZXJ0eToKICAgICAgICAgY2FzZSBvcF9yZXNvbHZlX2dsb2JhbF92YXI6CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKaW5kZXggOTYyNTRhM2Q0OTJkMDFj
MTMyYzY2ZjI3MGM2MDEwNTA0MGM3ODg1MC4uOGZjY2I4MDRiMjhkMWM0ZTZiMWJmOGYzM2FlNjdj
MmE4MzczNGMyZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBh
YmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0
aWVzLmNwcApAQCAtODUsNyArODUsNiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZGVidWdGYWlsKENv
ZGVCbG9jayogY29kZUJsb2NrLCBPcGNvZGVJRCBvcGNvZGVJRCwgQ2FwYWJpbGl0eQogICAgIGlm
IChyZXN1bHQgPT0gQ2Fubm90Q29tcGlsZSkKICAgICAgICAgZGF0YUxvZ0YoIkNhbm5vdCBoYW5k
bGUgY29kZSBibG9jayAlcCBiZWNhdXNlIG9mIG9wY29kZSAlcy5cbiIsIGNvZGVCbG9jaywgb3Bj
b2RlTmFtZXNbb3Bjb2RlSURdKTsKICAgICBlbHNlIHsKLSAgICAgICAgQVNTRVJUKHJlc3VsdCA9
PSBTaG91bGRQcm9maWxlKTsKICAgICAgICAgZGF0YUxvZ0YoIkNhbm5vdCBjb21waWxlIGNvZGUg
YmxvY2sgJXAgYmVjYXVzZSBvZiBvcGNvZGUgJXMsIGJ1dCBpbmxpbmluZyBtaWdodCBiZSBwb3Nz
aWJsZS5cbiIsIGNvZGVCbG9jaywgb3Bjb2RlTmFtZXNbb3Bjb2RlSURdKTsKICAgICB9CiAjZWxz
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmgKaW5kZXggNjA2
NGUzZWYxZTc0NGM1ZjI4YWNhNzYyZTQ4MTkyYmRhMDczYWY1ZC4uMjYxM2Q0MmE3NzBkYTc5ODRi
MTI4ZGFiNjNkMzRmOGRmZDAxOGUzYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDYXBhYmlsaXRpZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NhcGFiaWxpdGllcy5oCkBAIC0yMDMsNiArMjAzLDEwIEBAIGlubGluZSBDYXBhYmlsaXR5TGV2
ZWwgY2FuQ29tcGlsZU9wY29kZShPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiwgSW5zdHJ1
Y3RpCiAgICAgY2FzZSBvcF9yZXNvbHZlX3Njb3BlZF92YXJfd2l0aF90b3Bfc2NvcGVfY2hlY2s6
CiAgICAgICAgIHJldHVybiBDYW5Db21waWxlOwogCisgICAgY2FzZSBvcF9nZXRfc2NvcGVkX3Zh
cjoKKyAgICBjYXNlIG9wX3B1dF9zY29wZWRfdmFyOgorICAgICAgICByZXR1cm4gQ2FuQ29tcGls
ZTsKKwogICAgIGNhc2Ugb3BfcmVzb2x2ZV9iYXNlX3RvX2dsb2JhbDoKICAgICBjYXNlIG9wX3Jl
c29sdmVfYmFzZV90b19nbG9iYWxfZHluYW1pYzoKICAgICBjYXNlIG9wX3Jlc29sdmVfYmFzZV90
b19zY29wZToKQEAgLTIzNiw3ICsyNDAsMTEgQEAgaW5saW5lIGJvb2wgY2FuSW5saW5lT3Bjb2Rl
KE9wY29kZUlEIG9wY29kZUlELCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb24KICAg
ICBjYXNlIG9wX3Jlc29sdmVfd2l0aF9iYXNlOgogICAgIGNhc2Ugb3BfcmVzb2x2ZV93aXRoX3Ro
aXM6CiAgICAgICAgIHJldHVybiBjYW5JbmxpbmVSZXNvbHZlT3BlcmF0aW9ucyhwY1s0XS51LnJl
c29sdmVPcGVyYXRpb25zKTsKLSAgICAgICAgCisKKyAgICBjYXNlIG9wX2dldF9zY29wZWRfdmFy
OgorICAgIGNhc2Ugb3BfcHV0X3Njb3BlZF92YXI6CisgICAgICAgIHJldHVybiAhY29kZUJsb2Nr
LT5uZWVkc0Z1bGxTY29wZUNoYWluKCk7CisKICAgICAvLyBJbmxpbmluZyBkb2Vzbid0IGNvcnJl
Y3RseSByZW1hcCByZWd1bGFyIGV4cHJlc3Npb24gb3BlcmFuZHMuCiAgICAgY2FzZSBvcF9uZXdf
cmVnZXhwOgogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRleCAyZThmY2Vk
M2QyMzgxZDcwMDNhNzU4MGU1ODc1YmZlNjQ1MTMxZDkzLi44M2JmYTkwOTJkNmVmNjM5ZDBmNDc4
OWRiOTJkNDgxNDJkNDYwMGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC0zOTAs
NiArMzkwLDkgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBE
RUZJTkVfT1Aob3BfdG9fanNudW1iZXIpCiAgICAgICAgIERFRklORV9PUChvcF90b19wcmltaXRp
dmUpCiAKKyAgICAgICAgREVGSU5FX09QKG9wX2dldF9zY29wZWRfdmFyKQorICAgICAgICBERUZJ
TkVfT1Aob3BfcHV0X3Njb3BlZF92YXIpCisKICAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWRfY2hh
aW46CiAgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkX2dlbmVyaWM6CiAgICAgICAgIGNhc2Ugb3Bf
Z2V0X2J5X2lkX3Byb3RvOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXggYzBjM2M0NzkzZjMw
ZTQwZDE5NmE1YWFlMmVhYjQ0NzM5Y2Y4ZTkzYS4uODIwNmQwNDA4NWJmZTk2YmVmNmJlMTE1MGNk
N2IzYmFjNmU5YjA5ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC03NTYsNiArNzU2LDgg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdF9vcF90b19wcmltaXRpdmUoSW5z
dHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3VuZXhwZWN0ZWRfbG9hZChJbnN0cnVj
dGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfdXJzaGlmdChJbnN0cnVjdGlvbiopOworICAg
ICAgICB2b2lkIGVtaXRfb3BfZ2V0X3Njb3BlZF92YXIoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAg
dm9pZCBlbWl0X29wX3B1dF9zY29wZWRfdmFyKEluc3RydWN0aW9uKik7CiAKICAgICAgICAgdm9p
ZCBlbWl0U2xvd19vcF9hZGQoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0
ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfYml0YW5kKEluc3RydWN0aW9uKiwg
VmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAppbmRleCBkZjFlZmQ4ZjE3MjFiZmQwM2I4
N2JjNmIxNmY4MGVjZTlmZWFiYTRkLi4xM2RmZmEyMmE2YWQwZmFhMzAyMzQ0NjI4MjYyYmQ0OWJi
ZmJhMGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5
QWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNj
ZXNzLmNwcApAQCAtMTIwNCw2ICsxMjA0LDU0IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdl
dEJ5SWRDaGFpbihTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFN0cnVjdHVyZSogc3RyCiAg
ICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmtDYWxsZXJUb0Z1bmN0aW9uKHJldHVybkFkZHJlc3MsIEZ1
bmN0aW9uUHRyKGN0aV9vcF9nZXRfYnlfaWRfcHJvdG9fbGlzdCkpOwogfQogCit2b2lkIEpJVDo6
ZW1pdF9vcF9nZXRfc2NvcGVkX3ZhcihJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQor
eworICAgIGludCBza2lwID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKKworICAg
IGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKEpTU3RhY2s6OlNjb3BlQ2hhaW4sIHJlZ1Qw
KTsKKyAgICBib29sIGNoZWNrVG9wTGV2ZWwgPSBtX2NvZGVCbG9jay0+Y29kZVR5cGUoKSA9PSBG
dW5jdGlvbkNvZGUgJiYgbV9jb2RlQmxvY2stPm5lZWRzRnVsbFNjb3BlQ2hhaW4oKTsKKyAgICBB
U1NFUlQoc2tpcCB8fCAhY2hlY2tUb3BMZXZlbCk7CisgICAgaWYgKGNoZWNrVG9wTGV2ZWwgJiYg
c2tpcC0tKSB7CisgICAgICAgIEp1bXAgYWN0aXZhdGlvbk5vdENyZWF0ZWQ7CisgICAgICAgIGlm
IChjaGVja1RvcExldmVsKQorICAgICAgICAgICAgYWN0aXZhdGlvbk5vdENyZWF0ZWQgPSBicmFu
Y2hUZXN0UHRyKFplcm8sIGFkZHJlc3NGb3IobV9jb2RlQmxvY2stPmFjdGl2YXRpb25SZWdpc3Rl
cigpKSk7CisgICAgICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNTY29wZTo6b2Zmc2V0T2ZO
ZXh0KCkpLCByZWdUMCk7CisgICAgICAgIGFjdGl2YXRpb25Ob3RDcmVhdGVkLmxpbmsodGhpcyk7
CisgICAgfQorICAgIHdoaWxlIChza2lwLS0pCisgICAgICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdU
MCwgSlNTY29wZTo6b2Zmc2V0T2ZOZXh0KCkpLCByZWdUMCk7CisKKyAgICBsb2FkUHRyKEFkZHJl
c3MocmVnVDAsIEpTVmFyaWFibGVPYmplY3Q6Om9mZnNldE9mUmVnaXN0ZXJzKCkpLCByZWdUMCk7
CisgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVy
YW5kICogc2l6ZW9mKFJlZ2lzdGVyKSksIHJlZ1QwKTsKKyAgICBlbWl0VmFsdWVQcm9maWxpbmdT
aXRlKCk7CisgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0u
dS5vcGVyYW5kKTsKK30KKwordm9pZCBKSVQ6OmVtaXRfb3BfcHV0X3Njb3BlZF92YXIoSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBpbnQgc2tpcCA9IGN1cnJlbnRJbnN0
cnVjdGlvblsyXS51Lm9wZXJhbmQ7CisKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGN1cnJl
bnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQsIHJlZ1QwKTsKKworICAgIGVtaXRHZXRGcm9tQ2Fs
bEZyYW1lSGVhZGVyUHRyKEpTU3RhY2s6OlNjb3BlQ2hhaW4sIHJlZ1QxKTsKKyAgICBib29sIGNo
ZWNrVG9wTGV2ZWwgPSBtX2NvZGVCbG9jay0+Y29kZVR5cGUoKSA9PSBGdW5jdGlvbkNvZGUgJiYg
bV9jb2RlQmxvY2stPm5lZWRzRnVsbFNjb3BlQ2hhaW4oKTsKKyAgICBBU1NFUlQoc2tpcCB8fCAh
Y2hlY2tUb3BMZXZlbCk7CisgICAgaWYgKGNoZWNrVG9wTGV2ZWwgJiYgc2tpcC0tKSB7CisgICAg
ICAgIEp1bXAgYWN0aXZhdGlvbk5vdENyZWF0ZWQ7CisgICAgICAgIGlmIChjaGVja1RvcExldmVs
KQorICAgICAgICAgICAgYWN0aXZhdGlvbk5vdENyZWF0ZWQgPSBicmFuY2hUZXN0UHRyKFplcm8s
IGFkZHJlc3NGb3IobV9jb2RlQmxvY2stPmFjdGl2YXRpb25SZWdpc3RlcigpKSk7CisgICAgICAg
IGxvYWRQdHIoQWRkcmVzcyhyZWdUMSwgSlNTY29wZTo6b2Zmc2V0T2ZOZXh0KCkpLCByZWdUMSk7
CisgICAgICAgIGFjdGl2YXRpb25Ob3RDcmVhdGVkLmxpbmsodGhpcyk7CisgICAgfQorICAgIHdo
aWxlIChza2lwLS0pCisgICAgICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMSwgSlNTY29wZTo6b2Zm
c2V0T2ZOZXh0KCkpLCByZWdUMSk7CisKKyAgICBlbWl0V3JpdGVCYXJyaWVyKHJlZ1QxLCByZWdU
MCwgcmVnVDIsIHJlZ1QzLCBTaG91bGRGaWx0ZXJJbW1lZGlhdGVzLCBXcml0ZUJhcnJpZXJGb3JW
YXJpYWJsZUFjY2Vzcyk7CisKKyAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDEsIEpTVmFyaWFibGVP
YmplY3Q6Om9mZnNldE9mUmVnaXN0ZXJzKCkpLCByZWdUMSk7CisgICAgc3RvcmVQdHIocmVnVDAs
IEFkZHJlc3MocmVnVDEsIGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQgKiBzaXplb2Yo
UmVnaXN0ZXIpKSk7Cit9CisKIHZvaWQgSklUOjplbWl0X29wX2luaXRfZ2xvYmFsX2NvbnN0KElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCA9IG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCmluZGV4IDVk
OTQ1OTk1MTM3OWUzNjEzZTcwZjM0NDcyOTMzZmU3ZmY0OTU0MTcuLjUyYWYwY2I1ZGJjYzliMWIz
OWIzNzUwZmM5ZjM2NWEwOWNiOWE0ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcApAQCAtMTI0NCw2ICsxMjQ0LDU5IEBA
IHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfcG5hbWUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDCiAgICAgc3R1YkNhbGwuY2FsbChkc3QpOwogfQogCit2
b2lkIEpJVDo6ZW1pdF9vcF9nZXRfc2NvcGVkX3ZhcihJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQoreworICAgIGludCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5k
OworICAgIGludCBpbmRleCA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CisgICAg
aW50IHNraXAgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOworCisgICAgZW1pdEdl
dEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoSlNTdGFjazo6U2NvcGVDaGFpbiwgcmVnVDIpOworICAg
IGJvb2wgY2hlY2tUb3BMZXZlbCA9IG1fY29kZUJsb2NrLT5jb2RlVHlwZSgpID09IEZ1bmN0aW9u
Q29kZSAmJiBtX2NvZGVCbG9jay0+bmVlZHNGdWxsU2NvcGVDaGFpbigpOworICAgIEFTU0VSVChz
a2lwIHx8ICFjaGVja1RvcExldmVsKTsKKyAgICBpZiAoY2hlY2tUb3BMZXZlbCAmJiBza2lwLS0p
IHsKKyAgICAgICAgSnVtcCBhY3RpdmF0aW9uTm90Q3JlYXRlZDsKKyAgICAgICAgaWYgKGNoZWNr
VG9wTGV2ZWwpCisgICAgICAgICAgICBhY3RpdmF0aW9uTm90Q3JlYXRlZCA9IGJyYW5jaDMyKEVx
dWFsLCB0YWdGb3IobV9jb2RlQmxvY2stPmFjdGl2YXRpb25SZWdpc3RlcigpKSwgVHJ1c3RlZElt
bTMyKEpTVmFsdWU6OkVtcHR5VmFsdWVUYWcpKTsKKyAgICAgICAgbG9hZFB0cihBZGRyZXNzKHJl
Z1QyLCBKU1Njb3BlOjpvZmZzZXRPZk5leHQoKSksIHJlZ1QyKTsKKyAgICAgICAgYWN0aXZhdGlv
bk5vdENyZWF0ZWQubGluayh0aGlzKTsKKyAgICB9CisgICAgd2hpbGUgKHNraXAtLSkKKyAgICAg
ICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QyLCBKU1Njb3BlOjpvZmZzZXRPZk5leHQoKSksIHJlZ1Qy
KTsKKworICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMiwgSlNWYXJpYWJsZU9iamVjdDo6b2Zmc2V0
T2ZSZWdpc3RlcnMoKSksIHJlZ1QyKTsKKworICAgIGVtaXRMb2FkKGluZGV4LCByZWdUMSwgcmVn
VDAsIHJlZ1QyKTsKKyAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKCk7CisgICAgZW1pdFN0b3Jl
KGRzdCwgcmVnVDEsIHJlZ1QwKTsKKyAgICBtYXAobV9ieXRlY29kZU9mZnNldCArIE9QQ09ERV9M
RU5HVEgob3BfZ2V0X3Njb3BlZF92YXIpLCBkc3QsIHJlZ1QxLCByZWdUMCk7Cit9CisKK3ZvaWQg
SklUOjplbWl0X29wX3B1dF9zY29wZWRfdmFyKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCit7CisgICAgaW50IGluZGV4ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsK
KyAgICBpbnQgc2tpcCA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CisgICAgaW50
IHZhbHVlID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKKworICAgIGVtaXRMb2Fk
KHZhbHVlLCByZWdUMSwgcmVnVDApOworCisgICAgZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQ
dHIoSlNTdGFjazo6U2NvcGVDaGFpbiwgcmVnVDIpOworICAgIGJvb2wgY2hlY2tUb3BMZXZlbCA9
IG1fY29kZUJsb2NrLT5jb2RlVHlwZSgpID09IEZ1bmN0aW9uQ29kZSAmJiBtX2NvZGVCbG9jay0+
bmVlZHNGdWxsU2NvcGVDaGFpbigpOworICAgIEFTU0VSVChza2lwIHx8ICFjaGVja1RvcExldmVs
KTsKKyAgICBpZiAoY2hlY2tUb3BMZXZlbCAmJiBza2lwLS0pIHsKKyAgICAgICAgSnVtcCBhY3Rp
dmF0aW9uTm90Q3JlYXRlZDsKKyAgICAgICAgaWYgKGNoZWNrVG9wTGV2ZWwpCisgICAgICAgICAg
ICBhY3RpdmF0aW9uTm90Q3JlYXRlZCA9IGJyYW5jaDMyKEVxdWFsLCB0YWdGb3IobV9jb2RlQmxv
Y2stPmFjdGl2YXRpb25SZWdpc3RlcigpKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkVtcHR5VmFs
dWVUYWcpKTsKKyAgICAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QyLCBKU1Njb3BlOjpvZmZzZXRP
Zk5leHQoKSksIHJlZ1QyKTsKKyAgICAgICAgYWN0aXZhdGlvbk5vdENyZWF0ZWQubGluayh0aGlz
KTsKKyAgICB9CisgICAgd2hpbGUgKHNraXAtLSkKKyAgICAgICAgbG9hZFB0cihBZGRyZXNzKHJl
Z1QyLCBKU1Njb3BlOjpvZmZzZXRPZk5leHQoKSksIHJlZ1QyKTsKKworICAgIGxvYWRQdHIoQWRk
cmVzcyhyZWdUMiwgSlNWYXJpYWJsZU9iamVjdDo6b2Zmc2V0T2ZSZWdpc3RlcnMoKSksIHJlZ1Qz
KTsKKyAgICBlbWl0U3RvcmUoaW5kZXgsIHJlZ1QxLCByZWdUMCwgcmVnVDMpOworICAgIGVtaXRX
cml0ZUJhcnJpZXIocmVnVDIsIHJlZ1QxLCByZWdUMCwgcmVnVDEsIFNob3VsZEZpbHRlckltbWVk
aWF0ZXMsIFdyaXRlQmFycmllckZvclZhcmlhYmxlQWNjZXNzKTsKK30KKwogdm9pZCBKSVQ6OmVt
aXRfb3BfaW5pdF9nbG9iYWxfY29uc3QoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
IHsKICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4qIHJlZ2lzdGVyUG9pbnRlciA9IGN1cnJlbnRJ
bnN0cnVjdGlvblsxXS51LnJlZ2lzdGVyUG9pbnRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KaW5kZXggNWJi
ZmIyMjQxNjRkNjljZGQ4YjI2ZDY2MmI5M2RiNWFjODhjNmZiYS4uNTlmNjBlNWY0MTNhOWU3ODNl
MTAzYTNhOTZlZWUwODJhZjk2OWE5ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KQEAgLTE3ODEsNiArMTc4
MSw3MSBAQCBfbGxpbnRfb3BfY2F0Y2g6CiAgICAgZGlzcGF0Y2goMikKIAogCisjIEdpdmVzIHlv
dSB0aGUgc2NvcGUgaW4gdDAsIHdoaWxlIGFsbG93aW5nIHlvdSB0byBvcHRpb25hbGx5IHBlcmZv
cm0gYWRkaXRpb25hbCBjaGVja3Mgb24gdGhlCisjIHNjb3BlcyBhcyB0aGV5IGFyZSB0cmF2ZXJz
ZWQuIHNjb3BlQ2hlY2soKSBpcyBjYWxsZWQgd2l0aCB0d28gYXJndW1lbnRzOiB0aGUgcmVnaXN0
ZXIKKyMgaG9sZGluZyB0aGUgc2NvcGUsIGFuZCBhIHJlZ2lzdGVyIHRoYXQgY2FuIGJlIHVzZWQg
Zm9yIHNjcmF0Y2guIE5vdGUgdGhhdCB0aGlzIGRvZXMgbm90CisjIHVzZSB0Mywgc28geW91IGNh
biBob2xkIHN0dWZmIGluIHQzIGlmIG5lZWQgYmUuCittYWNybyBnZXREZUJydWlqblNjb3BlKGRl
QnJ1aWppbkluZGV4T3BlcmFuZCwgc2NvcGVDaGVjaykKKyAgICBsb2FkcCBTY29wZUNoYWluICsg
UGF5bG9hZE9mZnNldFtjZnJdLCB0MAorICAgIGxvYWRpIGRlQnJ1aWppbkluZGV4T3BlcmFuZCwg
dDIKKworICAgIGJ0aXogdDIsIC5kb25lCisKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDEK
KyAgICBiaW5lcSBDb2RlQmxvY2s6Om1fY29kZVR5cGVbdDFdLCBGdW5jdGlvbkNvZGUsIC5sb29w
CisgICAgYnRieiBDb2RlQmxvY2s6Om1fbmVlZHNGdWxsU2NvcGVDaGFpblt0MV0sIC5sb29wCisK
KyAgICBsb2FkaSBDb2RlQmxvY2s6Om1fYWN0aXZhdGlvblJlZ2lzdGVyW3QxXSwgdDEKKworICAg
ICMgTmVlZCB0byBjb25kaXRpb25hbGx5IHNraXAgb3ZlciBvbmUgc2NvcGUuCisgICAgYmllcSBU
YWdPZmZzZXRbY2ZyLCB0MSwgOF0sIEVtcHR5VmFsdWVUYWcsIC5ub0FjdGl2YXRpb24KKyAgICBz
Y29wZUNoZWNrKHQwLCB0MSkKKyAgICBsb2FkcCBKU1Njb3BlOjptX25leHRbdDBdLCB0MAorLm5v
QWN0aXZhdGlvbjoKKyAgICBzdWJpIDEsIHQyCisKKyAgICBidGl6IHQyLCAuZG9uZQorLmxvb3A6
CisgICAgc2NvcGVDaGVjayh0MCwgdDEpCisgICAgbG9hZHAgSlNTY29wZTo6bV9uZXh0W3QwXSwg
dDAKKyAgICBzdWJpIDEsIHQyCisgICAgYnRpbnogdDIsIC5sb29wCisKKy5kb25lOgorCitlbmQK
KworX2xsaW50X29wX2dldF9zY29wZWRfdmFyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICAj
IE9wZXJhbmRzIGFyZSBhcyBmb2xsb3dzOgorICAgICMgNFtQQ10gICBEZXN0aW5hdGlvbiBmb3Ig
dGhlIGxvYWQuCisgICAgIyA4W1BDXSAgIEluZGV4IG9mIHJlZ2lzdGVyIGluIHRoZSBzY29wZS4K
KyAgICAjIDEyW1BDXSAgRGUgQnJ1aWppbiBpbmRleC4KKyAgICBnZXREZUJydWlqblNjb3BlKDEy
W1BDXSwgbWFjcm8gKHNjb3BlLCBzY3JhdGNoKSBlbmQpCisgICAgbG9hZGkgNFtQQ10sIHQxCisg
ICAgbG9hZGkgOFtQQ10sIHQyCisgICAgbG9hZHAgSlNWYXJpYWJsZU9iamVjdDo6bV9yZWdpc3Rl
cnNbdDBdLCB0MAorICAgIGxvYWRpIFRhZ09mZnNldFt0MCwgdDIsIDhdLCB0MworICAgIGxvYWRp
IFBheWxvYWRPZmZzZXRbdDAsIHQyLCA4XSwgdDAKKyAgICBzdG9yZWkgdDMsIFRhZ09mZnNldFtj
ZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAg
IGxvYWRpIDE2W1BDXSwgdDEKKyAgICB2YWx1ZVByb2ZpbGUodDMsIHQwLCB0MSkKKyAgICBkaXNw
YXRjaCg1KQorCisKK19sbGludF9vcF9wdXRfc2NvcGVkX3ZhcjoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgZ2V0RGVCcnVpam5TY29wZSg4W1BDXSwgbWFjcm8gKHNjb3BlLCBzY3JhdGNoKSBl
bmQpCisgICAgbG9hZGkgMTJbUENdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDEs
IHQzLCB0MikKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICB3cml0ZUJhcnJpZXIodDMsIHQyKQor
ICAgIGxvYWRwIEpTVmFyaWFibGVPYmplY3Q6Om1fcmVnaXN0ZXJzW3QwXSwgdDAKKyAgICBzdG9y
ZWkgdDMsIFRhZ09mZnNldFt0MCwgdDEsIDhdCisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0
W3QwLCB0MSwgOF0KKyAgICBkaXNwYXRjaCg0KQorCiBfbGxpbnRfb3BfZW5kOgogICAgIHRyYWNl
RXhlY3V0aW9uKCkKICAgICBjaGVja1N3aXRjaFRvSklURm9yRXBpbG9ndWUoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20g
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQpp
bmRleCA4MzUyOTcxMTIwOTVlMzA5MGQxYjE4NmY2Y2I1ODg3MjExZDY4MTM1Li45MmY1Mzg4ZDMz
YmJmNWNmNzQzZTE5NmI1NzJmMjMwMjYxOGI0ZTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQpAQCAtMTYzMiw2ICsx
NjMyLDY3IEBAIF9sbGludF90aHJvd19kdXJpbmdfY2FsbF90cmFtcG9saW5lOgogICAgIGxvYWRw
IEpTR2xvYmFsRGF0YTo6Y2FsbEZyYW1lRm9yVGhyb3dbdDFdLCB0MAogICAgIGptcCBKU0dsb2Jh
bERhdGE6OnRhcmdldE1hY2hpbmVQQ0ZvclRocm93W3QxXQogCisjIEdpdmVzIHlvdSB0aGUgc2Nv
cGUgaW4gdDAsIHdoaWxlIGFsbG93aW5nIHlvdSB0byBvcHRpb25hbGx5IHBlcmZvcm0gYWRkaXRp
b25hbCBjaGVja3Mgb24gdGhlCisjIHNjb3BlcyBhcyB0aGV5IGFyZSB0cmF2ZXJzZWQuIHNjb3Bl
Q2hlY2soKSBpcyBjYWxsZWQgd2l0aCB0d28gYXJndW1lbnRzOiB0aGUgcmVnaXN0ZXIKKyMgaG9s
ZGluZyB0aGUgc2NvcGUsIGFuZCBhIHJlZ2lzdGVyIHRoYXQgY2FuIGJlIHVzZWQgZm9yIHNjcmF0
Y2guIE5vdGUgdGhhdCB0aGlzIGRvZXMgbm90CisjIHVzZSB0Mywgc28geW91IGNhbiBob2xkIHN0
dWZmIGluIHQzIGlmIG5lZWQgYmUuCittYWNybyBnZXREZUJydWlqblNjb3BlKGRlQnJ1aWppbklu
ZGV4T3BlcmFuZCwgc2NvcGVDaGVjaykKKyAgICBsb2FkcCBTY29wZUNoYWluW2Nmcl0sIHQwCisg
ICAgbG9hZGlzIGRlQnJ1aWppbkluZGV4T3BlcmFuZCwgdDIKKworICAgIGJ0aXogdDIsIC5kb25l
CisKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDEKKyAgICBiaW5lcSBDb2RlQmxvY2s6Om1f
Y29kZVR5cGVbdDFdLCBGdW5jdGlvbkNvZGUsIC5sb29wCisgICAgYnRieiBDb2RlQmxvY2s6Om1f
bmVlZHNGdWxsU2NvcGVDaGFpblt0MV0sIC5sb29wCisKKyAgICBsb2FkaXMgQ29kZUJsb2NrOjpt
X2FjdGl2YXRpb25SZWdpc3Rlclt0MV0sIHQxCisKKyAgICAjIE5lZWQgdG8gY29uZGl0aW9uYWxs
eSBza2lwIG92ZXIgb25lIHNjb3BlLgorICAgIGJ0cHogW2NmciwgdDEsIDhdLCAubm9BY3RpdmF0
aW9uCisgICAgc2NvcGVDaGVjayh0MCwgdDEpCisgICAgbG9hZHAgSlNTY29wZTo6bV9uZXh0W3Qw
XSwgdDAKKy5ub0FjdGl2YXRpb246CisgICAgc3ViaSAxLCB0MgorCisgICAgYnRpeiB0MiwgLmRv
bmUKKy5sb29wOgorICAgIHNjb3BlQ2hlY2sodDAsIHQxKQorICAgIGxvYWRwIEpTU2NvcGU6Om1f
bmV4dFt0MF0sIHQwCisgICAgc3ViaSAxLCB0MgorICAgIGJ0aW56IHQyLCAubG9vcAorCisuZG9u
ZToKK2VuZAorCitfbGxpbnRfb3BfZ2V0X3Njb3BlZF92YXI6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgICMgT3BlcmFuZHMgYXJlIGFzIGZvbGxvd3M6CisgICAgIyBwY1sxXTogRGVzdGluYXRp
b24gZm9yIHRoZSBsb2FkCisgICAgIyBwY1syXTogSW5kZXggb2YgcmVnaXN0ZXIgaW4gdGhlIHNj
b3BlCisgICAgIyAyNFtQQiwgUEMsIDhdICBEZSBCcnVpamluIGluZGV4LgorICAgIGdldERlQnJ1
aWpuU2NvcGUoMjRbUEIsIFBDLCA4XSwgbWFjcm8gKHNjb3BlLCBzY3JhdGNoKSBlbmQpCisgICAg
bG9hZGlzRnJvbUluc3RydWN0aW9uKDEsIHQxKQorICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigy
LCB0MikKKworICAgIGxvYWRwIEpTVmFyaWFibGVPYmplY3Q6Om1fcmVnaXN0ZXJzW3QwXSwgdDAK
KyAgICBsb2FkcCBbdDAsIHQyLCA4XSwgdDMKKyAgICBzdG9yZXAgdDMsIFtjZnIsIHQxLCA4XQor
ICAgIGxvYWRwIDMyW1BCLCBQQywgOF0sIHQxCisgICAgdmFsdWVQcm9maWxlKHQzLCB0MSkKKyAg
ICBkaXNwYXRjaCg1KQorCisKK19sbGludF9vcF9wdXRfc2NvcGVkX3ZhcjoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgZ2V0RGVCcnVpam5TY29wZSgxNltQQiwgUEMsIDhdLCBtYWNybyAoc2Nv
cGUsIHNjcmF0Y2gpIGVuZCkKKyAgICBsb2FkaXMgMjRbUEIsIFBDLCA4XSwgdDEKKyAgICBsb2Fk
Q29uc3RhbnRPclZhcmlhYmxlKHQxLCB0MykKKyAgICBsb2FkaXMgOFtQQiwgUEMsIDhdLCB0MQor
ICAgIHdyaXRlQmFycmllcih0MykKKyAgICBsb2FkcCBKU1ZhcmlhYmxlT2JqZWN0OjptX3JlZ2lz
dGVyc1t0MF0sIHQwCisgICAgc3RvcmVwIHQzLCBbdDAsIHQxLCA4XQorICAgIGRpc3BhdGNoKDQp
CiAKIG1hY3JvIG5hdGl2ZUNhbGxUcmFtcG9saW5lKGV4ZWN1dGFibGVPZmZzZXRUb0Z1bmN0aW9u
KQogICAgIHN0b3JlcCAwLCBDb2RlQmxvY2tbY2ZyXQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvZGVDYWNoZS5jcHAKaW5kZXggYTRiNjE5M2RjN2IxZDNkNDgzODhlMDM0YjcyOWQz
YzE3MDIzZTMyYS4uZmVjNjkwNTQ1YTVlMjMzOGNiN2I2NGI5MzVjOWE4ZmZiZmNkMDRiYiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCkBAIC02Niw3ICs2
Niw3IEBAIHRlbXBsYXRlIDw+IHN0cnVjdCBDYWNoZVR5cGVzPFVubGlua2VkRXZhbENvZGVCbG9j
az4gewogfTsKIAogdGVtcGxhdGUgPGNsYXNzIFVubGlua2VkQ29kZUJsb2NrVHlwZSwgY2xhc3Mg
RXhlY3V0YWJsZVR5cGU+Ci1VbmxpbmtlZENvZGVCbG9ja1R5cGUqIENvZGVDYWNoZTo6Z2V0Q29k
ZUJsb2NrKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgRXhlY3V0YWJsZVR5cGUqIGV4ZWN1dGFi
bGUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNQYXJzZXJTdHJpY3RuZXNzIHN0cmljdG5l
c3MsIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxlck1vZGUs
IFBhcnNlckVycm9yJiBlcnJvcikKK1VubGlua2VkQ29kZUJsb2NrVHlwZSogQ29kZUNhY2hlOjpn
ZXRDb2RlQmxvY2soSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1Njb3BlKiBzY29wZSwgRXhl
Y3V0YWJsZVR5cGUqIGV4ZWN1dGFibGUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNQYXJz
ZXJTdHJpY3RuZXNzIHN0cmljdG5lc3MsIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2Zp
bGVyTW9kZSBwcm9maWxlck1vZGUsIFBhcnNlckVycm9yJiBlcnJvcikKIHsKICAgICBTb3VyY2VD
b2RlS2V5IGtleSA9IFNvdXJjZUNvZGVLZXkoc291cmNlLCBTdHJpbmcoKSwgQ2FjaGVUeXBlczxV
bmxpbmtlZENvZGVCbG9ja1R5cGU+Ojpjb2RlVHlwZSwgc3RyaWN0bmVzcyk7CiAgICAgQ29kZUNh
Y2hlTWFwOjpBZGRSZXN1bHQgYWRkUmVzdWx0ID0gbV9zb3VyY2VDb2RlLmFkZChrZXksIFNvdXJj
ZUNvZGVWYWx1ZSgpKTsKQEAgLTg4LDcgKzg4LDcgQEAgVW5saW5rZWRDb2RlQmxvY2tUeXBlKiBD
b2RlQ2FjaGU6OmdldENvZGVCbG9jayhKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEV4ZWN1dGEK
IAogICAgIFVubGlua2VkQ29kZUJsb2NrVHlwZSogdW5saW5rZWRDb2RlID0gVW5saW5rZWRDb2Rl
QmxvY2tUeXBlOjpjcmVhdGUoJmdsb2JhbERhdGEsIGV4ZWN1dGFibGUtPmV4ZWN1dGFibGVJbmZv
KCkpOwogICAgIHVubGlua2VkQ29kZS0+cmVjb3JkUGFyc2Uocm9vdE5vZGUtPmZlYXR1cmVzKCks
IHJvb3ROb2RlLT5oYXNDYXB0dXJlZFZhcmlhYmxlcygpLCByb290Tm9kZS0+bGluZU5vKCkgLSBz
b3VyY2UuZmlyc3RMaW5lKCksIHJvb3ROb2RlLT5sYXN0TGluZSgpIC0gcm9vdE5vZGUtPmxpbmVO
bygpKTsKLSAgICBPd25QdHI8Qnl0ZWNvZGVHZW5lcmF0b3I+IGdlbmVyYXRvcihhZG9wdFB0cihu
ZXcgQnl0ZWNvZGVHZW5lcmF0b3IoZ2xvYmFsRGF0YSwgcm9vdE5vZGUuZ2V0KCksIHVubGlua2Vk
Q29kZSwgZGVidWdnZXJNb2RlLCBwcm9maWxlck1vZGUpKSk7CisgICAgT3duUHRyPEJ5dGVjb2Rl
R2VuZXJhdG9yPiBnZW5lcmF0b3IoYWRvcHRQdHIobmV3IEJ5dGVjb2RlR2VuZXJhdG9yKGdsb2Jh
bERhdGEsIHNjb3BlLCByb290Tm9kZS5nZXQoKSwgdW5saW5rZWRDb2RlLCBkZWJ1Z2dlck1vZGUs
IHByb2ZpbGVyTW9kZSkpKTsKICAgICBlcnJvciA9IGdlbmVyYXRvci0+Z2VuZXJhdGUoKTsKICAg
ICByb290Tm9kZS0+ZGVzdHJveURhdGEoKTsKICAgICBpZiAoZXJyb3IubV90eXBlICE9IFBhcnNl
ckVycm9yOjpFcnJvck5vbmUpIHsKQEAgLTEwNywxMiArMTA3LDEyIEBAIFVubGlua2VkQ29kZUJs
b2NrVHlwZSogQ29kZUNhY2hlOjpnZXRDb2RlQmxvY2soSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBFeGVjdXRhCiAKIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jayogQ29kZUNhY2hlOjpnZXRQcm9n
cmFtQ29kZUJsb2NrKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvZ3JhbUV4ZWN1dGFibGUq
IGV4ZWN1dGFibGUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNQYXJzZXJTdHJpY3RuZXNz
IHN0cmljdG5lc3MsIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9m
aWxlck1vZGUsIFBhcnNlckVycm9yJiBlcnJvcikKIHsKLSAgICByZXR1cm4gZ2V0Q29kZUJsb2Nr
PFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jaz4oZ2xvYmFsRGF0YSwgZXhlY3V0YWJsZSwgc291cmNl
LCBzdHJpY3RuZXNzLCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSwgZXJyb3IpOworICAgIHJl
dHVybiBnZXRDb2RlQmxvY2s8VW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrPihnbG9iYWxEYXRhLCAw
LCBleGVjdXRhYmxlLCBzb3VyY2UsIHN0cmljdG5lc3MsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJN
b2RlLCBlcnJvcik7CiB9CiAKLVVubGlua2VkRXZhbENvZGVCbG9jayogQ29kZUNhY2hlOjpnZXRF
dmFsQ29kZUJsb2NrKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgRXZhbEV4ZWN1dGFibGUqIGV4
ZWN1dGFibGUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNQYXJzZXJTdHJpY3RuZXNzIHN0
cmljdG5lc3MsIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxl
ck1vZGUsIFBhcnNlckVycm9yJiBlcnJvcikKK1VubGlua2VkRXZhbENvZGVCbG9jayogQ29kZUNh
Y2hlOjpnZXRFdmFsQ29kZUJsb2NrKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNTY29wZSog
c2NvcGUsIEV2YWxFeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3Vy
Y2UsIEpTUGFyc2VyU3RyaWN0bmVzcyBzdHJpY3RuZXNzLCBEZWJ1Z2dlck1vZGUgZGVidWdnZXJN
b2RlLCBQcm9maWxlck1vZGUgcHJvZmlsZXJNb2RlLCBQYXJzZXJFcnJvciYgZXJyb3IpCiB7Ci0g
ICAgcmV0dXJuIGdldENvZGVCbG9jazxVbmxpbmtlZEV2YWxDb2RlQmxvY2s+KGdsb2JhbERhdGEs
IGV4ZWN1dGFibGUsIHNvdXJjZSwgc3RyaWN0bmVzcywgZGVidWdnZXJNb2RlLCBwcm9maWxlck1v
ZGUsIGVycm9yKTsKKyAgICByZXR1cm4gZ2V0Q29kZUJsb2NrPFVubGlua2VkRXZhbENvZGVCbG9j
az4oZ2xvYmFsRGF0YSwgc2NvcGUsIGV4ZWN1dGFibGUsIHNvdXJjZSwgc3RyaWN0bmVzcywgZGVi
dWdnZXJNb2RlLCBwcm9maWxlck1vZGUsIGVycm9yKTsKIH0KIAogVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUqIENvZGVDYWNoZTo6Z2V0RnVuY3Rpb25FeGVjdXRhYmxlRnJvbUdsb2JhbENvZGUo
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBjb25zdCBT
b3VyY2VDb2RlJiBzb3VyY2UsIFBhcnNlckVycm9yJiBlcnJvcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29kZUNhY2hlLmgKaW5kZXggOWFhZWJhMzhjZjBmYWU5MTQzMjZjMTE5NGY4
NGU5Zjc1ZDE5MzQ4NS4uNTYwNTUyZWZjNTdhN2E5MTBmMGU3OGQzMzY4MjFmYzM2MThkMWQ0MSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmgKQEAgLTQyLDYgKzQy
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBFdmFsRXhlY3V0YWJsZTsKIGNsYXNzIEZ1bmN0
aW9uQm9keU5vZGU7CiBjbGFzcyBJZGVudGlmaWVyOworY2xhc3MgSlNTY29wZTsKIGNsYXNzIFBy
b2dyYW1FeGVjdXRhYmxlOwogY2xhc3MgVW5saW5rZWRDb2RlQmxvY2s7CiBjbGFzcyBVbmxpbmtl
ZEV2YWxDb2RlQmxvY2s7CkBAIC0yMjAsNyArMjIxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBQ
YXNzT3duUHRyPENvZGVDYWNoZT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRQdHIobmV3IENvZGVD
YWNoZSk7IH0KIAogICAgIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jayogZ2V0UHJvZ3JhbUNvZGVC
bG9jayhKU0dsb2JhbERhdGEmLCBQcm9ncmFtRXhlY3V0YWJsZSosIGNvbnN0IFNvdXJjZUNvZGUm
LCBKU1BhcnNlclN0cmljdG5lc3MsIERlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlLCBQYXJzZXJF
cnJvciYpOwotICAgIFVubGlua2VkRXZhbENvZGVCbG9jayogZ2V0RXZhbENvZGVCbG9jayhKU0ds
b2JhbERhdGEmLCBFdmFsRXhlY3V0YWJsZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU1BhcnNlclN0
cmljdG5lc3MsIERlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlLCBQYXJzZXJFcnJvciYpOworICAg
IFVubGlua2VkRXZhbENvZGVCbG9jayogZ2V0RXZhbENvZGVCbG9jayhKU0dsb2JhbERhdGEmLCBK
U1Njb3BlKiwgRXZhbEV4ZWN1dGFibGUqLCBjb25zdCBTb3VyY2VDb2RlJiwgSlNQYXJzZXJTdHJp
Y3RuZXNzLCBEZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSwgUGFyc2VyRXJyb3ImKTsKICAgICBV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZ2V0RnVuY3Rpb25FeGVjdXRhYmxlRnJvbUdsb2Jh
bENvZGUoSlNHbG9iYWxEYXRhJiwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFNvdXJjZUNvZGUm
LCBQYXJzZXJFcnJvciYpOwogICAgIH5Db2RlQ2FjaGUoKTsKIApAQCAtMjMzLDcgKzIzNCw3IEBA
IHByaXZhdGU6CiAgICAgQ29kZUNhY2hlKCk7CiAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVW5saW5r
ZWRDb2RlQmxvY2tUeXBlLCBjbGFzcyBFeGVjdXRhYmxlVHlwZT4gCi0gICAgVW5saW5rZWRDb2Rl
QmxvY2tUeXBlKiBnZXRDb2RlQmxvY2soSlNHbG9iYWxEYXRhJiwgRXhlY3V0YWJsZVR5cGUqLCBj
b25zdCBTb3VyY2VDb2RlJiwgSlNQYXJzZXJTdHJpY3RuZXNzLCBEZWJ1Z2dlck1vZGUsIFByb2Zp
bGVyTW9kZSwgUGFyc2VyRXJyb3ImKTsKKyAgICBVbmxpbmtlZENvZGVCbG9ja1R5cGUqIGdldENv
ZGVCbG9jayhKU0dsb2JhbERhdGEmLCBKU1Njb3BlKiwgRXhlY3V0YWJsZVR5cGUqLCBjb25zdCBT
b3VyY2VDb2RlJiwgSlNQYXJzZXJTdHJpY3RuZXNzLCBEZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9k
ZSwgUGFyc2VyRXJyb3ImKTsKIAogICAgIENvZGVDYWNoZU1hcCBtX3NvdXJjZUNvZGU7CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAppbmRleCBmMjZj
M2E2MGMyMWNkNTBlM2UzYjVkMWM4YjY5ZWI1MTY4YWYwMDAxLi44YjU4YjYyYWEzZTM5YTM0N2Zh
ZTkyOTYxYWY2OTQ4NGRlNzk1YTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FeGVjdXRhYmxlLmNwcApAQCAtMjExLDcgKzIxMSw3IEBAIEpTT2JqZWN0KiBFdmFsRXhlY3V0
YWJsZTo6Y29tcGlsZUludGVybmFsKEV4ZWNTdGF0ZSogZXhlYywgSlNTY29wZSogc2NvcGUsIEpJ
VENvCiAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBjcmVhdGVFdmFsRXJyb3Io
ZXhlYywgbGV4aWNhbEdsb2JhbE9iamVjdC0+ZXZhbERpc2FibGVkRXJyb3JNZXNzYWdlKCkpKTsK
IAogICAgICAgICBKU09iamVjdCogZXhjZXB0aW9uID0gMDsKLSAgICAgICAgVW5saW5rZWRFdmFs
Q29kZUJsb2NrKiB1bmxpbmtlZEV2YWxDb2RlID0gbGV4aWNhbEdsb2JhbE9iamVjdC0+Y3JlYXRl
RXZhbENvZGVCbG9jayhleGVjLCB0aGlzLCAmZXhjZXB0aW9uKTsKKyAgICAgICAgVW5saW5rZWRF
dmFsQ29kZUJsb2NrKiB1bmxpbmtlZEV2YWxDb2RlID0gbGV4aWNhbEdsb2JhbE9iamVjdC0+Y3Jl
YXRlRXZhbENvZGVCbG9jayhleGVjLCBzY29wZSwgdGhpcywgJmV4Y2VwdGlvbik7CiAgICAgICAg
IGlmICghdW5saW5rZWRFdmFsQ29kZSkKICAgICAgICAgICAgIHJldHVybiBleGNlcHRpb247CiAK
QEAgLTQ5OCw3ICs0OTgsNyBAQCBQYXNzT3duUHRyPEZ1bmN0aW9uQ29kZUJsb2NrPiBGdW5jdGlv
bkV4ZWN1dGFibGU6OnByb2R1Y2VDb2RlQmxvY2tGb3IoSlNTY29wZSogcwogICAgIFBhcnNlckVy
cm9yIGVycm9yOwogICAgIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUgPSBnbG9iYWxPYmplY3Qt
Pmhhc0RlYnVnZ2VyKCkgPyBEZWJ1Z2dlck9uIDogRGVidWdnZXJPZmY7CiAgICAgUHJvZmlsZXJN
b2RlIHByb2ZpbGVyTW9kZSA9IGdsb2JhbE9iamVjdC0+aGFzUHJvZmlsZXIoKSA/IFByb2ZpbGVy
T24gOiBQcm9maWxlck9mZjsKLSAgICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiB1bmxpbmtl
ZENvZGVCbG9jayA9IG1fdW5saW5rZWRFeGVjdXRhYmxlLT5jb2RlQmxvY2tGb3IoKmdsb2JhbERh
dGEsIG1fc291cmNlLCBzcGVjaWFsaXphdGlvbktpbmQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJN
b2RlLCBlcnJvcik7CisgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogdW5saW5rZWRDb2Rl
QmxvY2sgPSBtX3VubGlua2VkRXhlY3V0YWJsZS0+Y29kZUJsb2NrRm9yKCpnbG9iYWxEYXRhLCBz
Y29wZSwgbV9zb3VyY2UsIHNwZWNpYWxpemF0aW9uS2luZCwgZGVidWdnZXJNb2RlLCBwcm9maWxl
ck1vZGUsIGVycm9yKTsKICAgICByZWNvcmRQYXJzZShtX3VubGlua2VkRXhlY3V0YWJsZS0+ZmVh
dHVyZXMoKSwgbV91bmxpbmtlZEV4ZWN1dGFibGUtPmhhc0NhcHR1cmVkVmFyaWFibGVzKCksIGxp
bmVObygpLCBsYXN0TGluZSgpKTsKIAogICAgIGlmICghdW5saW5rZWRDb2RlQmxvY2spIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRl
eCBmODFhOWY1NDRhZjlkNzJjZWExODg2ZDFmZDI4OWIwOTYwYTY3YzJmLi5jMGUxNTRlY2MzZmZh
Yjg4NjNlNjUzZmIzZWQ1MWQxNGM2ZGM1YmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC02MTQsMTMgKzYxNCwxMyBAQCBVbmxp
bmtlZFByb2dyYW1Db2RlQmxvY2sqIEpTR2xvYmFsT2JqZWN0OjpjcmVhdGVQcm9ncmFtQ29kZUJs
b2NrKENhbGxGcmFtZSogY2FsbAogICAgIHJldHVybiB1bmxpbmtlZENvZGU7CiB9CiAKLVVubGlu
a2VkRXZhbENvZGVCbG9jayogSlNHbG9iYWxPYmplY3Q6OmNyZWF0ZUV2YWxDb2RlQmxvY2soQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUsIEV2YWxFeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU09iamVjdCoq
IGV4Y2VwdGlvbikKK1VubGlua2VkRXZhbENvZGVCbG9jayogSlNHbG9iYWxPYmplY3Q6OmNyZWF0
ZUV2YWxDb2RlQmxvY2soQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTU2NvcGUqIHNjb3BlLCBFdmFs
RXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNPYmplY3QqKiBleGNlcHRpb24pCiB7CiAgICAgUGFy
c2VyRXJyb3IgZXJyb3I7CiAgICAgSlNQYXJzZXJTdHJpY3RuZXNzIHN0cmljdG5lc3MgPSBleGVj
dXRhYmxlLT5pc1N0cmljdE1vZGUoKSA/IEpTUGFyc2VTdHJpY3QgOiBKU1BhcnNlTm9ybWFsOwog
ICAgIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUgPSBoYXNEZWJ1Z2dlcigpID8gRGVidWdnZXJP
biA6IERlYnVnZ2VyT2ZmOwogICAgIFByb2ZpbGVyTW9kZSBwcm9maWxlck1vZGUgPSBoYXNQcm9m
aWxlcigpID8gUHJvZmlsZXJPbiA6IFByb2ZpbGVyT2ZmOwotICAgIFVubGlua2VkRXZhbENvZGVC
bG9jayogdW5saW5rZWRDb2RlID0gZ2xvYmFsRGF0YSgpLmNvZGVDYWNoZSgpLT5nZXRFdmFsQ29k
ZUJsb2NrKGdsb2JhbERhdGEoKSwgZXhlY3V0YWJsZSwgZXhlY3V0YWJsZS0+c291cmNlKCksIHN0
cmljdG5lc3MsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBlcnJvcik7CisgICAgVW5saW5r
ZWRFdmFsQ29kZUJsb2NrKiB1bmxpbmtlZENvZGUgPSBnbG9iYWxEYXRhKCkuY29kZUNhY2hlKCkt
PmdldEV2YWxDb2RlQmxvY2soZ2xvYmFsRGF0YSgpLCBzY29wZSwgZXhlY3V0YWJsZSwgZXhlY3V0
YWJsZS0+c291cmNlKCksIHN0cmljdG5lc3MsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBl
cnJvcik7CiAKICAgICBpZiAoaGFzRGVidWdnZXIoKSkKICAgICAgICAgZGVidWdnZXIoKS0+c291
cmNlUGFyc2VkKGNhbGxGcmFtZSwgZXhlY3V0YWJsZS0+c291cmNlKCkucHJvdmlkZXIoKSwgZXJy
b3IubV9saW5lLCBlcnJvci5tX21lc3NhZ2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggMjA0YjZjZGEyMjJjMWM2Mzc2NmRmM2I4Y2Fk
MmY3ZDBjODlkNjA2ZC4uZTUyNTBhMzlkYzIzZGU0MDJkOTJhYmFmYzE3NTRhYzQzN2NkOTQ5NCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBA
IC0zOTAsNyArMzkwLDcgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIHdlYWtSYW5kb21JbnRlZ2Vy
KCkgeyByZXR1cm4gbV93ZWFrUmFuZG9tLmdldFVpbnQzMigpOyB9CiAKICAgICBVbmxpbmtlZFBy
b2dyYW1Db2RlQmxvY2sqIGNyZWF0ZVByb2dyYW1Db2RlQmxvY2soQ2FsbEZyYW1lKiwgUHJvZ3Jh
bUV4ZWN1dGFibGUqLCBKU09iamVjdCoqIGV4Y2VwdGlvbik7Ci0gICAgVW5saW5rZWRFdmFsQ29k
ZUJsb2NrKiBjcmVhdGVFdmFsQ29kZUJsb2NrKENhbGxGcmFtZSosIEV2YWxFeGVjdXRhYmxlKiwg
SlNPYmplY3QqKiBleGNlcHRpb24pOworICAgIFVubGlua2VkRXZhbENvZGVCbG9jayogY3JlYXRl
RXZhbENvZGVCbG9jayhDYWxsRnJhbWUqLCBKU1Njb3BlKiwgRXZhbEV4ZWN1dGFibGUqLCBKU09i
amVjdCoqIGV4Y2VwdGlvbik7CiAKIHByb3RlY3RlZDoKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PcHRpb25zLmNwcAppbmRleCAzODZlYjRmY2YxMjUyMDAxMjBjOTU0Mzk3MmVhOGY2
MzlmZDc1ODRiLi4wY2Y5YmVhOTg5YTM5N2M1Y2NhNzg2YWJjMjMzMGM0ZWJjZGNiMDZlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcApAQCAtMTQzLDcgKzE0Myw4
IEBAIHZvaWQgT3B0aW9uczo6aW5pdGlhbGl6ZSgpCiAjaWYgMAogICAgIDsgLy8gRGVjb25mdXNl
IGVkaXRvcnMgdGhhdCBkbyBhdXRvIGluZGVudGF0aW9uCiAjZW5kaWYKLSAgICAKKworLy8gICAg
dXNlREZHSklUKCkgPSBmYWxzZTsKICNpZiAhRU5BQkxFKEpJVCkKICAgICB1c2VKSVQoKSA9IGZh
bHNlOwogICAgIHVzZURGR0pJVCgpID0gZmFsc2U7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191604</attachid>
            <date>2013-03-05 16:51:06 -0800</date>
            <delta_ts>2013-03-06 12:18:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111497-20130305164713.patch</filename>
            <type>text/plain</type>
            <size>64616</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0ODQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
NTc0ZmM4ODk3Y2NmYzM0NWI2MTk1YjViMzEyOGY3NzdmOThiZDVjLi4zNmI5ZDc1ZTBlYjA1MmQy
N2UwM2VhZWNkMTA3OTU5YWNkOTkxNjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDQgQEAKKzIwMTMtMDMtMDUgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4K
KworICAgICAgICBCcmluZyBiYWNrIGVhZ2VyIHJlc29sdXRpb24gb2YgZnVuY3Rpb24gc2NvcGVk
IHZhcmlhYmxlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTExNDk3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhpcyByZXZlcnRzIHRoZSBnZXQvcHV0X3Njb3BlZF92YXIgcGFydCBvZiB0aGUgZ3JlYXQg
bm9uLWxvY2FsCisgICAgICAgIHZhcmlhYmxlIHJlc29sdXRpb24gcmVmYWN0b3JpbmcuICBUaGlz
IHN0aWxsIGxlYXZlcyBhbGwgdGhlIGxhenkKKyAgICAgICAgdmFyaWFibGUgcmVzb2x1dGlvbiBs
b2dpYyBhcyBpdCdzIG5lY2Vzc2FyeSBmb3IgZ2xvYmFsIHByb3BlcnR5CisgICAgICAgIHJlc29s
dXRpb24sIGFuZCBpIGRvbid0IHdhbnQgdG8gbWFrZSB0aGUgcGF0Y2ggYmlnZ2VyIHRoYW4gaXQK
KyAgICAgICAgYWxyZWFkeSBpcy4KKworICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6
CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6
Q29kZUJsb2NrOjpDb2RlQmxvY2spOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgor
ICAgICAgICAoQ29kZUJsb2NrKToKKyAgICAgICAgKiBieXRlY29kZS9PcGNvZGUuaDoKKyAgICAg
ICAgKEpTQyk6CisgICAgICAgIChKU0M6OnBhZE9wY29kZU5hbWUpOgorICAgICAgICAqIGJ5dGVj
b2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Z2VuZXJhdGVGdW5jdGlv
bkNvZGVCbG9jayk6CisgICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpj
b2RlQmxvY2tGb3IpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRD
b2RlQmxvY2spOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmg6CisgICAg
ICAgIChKU0MpOgorICAgICAgICAoVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUpOgorICAgICAg
ICAoVW5saW5rZWRDb2RlQmxvY2spOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6
dXNlc0dsb2JhbE9iamVjdCk6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpzZXRH
bG9iYWxPYmplY3RSZWdpc3Rlcik6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpn
bG9iYWxPYmplY3RSZWdpc3Rlcik6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6UmVzb2x2ZVJlc3VsdDo6Y2hlY2tWYWxpZGl0eSk6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TG9hZEdsb2JhbE9iamVjdCk6Cisg
ICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6cmVzb2x2ZSk6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpyZXNvbHZlQ29uc3REZWNsKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbHZlKToKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbHZlQmFzZSk6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2x2ZUJhc2VGb3JQdXQpOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc29sdmVXaXRoQmFzZUZvclB1dCk6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2x2ZVdpdGhUaGlzKToKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRTdGF0aWNWYXIpOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dFN0YXRpY1Zhcik6CisgICAgICAgICogYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OlJlc29sdmVSZXN1bHQ6Omxl
eGljYWxSZXNvbHZlKToKKyAgICAgICAgKEpTQzo6UmVzb2x2ZVJlc3VsdDo6aXNTdGF0aWMpOgor
ICAgICAgICAoSlNDOjpSZXNvbHZlUmVzdWx0OjpkZXB0aCk6CisgICAgICAgIChKU0M6OlJlc29s
dmVSZXN1bHQ6OmluZGV4KToKKyAgICAgICAgKFJlc29sdmVSZXN1bHQpOgorICAgICAgICAoSlND
OjpSZXNvbHZlUmVzdWx0OjpSZXNvbHZlUmVzdWx0KToKKyAgICAgICAgKEJ5dGVjb2RlR2VuZXJh
dG9yKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAg
KEpTQzo6UmVzb2x2ZU5vZGU6OmlzUHVyZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQ2FsbFJl
c29sdmVOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpQb3N0Zml4Tm9kZTo6ZW1p
dFJlc29sdmUpOgorICAgICAgICAoSlNDOjpUeXBlT2ZSZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjb2Rl
KToKKyAgICAgICAgKEpTQzo6UHJlZml4Tm9kZTo6ZW1pdFJlc29sdmUpOgorICAgICAgICAoSlND
OjpSZWFkTW9kaWZ5UmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkFz
c2lnblJlc29sdmVOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpDb25zdERlY2xO
b2RlOjplbWl0Q29kZVNpbmdsZSk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAg
ICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6ZGVidWdG
YWlsKToKKyAgICAgICAgKiBkZmcvREZHQ2FwYWJpbGl0aWVzLmg6CisgICAgICAgIChKU0M6OkRG
Rzo6Y2FuQ29tcGlsZU9wY29kZSk6CisgICAgICAgIChKU0M6OkRGRzo6Y2FuSW5saW5lT3Bjb2Rl
KToKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29t
cGlsZU1haW5QYXNzKToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAgIChKSVQpOgorICAg
ICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dF9vcF9nZXRfc2NvcGVkX3Zhcik6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3BfcHV0X3Njb3BlZF92YXIpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vz
czMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9zY29wZWRfdmFyKToK
KyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfc2NvcGVkX3Zh
cik6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAgICAg
ICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAqIHJ1bnRpbWUv
Q29kZUNhY2hlLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUNhY2hlOjpnZXRDb2RlQmxvY2spOgor
ICAgICAgICAoSlNDOjpDb2RlQ2FjaGU6OmdldFByb2dyYW1Db2RlQmxvY2spOgorICAgICAgICAo
SlNDOjpDb2RlQ2FjaGU6OmdldEV2YWxDb2RlQmxvY2spOgorICAgICAgICAqIHJ1bnRpbWUvQ29k
ZUNhY2hlLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoQ29kZUNhY2hlKToKKyAgICAgICAg
KiBydW50aW1lL0V4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpFdmFsRXhlY3V0YWJsZTo6
Y29tcGlsZUludGVybmFsKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpwcm9k
dWNlQ29kZUJsb2NrRm9yKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoK
KyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmNyZWF0ZUV2YWxDb2RlQmxvY2spOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTR2xvYmFsT2JqZWN0
KToKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpPcHRpb25z
Ojppbml0aWFsaXplKToKKwogMjAxMy0wMy0wNSAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJl
cmdAYXBwbGUuY29tPgogCiAgICAgICAgIE9iamVjdGl2ZS1DIEFQSTogSlNWYWx1ZSBzaG91bGQg
aW1wbGVtZW50IGluaXQgYW5kIHJldHVybiBuaWwgaW4gZXhjZXB0aW9uYWwgY2FzZXMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXggOTc0YTA0YmEx
ZjRjZTNhMWMyZjY2NjJmOTg0M2RlMWQ2Y2JlZmRjYy4uOWYxYWZjMTIyMTk3ZWQ1ZWM0ZWNjZTZj
Y2Y1M2U5YjY0ZjAwMWZlMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5jcHAKQEAgLTk4MCw2ICs5ODAsMjEgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRl
Y29kZShQcmludFN0cmVhbSYgb3V0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEluc3RydWN0aW8K
ICAgICAgICAgICAgIGR1bXBWYWx1ZVByb2ZpbGluZyhvdXQsIGl0LCBoYXNQcmludGVkUHJvZmls
aW5nKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAgICAgIGNhc2Ugb3BfZ2V0
X3Njb3BlZF92YXI6IHsKKyAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwor
ICAgICAgICAgICAgaW50IGluZGV4ID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBp
bnQgc2tpcExldmVscyA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgb3V0LnByaW50
ZigiWyU0ZF0gZ2V0X3Njb3BlZF92YXJcdCAlcywgJWQsICVkIiwgbG9jYXRpb24sIHJlZ2lzdGVy
TmFtZShleGVjLCByMCkuZGF0YSgpLCBpbmRleCwgc2tpcExldmVscyk7CisgICAgICAgICAgICBk
dW1wVmFsdWVQcm9maWxpbmcob3V0LCBpdCwgaGFzUHJpbnRlZFByb2ZpbGluZyk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIG9wX3B1dF9zY29wZWRfdmFyOiB7
CisgICAgICAgICAgICBpbnQgaW5kZXggPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAg
IGludCBza2lwTGV2ZWxzID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBpbnQgcjAg
PSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIG91dC5wcmludGYoIlslNGRdIHB1dF9z
Y29wZWRfdmFyXHQgJWQsICVkLCAlcyIsIGxvY2F0aW9uLCBpbmRleCwgc2tpcExldmVscywgcmVn
aXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KICAgICAgICAgY2FzZSBvcF9pbml0X2dsb2JhbF9jb25zdF9ub3A6IHsKICAgICAgICAgICAg
IG91dC5wcmludGYoIlslNGRdIGluaXRfZ2xvYmFsX2NvbnN0X25vcFx0IiwgbG9jYXRpb24pOwog
ICAgICAgICAgICAgaXQrKzsKQEAgLTE2NDQsOCArMTY1OSwxMCBAQCBDb2RlQmxvY2s6OkNvZGVC
bG9jayhDb3B5UGFyc2VkQmxvY2tUYWcsIENvZGVCbG9jayYgb3RoZXIpCiAgICAgLCBtX2FyZ3Vt
ZW50c1JlZ2lzdGVyKG90aGVyLm1fYXJndW1lbnRzUmVnaXN0ZXIpCiAgICAgLCBtX2FjdGl2YXRp
b25SZWdpc3RlcihvdGhlci5tX2FjdGl2YXRpb25SZWdpc3RlcikKICAgICAsIG1faXNTdHJpY3RN
b2RlKG90aGVyLm1faXNTdHJpY3RNb2RlKQorICAgICwgbV9uZWVkc0Z1bGxTY29wZUNoYWluKG90
aGVyLm1fbmVlZHNGdWxsU2NvcGVDaGFpbikKICAgICAsIG1fc291cmNlKG90aGVyLm1fc291cmNl
KQogICAgICwgbV9zb3VyY2VPZmZzZXQob3RoZXIubV9zb3VyY2VPZmZzZXQpCisgICAgLCBtX2Nv
ZGVUeXBlKG90aGVyLm1fY29kZVR5cGUpCiAgICAgLCBtX2lkZW50aWZpZXJzKG90aGVyLm1faWRl
bnRpZmllcnMpCiAgICAgLCBtX2NvbnN0YW50UmVnaXN0ZXJzKG90aGVyLm1fY29uc3RhbnRSZWdp
c3RlcnMpCiAgICAgLCBtX2Z1bmN0aW9uRGVjbHMob3RoZXIubV9mdW5jdGlvbkRlY2xzKQpAQCAt
MTY4Nyw4ICsxNzA0LDEwIEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKFNjcmlwdEV4ZWN1dGFibGUq
IG93bmVyRXhlY3V0YWJsZSwgVW5saW5rZWRDb2RlQmxvY2sqIHVubGluCiAgICAgLCBtX2FyZ3Vt
ZW50c1JlZ2lzdGVyKHVubGlua2VkQ29kZUJsb2NrLT5hcmd1bWVudHNSZWdpc3RlcigpKQogICAg
ICwgbV9hY3RpdmF0aW9uUmVnaXN0ZXIodW5saW5rZWRDb2RlQmxvY2stPmFjdGl2YXRpb25SZWdp
c3RlcigpKQogICAgICwgbV9pc1N0cmljdE1vZGUodW5saW5rZWRDb2RlQmxvY2stPmlzU3RyaWN0
TW9kZSgpKQorICAgICwgbV9uZWVkc0Z1bGxTY29wZUNoYWluKHVubGlua2VkQ29kZUJsb2NrLT5u
ZWVkc0Z1bGxTY29wZUNoYWluKCkpCiAgICAgLCBtX3NvdXJjZShzb3VyY2VQcm92aWRlcikKICAg
ICAsIG1fc291cmNlT2Zmc2V0KHNvdXJjZU9mZnNldCkKKyAgICAsIG1fY29kZVR5cGUodW5saW5r
ZWRDb2RlQmxvY2stPmNvZGVUeXBlKCkpCiAgICAgLCBtX2FsdGVybmF0aXZlKGFsdGVybmF0aXZl
KQogICAgICwgbV9vc3JFeGl0Q291bnRlcigwKQogICAgICwgbV9vcHRpbWl6YXRpb25EZWxheUNv
dW50ZXIoMCkKQEAgLTE3MDQsNyArMTcyMyw4IEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKFNjcmlw
dEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rZWRDb2RlQmxvY2sqIHVubGluCiAj
ZW5kaWYKICAgICBzZXRJZGVudGlmaWVycyh1bmxpbmtlZENvZGVCbG9jay0+aWRlbnRpZmllcnMo
KSk7CiAgICAgc2V0Q29uc3RhbnRSZWdpc3RlcnModW5saW5rZWRDb2RlQmxvY2stPmNvbnN0YW50
UmVnaXN0ZXJzKCkpOwotCisgICAgaWYgKHVubGlua2VkQ29kZUJsb2NrLT51c2VzR2xvYmFsT2Jq
ZWN0KCkpCisgICAgICAgIG1fY29uc3RhbnRSZWdpc3RlcnNbdW5saW5rZWRDb2RlQmxvY2stPmds
b2JhbE9iamVjdFJlZ2lzdGVyKCldLnNldCgqbV9nbG9iYWxEYXRhLCBvd25lckV4ZWN1dGFibGUs
IGdsb2JhbE9iamVjdCk7CiAgICAgbV9mdW5jdGlvbkRlY2xzLmdyb3codW5saW5rZWRDb2RlQmxv
Y2stPm51bWJlck9mRnVuY3Rpb25EZWNscygpKTsKICAgICBmb3IgKHNpemVfdCBjb3VudCA9IHVu
bGlua2VkQ29kZUJsb2NrLT5udW1iZXJPZkZ1bmN0aW9uRGVjbHMoKSwgaSA9IDA7IGkgPCBjb3Vu
dDsgKytpKSB7CiAgICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiB1bmxpbmtlZEV4
ZWN1dGFibGUgPSB1bmxpbmtlZENvZGVCbG9jay0+ZnVuY3Rpb25EZWNsKGkpOwpAQCAtMTkyMCw2
ICsxOTQwLDE2IEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKFNjcmlwdEV4ZWN1dGFibGUqIG93bmVy
RXhlY3V0YWJsZSwgVW5saW5rZWRDb2RlQmxvY2sqIHVubGluCiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogCisgICAgICAgIGNhc2Ugb3BfZ2V0X3Njb3BlZF92YXI6IHsKKyNpZiBFTkFC
TEUoREZHX0pJVCkKKyAgICAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9ICZtX3ZhbHVl
UHJvZmlsZXNbcGNbaSArIG9wTGVuZ3RoIC0gMV0udS5vcGVyYW5kXTsKKyAgICAgICAgICAgIEFT
U0VSVChwcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0ID09IC0xKTsKKyAgICAgICAgICAgIHByb2Zp
bGUtPm1fYnl0ZWNvZGVPZmZzZXQgPSBpOworICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyBv
cExlbmd0aCAtIDFdID0gcHJvZmlsZTsKKyNlbmRpZgorICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKwogICAgICAgICBjYXNlIG9wX2NhbGw6CiAgICAgICAgIGNhc2Ugb3BfY2FsbF9ldmFs
OiB7CiAjaWYgRU5BQkxFKERGR19KSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmgKaW5kZXggZThlM2U3Zjg3MmIwMDQwYjA3MzQyNzJkMDQ2NDE0NDc5NjFlMTYy
Yy4uNTc1ZGY3ZGViYzI4YjJlZjU2YTFkYmIzZjM1MWVlMmQwNzM2YTU4MSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaApAQCAtNTMyLDcgKzUzMiw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gbmVlZHNGdWxsU2Nv
cGVDaGFpbigpICYmIGNvZGVUeXBlKCkgIT0gR2xvYmFsQ29kZTsKICAgICAgICAgfQotICAgICAg
ICAKKwogICAgICAgICBib29sIGlzQ2FwdHVyZWQoaW50IG9wZXJhbmQsIElubGluZUNhbGxGcmFt
ZSogaW5saW5lQ2FsbEZyYW1lID0gMCkgY29uc3QKICAgICAgICAgewogICAgICAgICAgICAgaWYg
KG9wZXJhbmRJc0FyZ3VtZW50KG9wZXJhbmQpKQpAQCAtMTE1NSw5ICsxMTU1LDExIEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBpbnQgbV9hY3RpdmF0aW9uUmVnaXN0ZXI7CiAKICAgICAgICAg
Ym9vbCBtX2lzU3RyaWN0TW9kZTsKKyAgICAgICAgYm9vbCBtX25lZWRzRnVsbFNjb3BlQ2hhaW47
CiAKICAgICAgICAgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiBtX3NvdXJjZTsKICAgICAgICAgdW5z
aWduZWQgbV9zb3VyY2VPZmZzZXQ7CisgICAgICAgIHVuc2lnbmVkIG1fY29kZVR5cGU7CiAKICNp
ZiBFTkFCTEUoTExJTlQpCiAgICAgICAgIFNlZ21lbnRlZFZlY3RvcjxMTEludENhbGxMaW5rSW5m
bywgOD4gbV9sbGludENhbGxMaW5rSW5mb3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
T3Bjb2RlLmgKaW5kZXggYzkxN2UwN2JlMDc4MzIzMTJlOWQyMDk4OWU5YjYwY2FjNTJjYWUzNC4u
NTQ0MTRjMzVmOGQyMzUwMmY5ZDcxYjg0MDNmNDUyMmMwM2IzZDgxMiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaApAQCAtOTcsNiArOTcsOSBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICBtYWNybyhvcF9pc19mdW5jdGlvbiwgMykgXAogICAgIG1hY3JvKG9wX2luLCA0KSBc
CiAgICAgXAorICAgIG1hY3JvKG9wX2dldF9zY29wZWRfdmFyLCA1KSAvKiBoYXMgdmFsdWUgcHJv
ZmlsaW5nICovIFwKKyAgICBtYWNybyhvcF9wdXRfc2NvcGVkX3ZhciwgNCkgXAorICAgIFwKICAg
ICBtYWNybyhvcF9yZXNvbHZlLCA1KSAvKiBoYXMgdmFsdWUgcHJvZmlsaW5nICovICBcCiAgICAg
bWFjcm8ob3BfcmVzb2x2ZV9nbG9iYWxfcHJvcGVydHksIDUpIC8qIGhhcyB2YWx1ZSBwcm9maWxp
bmcgKi8gIFwKICAgICBtYWNybyhvcF9yZXNvbHZlX2dsb2JhbF92YXIsIDUpIC8qIGhhcyB2YWx1
ZSBwcm9maWxpbmcgKi8gIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCmluZGV4IGU5MWYxMzg0MzkwMmJiZDgzMGIwZWRjNjFh
MjZlMDZlZDg4YTcyNTQuLmNkMDM2YmRhOTVhNjk2ZTJiMzIxYWZhNjQ5YzY0NWI1OTE4YmMzYmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVC
bG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrLmNwcApAQCAtNDcsNyArNDcsNyBAQCBjb25zdCBDbGFzc0luZm8gVW5saW5rZWRQcm9n
cmFtQ29kZUJsb2NrOjpzX2luZm8gPSB7ICJVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2siLAogY29u
c3QgQ2xhc3NJbmZvIFVubGlua2VkRXZhbENvZGVCbG9jazo6c19pbmZvID0geyAiVW5saW5rZWRF
dmFsQ29kZUJsb2NrIiwgJkJhc2U6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShV
bmxpbmtlZEV2YWxDb2RlQmxvY2spIH07CiBjb25zdCBDbGFzc0luZm8gVW5saW5rZWRGdW5jdGlv
bkNvZGVCbG9jazo6c19pbmZvID0geyAiVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayIsICZCYXNl
OjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoVW5saW5rZWRGdW5jdGlvbkNvZGVC
bG9jaykgfTsKIAotc3RhdGljIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGdlbmVyYXRlRnVu
Y3Rpb25Db2RlQmxvY2soSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlU3Bl
Y2lhbGl6YXRpb25LaW5kIGtpbmQsIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVy
TW9kZSBwcm9maWxlck1vZGUsIFBhcnNlckVycm9yJiBlcnJvcikKK3N0YXRpYyBVbmxpbmtlZEZ1
bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZUZ1bmN0aW9uQ29kZUJsb2NrKEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgSlNTY29wZSogc2NvcGUsIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBl
eGVjdXRhYmxlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIENvZGVTcGVjaWFsaXphdGlvbktp
bmQga2luZCwgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlIHByb2ZpbGVy
TW9kZSwgUGFyc2VyRXJyb3ImIGVycm9yKQogewogICAgIFJlZlB0cjxGdW5jdGlvbkJvZHlOb2Rl
PiBib2R5ID0gcGFyc2U8RnVuY3Rpb25Cb2R5Tm9kZT4oJmdsb2JhbERhdGEsIHNvdXJjZSwgZXhl
Y3V0YWJsZS0+cGFyYW1ldGVycygpLCBleGVjdXRhYmxlLT5uYW1lKCksIGV4ZWN1dGFibGUtPmlz
SW5TdHJpY3RDb250ZXh0KCkgPyBKU1BhcnNlU3RyaWN0IDogSlNQYXJzZU5vcm1hbCwgSlNQYXJz
ZUZ1bmN0aW9uQ29kZSwgZXJyb3IpOwogCkBAIC02Miw3ICs2Miw3IEBAIHN0YXRpYyBVbmxpbmtl
ZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZUZ1bmN0aW9uQ29kZUJsb2NrKEpTR2xvYmFsRGF0
YSYgZ2xvYmFsCiAgICAgZXhlY3V0YWJsZS0+cmVjb3JkUGFyc2UoYm9keS0+ZmVhdHVyZXMoKSwg
Ym9keS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSwgYm9keS0+bGluZU5vKCksIGJvZHktPmxhc3RM
aW5lKCkpOwogICAgIAogICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHJlc3VsdCA9IFVu
bGlua2VkRnVuY3Rpb25Db2RlQmxvY2s6OmNyZWF0ZSgmZ2xvYmFsRGF0YSwgRnVuY3Rpb25Db2Rl
LCBFeGVjdXRhYmxlSW5mbyhib2R5LT5uZWVkc0FjdGl2YXRpb24oKSwgYm9keS0+dXNlc0V2YWwo
KSwgYm9keS0+aXNTdHJpY3RNb2RlKCksIGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCkpOwotICAg
IE93blB0cjxCeXRlY29kZUdlbmVyYXRvcj4gZ2VuZXJhdG9yKGFkb3B0UHRyKG5ldyBCeXRlY29k
ZUdlbmVyYXRvcihnbG9iYWxEYXRhLCBib2R5LmdldCgpLCByZXN1bHQsIGRlYnVnZ2VyTW9kZSwg
cHJvZmlsZXJNb2RlKSkpOworICAgIE93blB0cjxCeXRlY29kZUdlbmVyYXRvcj4gZ2VuZXJhdG9y
KGFkb3B0UHRyKG5ldyBCeXRlY29kZUdlbmVyYXRvcihnbG9iYWxEYXRhLCBzY29wZSwgYm9keS5n
ZXQoKSwgcmVzdWx0LCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSkpKTsKICAgICBlcnJvciA9
IGdlbmVyYXRvci0+Z2VuZXJhdGUoKTsKICAgICBib2R5LT5kZXN0cm95RGF0YSgpOwogICAgIGlm
IChlcnJvci5tX3R5cGUgIT0gUGFyc2VyRXJyb3I6OkVycm9yTm9uZSkKQEAgLTEzOSw3ICsxMzks
NyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGU6OmZyb21HbG9iYWxDb2RlKGNvbnN0IElkZQogICAgIHJldHVybiBleGVjdXRhYmxlOwogfQog
Ci1VbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6
Y29kZUJsb2NrRm9yKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgU291cmNlQ29kZSYg
c291cmNlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIHNwZWNpYWxpemF0aW9uS2luZCwgRGVidWdn
ZXJNb2RlIGRlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSwgUGFyc2VyRXJy
b3ImIGVycm9yKQorVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGU6OmNvZGVCbG9ja0ZvcihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTU2NvcGUq
IHNjb3BlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIENvZGVTcGVjaWFsaXphdGlvbktpbmQg
c3BlY2lhbGl6YXRpb25LaW5kLCBEZWJ1Z2dlck1vZGUgZGVidWdnZXJNb2RlLCBQcm9maWxlck1v
ZGUgcHJvZmlsZXJNb2RlLCBQYXJzZXJFcnJvciYgZXJyb3IpCiB7CiAgICAgc3dpdGNoIChzcGVj
aWFsaXphdGlvbktpbmQpIHsKICAgICBjYXNlIENvZGVGb3JDYWxsOgpAQCAtMTUyLDcgKzE1Miw3
IEBAIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
Ojpjb2RlQmxvY2tGb3IoSlNHbG9iYWxEYXRhCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAg
IFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHJlc3VsdCA9IGdlbmVyYXRlRnVuY3Rpb25Db2Rl
QmxvY2soZ2xvYmFsRGF0YSwgdGhpcywgc291cmNlLCBzcGVjaWFsaXphdGlvbktpbmQsIGRlYnVn
Z2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBlcnJvcik7CisgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVC
bG9jayogcmVzdWx0ID0gZ2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jayhnbG9iYWxEYXRhLCBzY29w
ZSwgdGhpcywgc291cmNlLCBzcGVjaWFsaXphdGlvbktpbmQsIGRlYnVnZ2VyTW9kZSwgcHJvZmls
ZXJNb2RlLCBlcnJvcik7CiAgICAgCiAgICAgaWYgKGVycm9yLm1fdHlwZSAhPSBQYXJzZXJFcnJv
cjo6RXJyb3JOb25lKQogICAgICAgICByZXR1cm4gMDsKQEAgLTE4OSw2ICsxODksNyBAQCBVbmxp
bmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2soSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRh
LCBTdHJ1Y3R1cmUqIHN0cnVjdAogICAgICwgbV9udW1QYXJhbWV0ZXJzKDApCiAgICAgLCBtX2ds
b2JhbERhdGEoZ2xvYmFsRGF0YSkKICAgICAsIG1fYXJndW1lbnRzUmVnaXN0ZXIoLTEpCisgICAg
LCBtX2dsb2JhbE9iamVjdFJlZ2lzdGVyKC0xKQogICAgICwgbV9uZWVkc0Z1bGxTY29wZUNoYWlu
KGluZm8ubV9uZWVkc0FjdGl2YXRpb24pCiAgICAgLCBtX3VzZXNFdmFsKGluZm8ubV91c2VzRXZh
bCkKICAgICAsIG1faXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uKGZhbHNlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAppbmRleCA4MGU4
OWQzZTc2MjFmYzBmMWEzYmRjYmE5YTIyZDU2ZTliZWVkOWFjLi44Y2IyOWY5MzUxMDRhMjBkODA1
M2FhNTBjZmRhOTdhMWNiNDFkY2E3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaApAQCAtNDksNiArNDksNyBAQCBjbGFzcyBEZWJ1
Z2dlcjsKIGNsYXNzIEZ1bmN0aW9uQm9keU5vZGU7CiBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7
CiBjbGFzcyBGdW5jdGlvblBhcmFtZXRlcnM7CitjbGFzcyBKU1Njb3BlOwogc3RydWN0IFBhcnNl
ckVycm9yOwogY2xhc3MgU2NyaXB0RXhlY3V0YWJsZTsKIGNsYXNzIFNvdXJjZUNvZGU7CkBAIC0x
MDcsNyArMTA4LDcgQEAgcHVibGljOgogCiAgICAgU3RyaW5nIHBhcmFtU3RyaW5nKCkgY29uc3Q7
CiAKLSAgICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBjb2RlQmxvY2tGb3IoSlNHbG9iYWxE
YXRhJiwgY29uc3QgU291cmNlQ29kZSYsIENvZGVTcGVjaWFsaXphdGlvbktpbmQsIERlYnVnZ2Vy
TW9kZSwgUHJvZmlsZXJNb2RlLCBQYXJzZXJFcnJvciYpOworICAgIFVubGlua2VkRnVuY3Rpb25D
b2RlQmxvY2sqIGNvZGVCbG9ja0ZvcihKU0dsb2JhbERhdGEmLCBKU1Njb3BlKiwgY29uc3QgU291
cmNlQ29kZSYsIENvZGVTcGVjaWFsaXphdGlvbktpbmQsIERlYnVnZ2VyTW9kZSwgUHJvZmlsZXJN
b2RlLCBQYXJzZXJFcnJvciYpOwogCiAgICAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlKiBmcm9tR2xvYmFsQ29kZShjb25zdCBJZGVudGlmaWVyJiwgRXhlY1N0YXRlKiwgRGVidWdn
ZXIqLCBjb25zdCBTb3VyY2VDb2RlJiwgSlNPYmplY3QqKiBleGNlcHRpb24pOwogCkBAIC0yNjgs
NiArMjY5LDExIEBAIHB1YmxpYzoKICAgICBib29sIHVzZXNBcmd1bWVudHMoKSBjb25zdCB7IHJl
dHVybiBtX2FyZ3VtZW50c1JlZ2lzdGVyICE9IC0xOyB9CiAgICAgaW50IGFyZ3VtZW50c1JlZ2lz
dGVyKCkgY29uc3QgeyByZXR1cm4gbV9hcmd1bWVudHNSZWdpc3RlcjsgfQogCisKKyAgICBib29s
IHVzZXNHbG9iYWxPYmplY3QoKSBjb25zdCB7IHJldHVybiBtX2dsb2JhbE9iamVjdFJlZ2lzdGVy
ICE9IC0xOyB9CisgICAgdm9pZCBzZXRHbG9iYWxPYmplY3RSZWdpc3RlcihpbnQgZ2xvYmFsT2Jq
ZWN0UmVnaXN0ZXIpIHsgbV9nbG9iYWxPYmplY3RSZWdpc3RlciA9IGdsb2JhbE9iamVjdFJlZ2lz
dGVyOyB9CisgICAgaW50IGdsb2JhbE9iamVjdFJlZ2lzdGVyKCkgY29uc3QgeyByZXR1cm4gbV9n
bG9iYWxPYmplY3RSZWdpc3RlcjsgfQorCiAgICAgLy8gUGFyYW1ldGVyIGluZm9ybWF0aW9uCiAg
ICAgdm9pZCBzZXROdW1QYXJhbWV0ZXJzKGludCBuZXdWYWx1ZSkgeyBtX251bVBhcmFtZXRlcnMg
PSBuZXdWYWx1ZTsgfQogICAgIHZvaWQgYWRkUGFyYW1ldGVyKCkgeyBtX251bVBhcmFtZXRlcnMr
KzsgfQpAQCAtNDkzLDYgKzQ5OSw3IEBAIHByaXZhdGU6CiAgICAgaW50IG1fdGhpc1JlZ2lzdGVy
OwogICAgIGludCBtX2FyZ3VtZW50c1JlZ2lzdGVyOwogICAgIGludCBtX2FjdGl2YXRpb25SZWdp
c3RlcjsKKyAgICBpbnQgbV9nbG9iYWxPYmplY3RSZWdpc3RlcjsKIAogICAgIGJvb2wgbV9uZWVk
c0Z1bGxTY29wZUNoYWluIDogMTsKICAgICBib29sIG1fdXNlc0V2YWwgOiAxOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmNwcAppbmRleCBkNjUyMTc5MDQ0OTAxYmE1N2I4Y2YxZjE4ZTQ1MTM4MWQ4NmMwYjZlLi4wZjk4
YTg2NDk1YzM1OTAwM2M2MzhiNGViZDYxMzdmMDQ0MDc1MTg1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApA
QCAtMTQxLDYgKzE0MSwxMCBAQCB2b2lkIFJlc29sdmVSZXN1bHQ6OmNoZWNrVmFsaWRpdHkoKQog
ICAgIGNhc2UgRHluYW1pYzoKICAgICAgICAgQVNTRVJUKCFtX2xvY2FsKTsKICAgICAgICAgcmV0
dXJuOworICAgIGNhc2UgTGV4aWNhbDoKKyAgICBjYXNlIFJlYWRPbmx5TGV4aWNhbDoKKyAgICAg
ICAgQVNTRVJUKCFtX2xvY2FsKTsKKyAgICAgICAgcmV0dXJuOwogICAgIGRlZmF1bHQ6CiAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQpAQCAtMjI2LDcgKzIzMCw3
IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OnByZXNlcnZlTGFzdFZhcigpCiAgICAgICAgIG1f
bGFzdFZhciA9ICZtX2NhbGxlZVJlZ2lzdGVycy5sYXN0KCk7CiB9CiAKLUJ5dGVjb2RlR2VuZXJh
dG9yOjpCeXRlY29kZUdlbmVyYXRvcihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb2dyYW1O
b2RlKiBwcm9ncmFtTm9kZSwgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKiBjb2RlQmxvY2ssIERl
YnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxlck1vZGUpCitCeXRl
Y29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBKU1Njb3BlKiwgUHJvZ3JhbU5vZGUqIHByb2dyYW1Ob2RlLCBVbmxpbmtlZFByb2dyYW1Db2Rl
QmxvY2sqIGNvZGVCbG9jaywgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2Rl
IHByb2ZpbGVyTW9kZSkKICAgICA6IG1fc2hvdWxkRW1pdERlYnVnSG9va3MoZGVidWdnZXJNb2Rl
ID09IERlYnVnZ2VyT24pCiAgICAgLCBtX3Nob3VsZEVtaXRQcm9maWxlSG9va3MocHJvZmlsZXJN
b2RlID09IFByb2ZpbGVyT24pCiAgICAgLCBtX3N5bWJvbFRhYmxlKDApCkBAIC0yMzQsNiArMjM4
LDcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgUHJvZ3JhbU5vZGUqIHByb2cKICAgICAsIG1fY29kZUJsb2NrKGdsb2JhbERh
dGEsIGNvZGVCbG9jaykKICAgICAsIG1fdGhpc1JlZ2lzdGVyKENhbGxGcmFtZTo6dGhpc0FyZ3Vt
ZW50T2Zmc2V0KCkpCiAgICAgLCBtX2VtcHR5VmFsdWVSZWdpc3RlcigwKQorICAgICwgbV9nbG9i
YWxPYmplY3RSZWdpc3RlcigwKQogICAgICwgbV9maW5hbGx5RGVwdGgoMCkKICAgICAsIG1fZHlu
YW1pY1Njb3BlRGVwdGgoMCkKICAgICAsIG1fY29kZVR5cGUoR2xvYmFsQ29kZSkKQEAgLTI3Mywx
NCArMjc4LDE2IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIFByb2dyYW1Ob2RlKiBwcm9nCiAKIH0KIAotQnl0ZWNvZGVHZW5l
cmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgRnVuY3Rp
b25Cb2R5Tm9kZSogZnVuY3Rpb25Cb2R5LCBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBjb2Rl
QmxvY2ssIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxlck1v
ZGUpCitCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBKU1Njb3BlKiBzY29wZSwgRnVuY3Rpb25Cb2R5Tm9kZSogZnVuY3Rpb25Cb2R5
LCBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBjb2RlQmxvY2ssIERlYnVnZ2VyTW9kZSBkZWJ1
Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxlck1vZGUpCiAgICAgOiBtX3Nob3VsZEVtaXRE
ZWJ1Z0hvb2tzKGRlYnVnZ2VyTW9kZSA9PSBEZWJ1Z2dlck9uKQogICAgICwgbV9zaG91bGRFbWl0
UHJvZmlsZUhvb2tzKHByb2ZpbGVyTW9kZSA9PSBQcm9maWxlck9uKQogICAgICwgbV9zeW1ib2xU
YWJsZShjb2RlQmxvY2stPnN5bWJvbFRhYmxlKCkpCiAgICAgLCBtX3Njb3BlTm9kZShmdW5jdGlv
bkJvZHkpCisgICAgLCBtX3Njb3BlKGdsb2JhbERhdGEsIHNjb3BlKQogICAgICwgbV9jb2RlQmxv
Y2soZ2xvYmFsRGF0YSwgY29kZUJsb2NrKQogICAgICwgbV9hY3RpdmF0aW9uUmVnaXN0ZXIoMCkK
ICAgICAsIG1fZW1wdHlWYWx1ZVJlZ2lzdGVyKDApCisgICAgLCBtX2dsb2JhbE9iamVjdFJlZ2lz
dGVyKDApCiAgICAgLCBtX2ZpbmFsbHlEZXB0aCgwKQogICAgICwgbV9keW5hbWljU2NvcGVEZXB0
aCgwKQogICAgICwgbV9jb2RlVHlwZShGdW5jdGlvbkNvZGUpCkBAIC00NjgsMTQgKzQ3NSwxNiBA
QCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBGdW5jdGlvbkJvZHlOb2RlKgogICAgIH0KIH0KIAotQnl0ZWNvZGVHZW5lcmF0b3I6
OkJ5dGVjb2RlR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgRXZhbE5vZGUqIGV2
YWxOb2RlLCBVbmxpbmtlZEV2YWxDb2RlQmxvY2sqIGNvZGVCbG9jaywgRGVidWdnZXJNb2RlIGRl
YnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSkKK0J5dGVjb2RlR2VuZXJhdG9y
OjpCeXRlY29kZUdlbmVyYXRvcihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTU2NvcGUqIHNj
b3BlLCBFdmFsTm9kZSogZXZhbE5vZGUsIFVubGlua2VkRXZhbENvZGVCbG9jayogY29kZUJsb2Nr
LCBEZWJ1Z2dlck1vZGUgZGVidWdnZXJNb2RlLCBQcm9maWxlck1vZGUgcHJvZmlsZXJNb2RlKQog
ICAgIDogbV9zaG91bGRFbWl0RGVidWdIb29rcyhkZWJ1Z2dlck1vZGUgPT0gRGVidWdnZXJPbikK
ICAgICAsIG1fc2hvdWxkRW1pdFByb2ZpbGVIb29rcyhwcm9maWxlck1vZGUgPT0gUHJvZmlsZXJP
bikKICAgICAsIG1fc3ltYm9sVGFibGUoY29kZUJsb2NrLT5zeW1ib2xUYWJsZSgpKQogICAgICwg
bV9zY29wZU5vZGUoZXZhbE5vZGUpCisgICAgLCBtX3Njb3BlKGdsb2JhbERhdGEsIHNjb3BlKQog
ICAgICwgbV9jb2RlQmxvY2soZ2xvYmFsRGF0YSwgY29kZUJsb2NrKQogICAgICwgbV90aGlzUmVn
aXN0ZXIoQ2FsbEZyYW1lOjp0aGlzQXJndW1lbnRPZmZzZXQoKSkKICAgICAsIG1fZW1wdHlWYWx1
ZVJlZ2lzdGVyKDApCisgICAgLCBtX2dsb2JhbE9iamVjdFJlZ2lzdGVyKDApCiAgICAgLCBtX2Zp
bmFsbHlEZXB0aCgwKQogICAgICwgbV9keW5hbWljU2NvcGVEZXB0aCgwKQogICAgICwgbV9jb2Rl
VHlwZShFdmFsQ29kZSkKQEAgLTEyMjcsNiArMTIzNiwyMSBAQCBSZWdpc3RlcklEKiBCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdExvYWQoUmVnaXN0ZXJJRCogZHN0LCBKU1ZhbHVlIHYpCiAgICAgcmV0
dXJuIGNvbnN0YW50SUQ7CiB9CiAKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
TG9hZEdsb2JhbE9iamVjdChSZWdpc3RlcklEKiBkc3QpCit7CisgICAgaWYgKCFtX2dsb2JhbE9i
amVjdFJlZ2lzdGVyKSB7CisgICAgICAgIGludCBpbmRleCA9IG1fbmV4dENvbnN0YW50T2Zmc2V0
OworICAgICAgICBtX2NvbnN0YW50UG9vbFJlZ2lzdGVycy5hcHBlbmQoRmlyc3RDb25zdGFudFJl
Z2lzdGVySW5kZXggKyBtX25leHRDb25zdGFudE9mZnNldCk7CisgICAgICAgICsrbV9uZXh0Q29u
c3RhbnRPZmZzZXQ7CisgICAgICAgIG1fY29kZUJsb2NrLT5hZGRDb25zdGFudChKU1ZhbHVlKCkp
OworICAgICAgICBtX2dsb2JhbE9iamVjdFJlZ2lzdGVyID0gJm1fY29uc3RhbnRQb29sUmVnaXN0
ZXJzW2luZGV4XTsKKyAgICAgICAgbV9jb2RlQmxvY2stPnNldEdsb2JhbE9iamVjdFJlZ2lzdGVy
KGluZGV4KTsKKyAgICB9CisgICAgaWYgKGRzdCkKKyAgICAgICAgZW1pdE1vdmUoZHN0LCBtX2ds
b2JhbE9iamVjdFJlZ2lzdGVyKTsKKyAgICByZXR1cm4gbV9nbG9iYWxPYmplY3RSZWdpc3RlcjsK
K30KKwogUmVzb2x2ZVJlc3VsdCBCeXRlY29kZUdlbmVyYXRvcjo6cmVzb2x2ZShjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eSkKIHsKICAgICBpZiAocHJvcGVydHkgPT0gcHJvcGVydHlOYW1lcygp
LnRoaXNJZGVudGlmaWVyKQpAQCAtMTI0MywxMyArMTI2Nyw1OSBAQCBSZXNvbHZlUmVzdWx0IEJ5
dGVjb2RlR2VuZXJhdG9yOjpyZXNvbHZlKGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5KQogICAg
ICAgICAgICAgcmV0dXJuIFJlc29sdmVSZXN1bHQ6OnJlZ2lzdGVyUmVzb2x2ZShsb2NhbCwgZmxh
Z3MpOwogICAgICAgICB9CiAgICAgfQorICAgIC8vIENhc2VzIHdoZXJlIHdlIGNhbm5vdCBzdGF0
aWNhbGx5IG9wdGltaXplIHRoZSBsb29rdXAuCisgICAgaWYgKHByb3BlcnR5ID09IHByb3BlcnR5
TmFtZXMoKS5hcmd1bWVudHMgfHwgIWNhbk9wdGltaXplTm9uTG9jYWxzKCkpCisgICAgICAgIHJl
dHVybiBSZXNvbHZlUmVzdWx0OjpkeW5hbWljUmVzb2x2ZSgpOworCisgICAgaWYgKCFtX3Njb3Bl
IHx8IG1fY29kZVR5cGUgIT0gRnVuY3Rpb25Db2RlKQorICAgICAgICByZXR1cm4gUmVzb2x2ZVJl
c3VsdDo6ZHluYW1pY1Jlc29sdmUoKTsKKworICAgIFNjb3BlQ2hhaW5JdGVyYXRvciBpdGVyID0g
bV9zY29wZS0+YmVnaW4oKTsKKyAgICBTY29wZUNoYWluSXRlcmF0b3IgZW5kID0gbV9zY29wZS0+
ZW5kKCk7CisgICAgc2l6ZV90IGRlcHRoID0gMDsKKyAgICBzaXplX3QgZGVwdGhPZkZpcnN0U2Nv
cGVXaXRoRHluYW1pY0NoZWNrcyA9IDA7CisgICAgdW5zaWduZWQgZmxhZ3MgPSAwOworICAgIGZv
ciAoOyBpdGVyICE9IGVuZDsgKytpdGVyLCArK2RlcHRoKSB7CisgICAgICAgIEpTT2JqZWN0KiBj
dXJyZW50U2NvcGUgPSBpdGVyLmdldCgpOworICAgICAgICBpZiAoIWN1cnJlbnRTY29wZS0+aXNW
YXJpYWJsZU9iamVjdCgpKQorICAgICAgICAgICAgcmV0dXJuIFJlc29sdmVSZXN1bHQ6OmR5bmFt
aWNSZXNvbHZlKCk7CisKKyAgICAgICAgSlNTeW1ib2xUYWJsZU9iamVjdCogY3VycmVudFZhcmlh
YmxlT2JqZWN0ID0ganNDYXN0PEpTU3ltYm9sVGFibGVPYmplY3QqPihjdXJyZW50U2NvcGUpOwor
ICAgICAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gY3VycmVudFZhcmlhYmxlT2JqZWN0LT5z
eW1ib2xUYWJsZSgpLT5nZXQocHJvcGVydHkuaW1wbCgpKTsKKworICAgICAgICAvLyBGb3VuZCB0
aGUgcHJvcGVydHkKKyAgICAgICAgaWYgKCFlbnRyeS5pc051bGwoKSkgeworICAgICAgICAgICAg
aWYgKGVudHJ5LmlzUmVhZE9ubHkoKSkKKyAgICAgICAgICAgICAgICBmbGFncyB8PSBSZXNvbHZl
UmVzdWx0OjpSZWFkT25seUZsYWc7CisgICAgICAgICAgICBkZXB0aCArPSBtX2NvZGVCbG9jay0+
bmVlZHNGdWxsU2NvcGVDaGFpbigpOworICAgICAgICAgICAgaWYgKCsraXRlciA9PSBlbmQpIHsK
KyAgICAgICAgICAgICAgICAvLyBHbG9iYWwgc2NvcGUKKyAgICAgICAgICAgICAgICByZXR1cm4g
UmVzb2x2ZVJlc3VsdDo6ZHluYW1pY1Jlc29sdmUoKTsKKyAgICAgICAgICAgIH0KKyNpZiAhQVNT
RVJUX0RJU0FCTEVECisgICAgICAgICAgICBpZiAoSlNBY3RpdmF0aW9uKiBhY3RpdmF0aW9uID0g
anNEeW5hbWljQ2FzdDxKU0FjdGl2YXRpb24qPihjdXJyZW50VmFyaWFibGVPYmplY3QpKQorICAg
ICAgICAgICAgICAgIEFTU0VSVChhY3RpdmF0aW9uLT5pc1ZhbGlkKGVudHJ5KSk7CisjZW5kaWYK
KyAgICAgICAgICAgIHJldHVybiBSZXNvbHZlUmVzdWx0OjpsZXhpY2FsUmVzb2x2ZShlbnRyeS5n
ZXRJbmRleCgpLCBkZXB0aCwgZmxhZ3MpOworICAgICAgICB9CisgICAgICAgIGJvb2wgc2NvcGVS
ZXF1aXJlc0R5bmFtaWNDaGVja3MgPSBmYWxzZTsKKyAgICAgICAgaWYgKGN1cnJlbnRWYXJpYWJs
ZU9iamVjdC0+aXNEeW5hbWljU2NvcGUoc2NvcGVSZXF1aXJlc0R5bmFtaWNDaGVja3MpKQorICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGlmICghKGZsYWdzICYgUmVzb2x2ZVJlc3VsdDo6RHlu
YW1pY0ZsYWcpKSB7CisgICAgICAgICAgICBpZiAoc2NvcGVSZXF1aXJlc0R5bmFtaWNDaGVja3Mp
CisgICAgICAgICAgICAgICAgZmxhZ3MgfD0gUmVzb2x2ZVJlc3VsdDo6RHluYW1pY0ZsYWc7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgKytkZXB0aE9mRmlyc3RTY29wZVdpdGhE
eW5hbWljQ2hlY2tzOworICAgICAgICB9CisgICAgfQorCiAgICAgcmV0dXJuIFJlc29sdmVSZXN1
bHQ6OmR5bmFtaWNSZXNvbHZlKCk7CiB9CiAKIFJlc29sdmVSZXN1bHQgQnl0ZWNvZGVHZW5lcmF0
b3I6OnJlc29sdmVDb25zdERlY2woY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHkpCiB7CiAgICAg
Ly8gUmVnaXN0ZXItYWxsb2NhdGVkIGNvbnN0IGRlY2xhcmF0aW9ucy4KLSAgICBpZiAobV9jb2Rl
VHlwZSAhPSBFdmFsQ29kZSAmJiBtX2NvZGVUeXBlICE9IEdsb2JhbENvZGUgJiYgbV9zeW1ib2xU
YWJsZSkgeworICAgIGlmIChtX2NvZGVUeXBlID09IEZ1bmN0aW9uQ29kZSAmJiBtX3N5bWJvbFRh
YmxlKSB7CiAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBzeW1ib2xUYWJsZSgpLmdl
dChwcm9wZXJ0eS5pbXBsKCkpOwogICAgICAgICBpZiAoIWVudHJ5LmlzTnVsbCgpKSB7CiAgICAg
ICAgICAgICB1bnNpZ25lZCBmbGFncyA9IGVudHJ5LmlzUmVhZE9ubHkoKSA/IFJlc29sdmVSZXN1
bHQ6OlJlYWRPbmx5RmxhZyA6IDA7CkBAIC0xMjg4LDggKzEzNTgsOCBAQCBib29sIEJ5dGVjb2Rl
R2VuZXJhdG9yOjpzaG91bGRBdm9pZFJlc29sdmVHbG9iYWwoKQogUmVnaXN0ZXJJRCogQnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRSZXNvbHZlKFJlZ2lzdGVySUQqIGRzdCwgY29uc3QgUmVzb2x2ZVJl
c3VsdCYgcmVzb2x2ZVJlc3VsdCwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHkpCiB7CiAKLSAg
ICBpZiAocmVzb2x2ZVJlc3VsdC5pc1JlZ2lzdGVyKCkpCi0gICAgICAgIHJldHVybiBlbWl0R2V0
TG9jYWxWYXIoZHN0LCByZXNvbHZlUmVzdWx0LCBwcm9wZXJ0eSk7CisgICAgaWYgKHJlc29sdmVS
ZXN1bHQuaXNTdGF0aWMoKSkKKyAgICAgICAgcmV0dXJuIGVtaXRHZXRTdGF0aWNWYXIoZHN0LCBy
ZXNvbHZlUmVzdWx0LCBwcm9wZXJ0eSk7CiAKICAgICBVbmxpbmtlZFZhbHVlUHJvZmlsZSBwcm9m
aWxlID0gZW1pdFByb2ZpbGVkT3Bjb2RlKG9wX3Jlc29sdmUpOwogICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZChraWxsKGRzdCkpOwpAQCAtMTMwMSw3ICsxMzcxLDExIEBAIFJlZ2lzdGVySUQqIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2x2ZShSZWdpc3RlcklEKiBkc3QsIGNvbnN0IFJlc29s
dmVSZXN1bHQmCiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2x2ZUJh
c2UoUmVnaXN0ZXJJRCogZHN0LCBjb25zdCBSZXNvbHZlUmVzdWx0JiByZXNvbHZlUmVzdWx0LCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSkKIHsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc29sdmVS
ZXN1bHQsICFyZXNvbHZlUmVzdWx0LmlzUmVnaXN0ZXIoKSk7CisgICAgaWYgKCFyZXNvbHZlUmVz
dWx0LmlzRHluYW1pYygpKSB7CisgICAgICAgIC8vIEdsb2JhbCBvYmplY3QgaXMgdGhlIGJhc2UK
KyAgICAgICAgcmV0dXJuIGVtaXRMb2FkR2xvYmFsT2JqZWN0KGRzdCk7CisgICAgfQorCiAgICAg
Ly8gV2UgY2FuJ3Qgb3B0aW1pc2UgYXQgYWxsIDotKAogICAgIFVubGlua2VkVmFsdWVQcm9maWxl
IHByb2ZpbGUgPSBlbWl0UHJvZmlsZWRPcGNvZGUob3BfcmVzb2x2ZV9iYXNlKTsKICAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQoa2lsbChkc3QpKTsKQEAgLTEzMTMsOSArMTM4Nyw4IEBAIFJlZ2lz
dGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2x2ZUJhc2UoUmVnaXN0ZXJJRCogZHN0
LCBjb25zdCBSZXNvbHZlUmVzCiAgICAgcmV0dXJuIGRzdDsKIH0KIAotUmVnaXN0ZXJJRCogQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbHZlQmFzZUZvclB1dChSZWdpc3RlcklEKiBkc3QsIGNv
bnN0IFJlc29sdmVSZXN1bHQmIHJlc29sdmVSZXN1bHQsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5LCBOb25sb2NhbFJlc29sdmVJbmZvJiB2ZXJpZmllcikKK1JlZ2lzdGVySUQqIEJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0UmVzb2x2ZUJhc2VGb3JQdXQoUmVnaXN0ZXJJRCogZHN0LCBjb25zdCBS
ZXNvbHZlUmVzdWx0JiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHksIE5vbmxvY2FsUmVzb2x2
ZUluZm8mIHZlcmlmaWVyKQogewotICAgIEFTU0VSVF9VTlVTRUQocmVzb2x2ZVJlc3VsdCwgIXJl
c29sdmVSZXN1bHQuaXNSZWdpc3RlcigpKTsKICAgICAvLyBXZSBjYW4ndCBvcHRpbWlzZSBhdCBh
bGwgOi0oCiAgICAgVW5saW5rZWRWYWx1ZVByb2ZpbGUgcHJvZmlsZSA9IGVtaXRQcm9maWxlZE9w
Y29kZShvcF9yZXNvbHZlX2Jhc2UpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChraWxsKGRz
dCkpOwpAQCAtMTMzMSw3ICsxNDA0LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRSZXNvbHZlQmFzZUZvclB1dChSZWdpc3RlcklEKiBkc3QsIGNvbnN0IFJlc28KIAogUmVn
aXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbHZlV2l0aEJhc2VGb3JQdXQoUmVn
aXN0ZXJJRCogYmFzZURzdCwgUmVnaXN0ZXJJRCogcHJvcERzdCwgY29uc3QgUmVzb2x2ZVJlc3Vs
dCYgcmVzb2x2ZVJlc3VsdCwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHksIE5vbmxvY2FsUmVz
b2x2ZUluZm8mIHZlcmlmaWVyKQogewotICAgIEFTU0VSVF9VTlVTRUQocmVzb2x2ZVJlc3VsdCwg
IXJlc29sdmVSZXN1bHQuaXNSZWdpc3RlcigpKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc29sdmVS
ZXN1bHQsICFyZXNvbHZlUmVzdWx0LmlzU3RhdGljKCkpOwogICAgIFVubGlua2VkVmFsdWVQcm9m
aWxlIHByb2ZpbGUgPSBlbWl0UHJvZmlsZWRPcGNvZGUob3BfcmVzb2x2ZV93aXRoX2Jhc2UpOwog
ICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChraWxsKGJhc2VEc3QpKTsKICAgICBpbnN0cnVjdGlv
bnMoKS5hcHBlbmQocHJvcERzdC0+aW5kZXgoKSk7CkBAIC0xMzQ2LDkgKzE0MTksOSBAQCBSZWdp
c3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc29sdmVXaXRoQmFzZUZvclB1dChSZWdp
c3RlcklEKiBiYXNlRHN0LCBSZQogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dFJlc29sdmVXaXRoVGhpcyhSZWdpc3RlcklEKiBiYXNlRHN0LCBSZWdpc3RlcklEKiBwcm9wRHN0
LCBjb25zdCBSZXNvbHZlUmVzdWx0JiByZXNvbHZlUmVzdWx0LCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eSkKIHsKLSAgICBpZiAocmVzb2x2ZVJlc3VsdC5pc1JlZ2lzdGVyKCkpIHsKKyAgICBp
ZiAocmVzb2x2ZVJlc3VsdC5pc1N0YXRpYygpKSB7CiAgICAgICAgIGVtaXRMb2FkKGJhc2VEc3Qs
IGpzVW5kZWZpbmVkKCkpOwotICAgICAgICBlbWl0R2V0TG9jYWxWYXIocHJvcERzdCwgcmVzb2x2
ZVJlc3VsdCwgcHJvcGVydHkpOworICAgICAgICBlbWl0R2V0U3RhdGljVmFyKHByb3BEc3QsIHJl
c29sdmVSZXN1bHQsIHByb3BlcnR5KTsKICAgICAgICAgcmV0dXJuIGJhc2VEc3Q7CiAgICAgfQog
CkBAIC0xMzYxLDggKzE0MzQsOSBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dFJlc29sdmVXaXRoVGhpcyhSZWdpc3RlcklEKiBiYXNlRHN0LCBSZWdpc3RlcgogICAgIHJldHVy
biBiYXNlRHN0OwogfQogCi1SZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldExv
Y2FsVmFyKFJlZ2lzdGVySUQqIGRzdCwgY29uc3QgUmVzb2x2ZVJlc3VsdCYgcmVzb2x2ZVJlc3Vs
dCwgY29uc3QgSWRlbnRpZmllciYpCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dEdldFN0YXRpY1ZhcihSZWdpc3RlcklEKiBkc3QsIGNvbnN0IFJlc29sdmVSZXN1bHQmIHJlc29s
dmVSZXN1bHQsIGNvbnN0IElkZW50aWZpZXImKQogeworICAgIEFTU0VSVChtX2NvZGVUeXBlID09
IEZ1bmN0aW9uQ29kZSk7CiAgICAgc3dpdGNoIChyZXNvbHZlUmVzdWx0LnR5cGUoKSkgewogICAg
IGNhc2UgUmVzb2x2ZVJlc3VsdDo6UmVnaXN0ZXI6CiAgICAgY2FzZSBSZXNvbHZlUmVzdWx0OjpS
ZWFkT25seVJlZ2lzdGVyOgpAQCAtMTM3MCw2ICsxNDQ0LDE2IEBAIFJlZ2lzdGVySUQqIEJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0R2V0TG9jYWxWYXIoUmVnaXN0ZXJJRCogZHN0LCBjb25zdCBSZXNv
bHZlUmVzCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgcmV0dXJuIG1vdmVUb0Rlc3Rp
bmF0aW9uSWZOZWVkZWQoZHN0LCByZXNvbHZlUmVzdWx0LmxvY2FsKCkpOwogCisgICAgY2FzZSBS
ZXNvbHZlUmVzdWx0OjpMZXhpY2FsOgorICAgIGNhc2UgUmVzb2x2ZVJlc3VsdDo6UmVhZE9ubHlM
ZXhpY2FsOiB7CisgICAgICAgIFVubGlua2VkVmFsdWVQcm9maWxlIHByb2ZpbGUgPSBlbWl0UHJv
ZmlsZWRPcGNvZGUob3BfZ2V0X3Njb3BlZF92YXIpOworICAgICAgICBpbnN0cnVjdGlvbnMoKS5h
cHBlbmQoZHN0LT5pbmRleCgpKTsKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHJlc29s
dmVSZXN1bHQuaW5kZXgoKSk7CisgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChyZXNvbHZl
UmVzdWx0LmRlcHRoKCkpOworICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQocHJvZmlsZSk7
CisgICAgICAgIHJldHVybiBkc3Q7CisgICAgfQorCiAgICAgZGVmYXVsdDoKICAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIDA7CkBAIC0xMzg3LDYg
KzE0NzEsMjggQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJbml0R2xvYmFs
Q29uc3QoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllciwKICAgICByZXR1cm4gdmFsdWU7CiB9
CiAKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0U3RhdGljVmFyKGNvbnN0
IFJlc29sdmVSZXN1bHQmIHJlc29sdmVSZXN1bHQsIGNvbnN0IElkZW50aWZpZXImLCBSZWdpc3Rl
cklEKiB2YWx1ZSkKK3sKKyAgICBBU1NFUlQobV9jb2RlVHlwZSA9PSBGdW5jdGlvbkNvZGUpOwor
ICAgIHN3aXRjaCAocmVzb2x2ZVJlc3VsdC50eXBlKCkpIHsKKyAgICBjYXNlIFJlc29sdmVSZXN1
bHQ6OlJlZ2lzdGVyOgorICAgIGNhc2UgUmVzb2x2ZVJlc3VsdDo6UmVhZE9ubHlSZWdpc3RlcjoK
KyAgICAgICAgcmV0dXJuIG1vdmVUb0Rlc3RpbmF0aW9uSWZOZWVkZWQocmVzb2x2ZVJlc3VsdC5s
b2NhbCgpLCB2YWx1ZSk7CisKKyAgICBjYXNlIFJlc29sdmVSZXN1bHQ6OkxleGljYWw6CisgICAg
Y2FzZSBSZXNvbHZlUmVzdWx0OjpSZWFkT25seUxleGljYWw6CisgICAgICAgIGVtaXRPcGNvZGUo
b3BfcHV0X3Njb3BlZF92YXIpOworICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQocmVzb2x2
ZVJlc3VsdC5pbmRleCgpKTsKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHJlc29sdmVS
ZXN1bHQuZGVwdGgoKSk7CisgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCh2YWx1ZS0+aW5k
ZXgoKSk7CisgICAgICAgIHJldHVybiB2YWx1ZTsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KK30K
KwogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRCeUlkKFJlZ2lzdGVySUQq
IGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHkpCiB7CiAg
ICAgbV9jb2RlQmxvY2stPmFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25z
KCkuc2l6ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRleCBkZDAxMzJjYTY4OGQ2NjZkYjRhMzE4NzE4YmFl
MDVjNTExMWE0NmJkLi5hNTEzNWQ3MWZlYjcyODg4ZTkyOTQ5MWNkNzliYThlYjYyNjhiOTEyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5oCkBAIC0xMjgsMTQgKzEyOCwyMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgICAgIER5bmFtaWNGbGFnID0gMHgyLAogICAgICAgICAgICAgLy8gVGhlIHJlc29sdmVkIGJp
bmRpbmcgaXMgaW1tdXRhYmxlLgogICAgICAgICAgICAgUmVhZE9ubHlGbGFnID0gMHg0LAorICAg
ICAgICAgICAgLy8gVGhlIHByb3BlcnR5IGhhcyBhIHN0YXRpYyBsb2NhdGlvbgorICAgICAgICAg
ICAgU3RhdGljRmxhZyA9IDB4OCwKKyAgICAgICAgICAgIC8vIEVudHJ5IGF0IHNjb3BlIGRpc3Rh
bmNlICJtX2RlcHRoIiBhbmQgbG9jYXRlZCBhdCAibV9pbmRleCIKKyAgICAgICAgICAgIFNjb3Bl
ZEZsYWcgPSAweDEwCiAgICAgICAgIH07CiAKICAgICAgICAgZW51bSBUeXBlIHsKICAgICAgICAg
ICAgIC8vIFRoZSBwcm9wZXJ0eSBpcyBsb2NhbCwgYW5kIHN0b3JlZCBpbiBhIHJlZ2lzdGVyLgot
ICAgICAgICAgICAgUmVnaXN0ZXIgPSBSZWdpc3RlckZsYWcsCisgICAgICAgICAgICBSZWdpc3Rl
ciA9IFJlZ2lzdGVyRmxhZyB8IFN0YXRpY0ZsYWcsCiAgICAgICAgICAgICAvLyBBIHJlYWQtb25s
eSBsb2NhbCwgY3JlYXRlZCBieSAiY29uc3QiLgotICAgICAgICAgICAgUmVhZE9ubHlSZWdpc3Rl
ciA9IFJlZ2lzdGVyRmxhZyB8IFJlYWRPbmx5RmxhZywKLSAgICAgICAgICAgIC8vIEFueSBmb3Jt
IG9mIG5vbi1sb2NhbCBsb29rdXAKKyAgICAgICAgICAgIFJlYWRPbmx5UmVnaXN0ZXIgPSBSZWdp
c3RlckZsYWcgfCBSZWFkT25seUZsYWcgfCBTdGF0aWNGbGFnLAorICAgICAgICAgICAgLy8gTGV4
aWNhbGx5IGZpeGVkIGxvY2F0aW9uIGluIHRoZSBzY29wZSBjaGFpbgorICAgICAgICAgICAgTGV4
aWNhbCA9IFNjb3BlZEZsYWcgfCBTdGF0aWNGbGFnLAorICAgICAgICAgICAgLy8gQSByZWFkLW9u
bHkgTGV4aWNhbCwgY3JlYXRlZCBieSAiY29uc3QiLgorICAgICAgICAgICAgUmVhZE9ubHlMZXhp
Y2FsID0gU2NvcGVkRmxhZyB8IFJlYWRPbmx5RmxhZyB8IFN0YXRpY0ZsYWcsCisgICAgICAgICAg
ICAvLyBBbnkgb3RoZXIgZm9ybSBvZiBsb29rdXAKICAgICAgICAgICAgIER5bmFtaWMgPSBEeW5h
bWljRmxhZywKICAgICAgICAgfTsKIApAQCAtMTQ3LDYgKzE1NSwxMiBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIFJlc29sdmVSZXN1bHQoRHluYW1pYywg
MCk7CiAgICAgICAgIH0KKyAgICAgICAgc3RhdGljIFJlc29sdmVSZXN1bHQgbGV4aWNhbFJlc29s
dmUoaW50IGluZGV4LCBzaXplX3QgZGVwdGgsIHVuc2lnbmVkIGZsYWdzKQorICAgICAgICB7Cisg
ICAgICAgICAgICBpZiAoZmxhZ3MgJiBEeW5hbWljRmxhZykKKyAgICAgICAgICAgICAgICByZXR1
cm4gZHluYW1pY1Jlc29sdmUoKTsKKyAgICAgICAgICAgIHJldHVybiBSZXNvbHZlUmVzdWx0KExl
eGljYWwgfCBmbGFncywgaW5kZXgsIGRlcHRoKTsKKyAgICAgICAgfQogICAgICAgICB1bnNpZ25l
ZCB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAKICAgICAgICAgLy8gUmV0dXJucyB0
aGUgcmVnaXN0ZXIgY29ycmVzcG9uZGluZyB0byBhIGxvY2FsIHZhcmlhYmxlLCBvciAwIGlmIG5v
CkBAIC0xNTUsMTMgKzE2OSwzMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXJJ
RCogbG9jYWwoKSBjb25zdCB7IHJldHVybiBtX2xvY2FsOyB9CiAKICAgICAgICAgYm9vbCBpc1Jl
Z2lzdGVyKCkgY29uc3QgeyByZXR1cm4gbV90eXBlICYgUmVnaXN0ZXJGbGFnOyB9CisgICAgICAg
IGJvb2wgaXNTdGF0aWMoKSBjb25zdCB7IHJldHVybiAobV90eXBlICYgU3RhdGljRmxhZykgJiYg
IWlzRHluYW1pYygpOyB9CiAgICAgICAgIGJvb2wgaXNEeW5hbWljKCkgY29uc3QgeyByZXR1cm4g
bV90eXBlICYgRHluYW1pY0ZsYWc7IH0KICAgICAgICAgYm9vbCBpc1JlYWRPbmx5KCkgY29uc3Qg
eyByZXR1cm4gKG1fdHlwZSAmIFJlYWRPbmx5RmxhZykgJiYgIWlzRHluYW1pYygpOyB9CiAKKyAg
ICAgICAgdW5zaWduZWQgZGVwdGgoKSBjb25zdCB7IEFTU0VSVChpc1N0YXRpYygpKTsgcmV0dXJu
IG1fZGVwdGg7IH0KKyAgICAgICAgaW50MzJfdCBpbmRleCgpIGNvbnN0IHsgQVNTRVJUKGlzU3Rh
dGljKCkpOyByZXR1cm4gbV9pbmRleDsgfQorCiAgICAgcHJpdmF0ZToKICAgICAgICAgUmVzb2x2
ZVJlc3VsdCh1bnNpZ25lZCB0eXBlLCBSZWdpc3RlcklEKiBsb2NhbCkKICAgICAgICAgICAgIDog
bV90eXBlKHR5cGUpCiAgICAgICAgICAgICAsIG1fbG9jYWwobG9jYWwpCisgICAgICAgICAgICAs
IG1faW5kZXgoMCkKKyAgICAgICAgICAgICwgbV9kZXB0aCgwKQorICAgICAgICB7CisjaWZuZGVm
IE5ERUJVRworICAgICAgICAgICAgY2hlY2tWYWxpZGl0eSgpOworI2VuZGlmCisgICAgICAgIH0K
KworICAgICAgICBSZXNvbHZlUmVzdWx0KHVuc2lnbmVkIHR5cGUsIGludCBpbmRleCwgdW5zaWdu
ZWQgZGVwdGgpCisgICAgICAgICAgICA6IG1fdHlwZSh0eXBlKQorICAgICAgICAgICAgLCBtX2xv
Y2FsKDApCisgICAgICAgICAgICAsIG1faW5kZXgoaW5kZXgpCisgICAgICAgICAgICAsIG1fZGVw
dGgoZGVwdGgpCiAgICAgICAgIHsKICNpZm5kZWYgTkRFQlVHCiAgICAgICAgICAgICBjaGVja1Zh
bGlkaXR5KCk7CkBAIC0xNzQsNiArMjA1LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAg
dW5zaWduZWQgbV90eXBlOwogICAgICAgICBSZWdpc3RlcklEKiBtX2xvY2FsOyAvLyBMb2NhbCBy
ZWdpc3RlciwgaWYgUmVnaXN0ZXJGbGFnIGlzIHNldAorICAgICAgICBpbnQgbV9pbmRleDsKKyAg
ICAgICAgdW5zaWduZWQgbV9kZXB0aDsKICAgICB9OwogCiAgICAgc3RydWN0IE5vbmxvY2FsUmVz
b2x2ZUluZm8gewpAQCAtMjExLDkgKzI0NCw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB0
eXBlZGVmIERlY2xhcmF0aW9uU3RhY2tzOjpWYXJTdGFjayBWYXJTdGFjazsKICAgICAgICAgdHlw
ZWRlZiBEZWNsYXJhdGlvblN0YWNrczo6RnVuY3Rpb25TdGFjayBGdW5jdGlvblN0YWNrOwogCi0g
ICAgICAgIEJ5dGVjb2RlR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSYsIFByb2dyYW1Ob2RlKiwgVW5s
aW5rZWRQcm9ncmFtQ29kZUJsb2NrKiwgRGVidWdnZXJNb2RlLCBQcm9maWxlck1vZGUpOwotICAg
ICAgICBCeXRlY29kZUdlbmVyYXRvcihKU0dsb2JhbERhdGEmLCBGdW5jdGlvbkJvZHlOb2RlKiwg
VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayosIERlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlKTsK
LSAgICAgICAgQnl0ZWNvZGVHZW5lcmF0b3IoSlNHbG9iYWxEYXRhJiwgRXZhbE5vZGUqLCBVbmxp
bmtlZEV2YWxDb2RlQmxvY2sqLCBEZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSk7CisgICAgICAg
IEJ5dGVjb2RlR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSYsIEpTU2NvcGUqLCBQcm9ncmFtTm9kZSos
IFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jayosIERlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlKTsK
KyAgICAgICAgQnl0ZWNvZGVHZW5lcmF0b3IoSlNHbG9iYWxEYXRhJiwgSlNTY29wZSosIEZ1bmN0
aW9uQm9keU5vZGUqLCBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiwgRGVidWdnZXJNb2RlLCBQ
cm9maWxlck1vZGUpOworICAgICAgICBCeXRlY29kZUdlbmVyYXRvcihKU0dsb2JhbERhdGEmLCBK
U1Njb3BlKiwgRXZhbE5vZGUqLCBVbmxpbmtlZEV2YWxDb2RlQmxvY2sqLCBEZWJ1Z2dlck1vZGUs
IFByb2ZpbGVyTW9kZSk7CiAKICAgICAgICAgfkJ5dGVjb2RlR2VuZXJhdG9yKCk7CiAgICAgICAg
IApAQCAtMzc5LDYgKzQxMiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZWdpc3RlcklE
KiBlbWl0TG9hZChSZWdpc3RlcklEKiBkc3QsIGRvdWJsZSk7CiAgICAgICAgIFJlZ2lzdGVySUQq
IGVtaXRMb2FkKFJlZ2lzdGVySUQqIGRzdCwgY29uc3QgSWRlbnRpZmllciYpOwogICAgICAgICBS
ZWdpc3RlcklEKiBlbWl0TG9hZChSZWdpc3RlcklEKiBkc3QsIEpTVmFsdWUpOworICAgICAgICBS
ZWdpc3RlcklEKiBlbWl0TG9hZEdsb2JhbE9iamVjdChSZWdpc3RlcklEKiBkc3QpOwogCiAgICAg
ICAgIFJlZ2lzdGVySUQqIGVtaXRVbmFyeU9wKE9wY29kZUlELCBSZWdpc3RlcklEKiBkc3QsIFJl
Z2lzdGVySUQqIHNyYyk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRCaW5hcnlPcChPcGNvZGVJ
RCwgUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMxLCBSZWdpc3RlcklEKiBzcmMyLCBP
cGVyYW5kVHlwZXMpOwpAQCAtNDA4LDcgKzQ0Miw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBSZWdpc3RlcklEKiBlbWl0VHlwZU9mKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3Jj
KSB7IHJldHVybiBlbWl0VW5hcnlPcChvcF90eXBlb2YsIGRzdCwgc3JjKTsgfQogICAgICAgICBS
ZWdpc3RlcklEKiBlbWl0SW4oUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwg
UmVnaXN0ZXJJRCogYmFzZSkgeyByZXR1cm4gZW1pdEJpbmFyeU9wKG9wX2luLCBkc3QsIHByb3Bl
cnR5LCBiYXNlLCBPcGVyYW5kVHlwZXMoKSk7IH0KIAotICAgICAgICBSZWdpc3RlcklEKiBlbWl0
R2V0TG9jYWxWYXIoUmVnaXN0ZXJJRCogZHN0LCBjb25zdCBSZXNvbHZlUmVzdWx0JiwgY29uc3Qg
SWRlbnRpZmllciYpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0R2V0U3RhdGljVmFyKFJlZ2lz
dGVySUQqIGRzdCwgY29uc3QgUmVzb2x2ZVJlc3VsdCYsIGNvbnN0IElkZW50aWZpZXImKTsKKyAg
ICAgICAgUmVnaXN0ZXJJRCogZW1pdFB1dFN0YXRpY1Zhcihjb25zdCBSZXNvbHZlUmVzdWx0Jiwg
Y29uc3QgSWRlbnRpZmllciYsIFJlZ2lzdGVySUQqIHZhbHVlKTsKICAgICAgICAgUmVnaXN0ZXJJ
RCogZW1pdEluaXRHbG9iYWxDb25zdChjb25zdCBJZGVudGlmaWVyJiwgUmVnaXN0ZXJJRCogdmFs
dWUpOwogCiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRSZXNvbHZlKFJlZ2lzdGVySUQqIGRzdCwg
Y29uc3QgUmVzb2x2ZVJlc3VsdCYsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5KTsKQEAgLTY1
MCw2ICs2ODUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgU2hhcmVkU3ltYm9sVGFibGUq
IG1fc3ltYm9sVGFibGU7CiAKICAgICAgICAgU2NvcGVOb2RlKiBtX3Njb3BlTm9kZTsKKyAgICAg
ICAgU3Ryb25nPEpTU2NvcGU+IG1fc2NvcGU7CiAgICAgICAgIFN0cm9uZzxVbmxpbmtlZENvZGVC
bG9jaz4gbV9jb2RlQmxvY2s7CiAKICAgICAgICAgLy8gU29tZSBvZiB0aGVzZSBvYmplY3RzIGtl
ZXAgcG9pbnRlcnMgdG8gb25lIGFub3RoZXIuIFRoZXkgYXJlIGFycmFuZ2VkCkBAIC02NjAsNiAr
Njk2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZ2lzdGVySUQgbV9jYWxsZWVSZWdp
c3RlcjsKICAgICAgICAgUmVnaXN0ZXJJRCogbV9hY3RpdmF0aW9uUmVnaXN0ZXI7CiAgICAgICAg
IFJlZ2lzdGVySUQqIG1fZW1wdHlWYWx1ZVJlZ2lzdGVyOworICAgICAgICBSZWdpc3RlcklEKiBt
X2dsb2JhbE9iamVjdFJlZ2lzdGVyOwogICAgICAgICBTZWdtZW50ZWRWZWN0b3I8UmVnaXN0ZXJJ
RCwgMzI+IG1fY29uc3RhbnRQb29sUmVnaXN0ZXJzOwogICAgICAgICBTZWdtZW50ZWRWZWN0b3I8
UmVnaXN0ZXJJRCwgMzI+IG1fY2FsbGVlUmVnaXN0ZXJzOwogICAgICAgICBTZWdtZW50ZWRWZWN0
b3I8UmVnaXN0ZXJJRCwgMzI+IG1fcGFyYW1ldGVyczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCA0ZTc0NWUxYzEwYzFj
YzFjNzM2OTM0YjBhMTZkZGU1ZWM2NWQ4ZjNmLi5hODE4NzNmNjlkYmYxNWQ5NmU3YTQ2NTU0Nzhm
ZmQ4OTMyYTE2NDdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC0xNDEsNyArMTQxLDcgQEAgUmVnaXN0ZXJJRCogVGhp
c05vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3Rl
cklEKiBkc3QKIAogYm9vbCBSZXNvbHZlTm9kZTo6aXNQdXJlKEJ5dGVjb2RlR2VuZXJhdG9yJiBn
ZW5lcmF0b3IpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGdlbmVyYXRvci5yZXNvbHZlKG1faWRlbnQp
LmlzUmVnaXN0ZXIoKTsKKyAgICByZXR1cm4gZ2VuZXJhdG9yLnJlc29sdmUobV9pZGVudCkuaXNT
dGF0aWMoKTsKIH0KIAogUmVnaXN0ZXJJRCogUmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCkBAIC00MzksNiArNDM5
LDE0IEBAIFJlZ2lzdGVySUQqIEZ1bmN0aW9uQ2FsbFJlc29sdmVOb2RlOjplbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwKICAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5l
bWl0Q2FsbChnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbk9ySWdub3JlZChkc3QsIGNhbGxBcmd1
bWVudHMudGhpc1JlZ2lzdGVyKCkpLCBmdW5jLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNh
bGxBcmd1bWVudHMsIGRpdm90KCksIHN0YXJ0T2Zmc2V0KCksIGVuZE9mZnNldCgpKTsKICAgICB9
CiAKKyAgICBpZiAocmVzb2x2ZVJlc3VsdC5pc1N0YXRpYygpKSB7CisgICAgICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiBmdW5jID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOworICAgICAgICBDYWxs
QXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOworICAgICAgICBnZW5l
cmF0b3IuZW1pdEdldFN0YXRpY1ZhcihmdW5jLmdldCgpLCByZXNvbHZlUmVzdWx0LCBtX2lkZW50
KTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVy
KCksIGpzVW5kZWZpbmVkKCkpOworICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRDYWxsKGdl
bmVyYXRvci5maW5hbERlc3RpbmF0aW9uT3JJZ25vcmVkKGRzdCwgZnVuYy5nZXQoKSksIGZ1bmMu
Z2V0KCksIGV4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIHN0YXJ0T2Zm
c2V0KCksIGVuZE9mZnNldCgpKTsKKyAgICB9CisKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZnVu
YyA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1
bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwogICAgIGludCBpZGVudGlmaWVyU3RhcnQgPSBkaXZv
dCgpIC0gc3RhcnRPZmZzZXQoKTsKQEAgLTYyMiw3ICs2MzAsMTkgQEAgUmVnaXN0ZXJJRCogUG9z
dGZpeE5vZGU6OmVtaXRSZXNvbHZlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lz
dGVySUQqIGQKICAgICAgICAgICAgIHJldHVybiBlbWl0UHJlSW5jT3JEZWMoZ2VuZXJhdG9yLCBs
b2NhbCwgbV9vcGVyYXRvcik7CiAgICAgICAgIHJldHVybiBlbWl0UG9zdEluY09yRGVjKGdlbmVy
YXRvciwgZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSwgbG9jYWwsIG1fb3BlcmF0b3Ip
OwogICAgIH0KLSAgICAKKworICAgIGlmIChyZXNvbHZlUmVzdWx0LmlzU3RhdGljKCkgJiYgIXJl
c29sdmVSZXN1bHQuaXNSZWFkT25seSgpKSB7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2
YWx1ZSA9IGdlbmVyYXRvci5lbWl0R2V0U3RhdGljVmFyKGdlbmVyYXRvci5uZXdUZW1wb3Jhcnko
KSwgcmVzb2x2ZVJlc3VsdCwgaWRlbnQpOworICAgICAgICBSZWdpc3RlcklEKiBvbGRWYWx1ZTsK
KyAgICAgICAgaWYgKGRzdCA9PSBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKSB7CisgICAgICAg
ICAgICBvbGRWYWx1ZSA9IDA7CisgICAgICAgICAgICBlbWl0UHJlSW5jT3JEZWMoZ2VuZXJhdG9y
LCB2YWx1ZS5nZXQoKSwgbV9vcGVyYXRvcik7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAg
b2xkVmFsdWUgPSBlbWl0UG9zdEluY09yRGVjKGdlbmVyYXRvciwgZ2VuZXJhdG9yLmZpbmFsRGVz
dGluYXRpb24oZHN0KSwgdmFsdWUuZ2V0KCksIG1fb3BlcmF0b3IpOworICAgICAgICBnZW5lcmF0
b3IuZW1pdFB1dFN0YXRpY1ZhcihyZXNvbHZlUmVzdWx0LCBpZGVudCwgdmFsdWUuZ2V0KCkpOwor
ICAgICAgICByZXR1cm4gb2xkVmFsdWU7CisgICAgfQorCiAgICAgZ2VuZXJhdG9yLmVtaXRFeHBy
ZXNzaW9uSW5mbyhkaXZvdCgpLCBzdGFydE9mZnNldCgpLCBlbmRPZmZzZXQoKSk7CiAgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwogICAgIE5v
bmxvY2FsUmVzb2x2ZUluZm8gcmVzb2x2ZUluZm87CkBAIC03NjcsNiArNzg3LDExIEBAIFJlZ2lz
dGVySUQqIFR5cGVPZlJlc29sdmVOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
IGdlbmVyYXRvciwgUmVnaXN0CiAgICAgICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdFR5cGVPZihn
ZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QpLCBsb2NhbCk7CiAgICAgfQogCisgICAgaWYg
KHJlc29sdmVSZXN1bHQuaXNTdGF0aWMoKSkgeworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
c2NyYXRjaCA9IGdlbmVyYXRvci5lbWl0R2V0U3RhdGljVmFyKGdlbmVyYXRvci50ZW1wRGVzdGlu
YXRpb24oZHN0KSwgcmVzb2x2ZVJlc3VsdCwgbV9pZGVudCk7CisgICAgICAgIHJldHVybiBnZW5l
cmF0b3IuZW1pdFR5cGVPZihnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QsIHNjcmF0Y2gu
Z2V0KCkpLCBzY3JhdGNoLmdldCgpKTsKKyAgICB9CisKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
c2NyYXRjaCA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZUJhc2UoZ2VuZXJhdG9yLnRlbXBEZXN0aW5h
dGlvbihkc3QpLCByZXNvbHZlUmVzdWx0LCBtX2lkZW50KTsKICAgICBnZW5lcmF0b3IuZW1pdEdl
dEJ5SWQoc2NyYXRjaC5nZXQoKSwgc2NyYXRjaC5nZXQoKSwgbV9pZGVudCk7CiAgICAgaWYgKGRz
dCA9PSBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKQpAQCAtODA4LDYgKzgzMywxMyBAQCBSZWdp
c3RlcklEKiBQcmVmaXhOb2RlOjplbWl0UmVzb2x2ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLCBSZWdpc3RlcklEKiBkcwogICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmVUb0Rlc3Rp
bmF0aW9uSWZOZWVkZWQoZHN0LCBsb2NhbCk7CiAgICAgfQogCisgICAgaWYgKHJlc29sdmVSZXN1
bHQuaXNTdGF0aWMoKSAmJiAhcmVzb2x2ZVJlc3VsdC5pc1JlYWRPbmx5KCkpIHsKKyAgICAgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IHByb3BEc3QgPSBnZW5lcmF0b3IuZW1pdEdldFN0YXRpY1Zhcihn
ZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIHJlc29sdmVSZXN1bHQsIGlkZW50KTsKKyAg
ICAgICAgZW1pdFByZUluY09yRGVjKGdlbmVyYXRvciwgcHJvcERzdC5nZXQoKSwgbV9vcGVyYXRv
cik7CisgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0U3RhdGljVmFyKHJlc29sdmVSZXN1bHQsIGlk
ZW50LCBwcm9wRHN0LmdldCgpKTsKKyAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5tb3ZlVG9EZXN0
aW5hdGlvbklmTmVlZGVkKGRzdCwgcHJvcERzdC5nZXQoKSk7CisgICAgfQorCiAgICAgZ2VuZXJh
dG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBzdGFydE9mZnNldCgpLCBlbmRPZmZzZXQo
KSk7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByb3BEc3QgPSBnZW5lcmF0b3IudGVtcERlc3Rp
bmF0aW9uKGRzdCk7CiAgICAgTm9ubG9jYWxSZXNvbHZlSW5mbyByZXNvbHZlVmVyaWZpZXI7CkBA
IC0xMjY3LDYgKzEyOTksMTMgQEAgUmVnaXN0ZXJJRCogUmVhZE1vZGlmeVJlc29sdmVOb2RlOjpl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmUKICAgICAgICAgcmV0
dXJuIGdlbmVyYXRvci5tb3ZlVG9EZXN0aW5hdGlvbklmTmVlZGVkKGRzdCwgcmVzdWx0KTsKICAg
ICB9CiAKKyAgICBpZiAocmVzb2x2ZVJlc3VsdC5pc1N0YXRpYygpICYmICFyZXNvbHZlUmVzdWx0
LmlzUmVhZE9ubHkoKSkgeworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3JjMSA9IGdlbmVy
YXRvci5lbWl0R2V0U3RhdGljVmFyKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgcmVz
b2x2ZVJlc3VsdCwgbV9pZGVudCk7CisgICAgICAgIFJlZ2lzdGVySUQqIHJlc3VsdCA9IGVtaXRS
ZWFkTW9kaWZ5QXNzaWdubWVudChnZW5lcmF0b3IsIGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9u
KGRzdCwgc3JjMS5nZXQoKSksIHNyYzEuZ2V0KCksIG1fcmlnaHQsIG1fb3BlcmF0b3IsIE9wZXJh
bmRUeXBlcyhSZXN1bHRUeXBlOjp1bmtub3duVHlwZSgpLCBtX3JpZ2h0LT5yZXN1bHREZXNjcmlw
dG9yKCkpKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRTdGF0aWNWYXIocmVzb2x2ZVJlc3Vs
dCwgbV9pZGVudCwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKICAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3JjMSA9IGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0
KTsKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCkgLSBzdGFydE9mZnNl
dCgpICsgbV9pZGVudC5sZW5ndGgoKSwgbV9pZGVudC5sZW5ndGgoKSwgMCk7CiAgICAgTm9ubG9j
YWxSZXNvbHZlSW5mbyByZXNvbHZlVmVyaWZpZXI7CkBAIC0xMjkwLDYgKzEzMjksMTQgQEAgUmVn
aXN0ZXJJRCogQXNzaWduUmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYgZ2VuZXJhdG9yLCBSZWdpc3QKICAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5tb3ZlVG9EZXN0
aW5hdGlvbklmTmVlZGVkKGRzdCwgcmVzdWx0KTsKICAgICB9CiAKKyAgICBpZiAocmVzb2x2ZVJl
c3VsdC5pc1N0YXRpYygpICYmICFyZXNvbHZlUmVzdWx0LmlzUmVhZE9ubHkoKSkgeworICAgICAg
ICBpZiAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpCisgICAgICAgICAgICBkc3Qg
PSAwOworICAgICAgICBSZWdpc3RlcklEKiB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShkc3Qs
IG1fcmlnaHQpOworICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dFN0YXRpY1ZhcihyZXNvbHZlUmVz
dWx0LCBtX2lkZW50LCB2YWx1ZSk7CisgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICB9CisKICAg
ICBOb25sb2NhbFJlc29sdmVJbmZvIHJlc29sdmVWZXJpZmllcjsKICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gYmFzZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZUJhc2VGb3JQdXQoZ2VuZXJhdG9yLm5l
d1RlbXBvcmFyeSgpLCByZXNvbHZlUmVzdWx0LCBtX2lkZW50LCByZXNvbHZlVmVyaWZpZXIpOwog
ICAgIGlmIChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSkKQEAgLTEzOTEsMTAgKzE0
MzgsOSBAQCBSZWdpc3RlcklEKiBDb25zdERlY2xOb2RlOjplbWl0Q29kZVNpbmdsZShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yKQogCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0g
bV9pbml0ID8gZ2VuZXJhdG9yLmVtaXROb2RlKG1faW5pdCkgOiBnZW5lcmF0b3IuZW1pdExvYWQo
MCwganNVbmRlZmluZWQoKSk7CiAKLSAgICBpZiAoZ2VuZXJhdG9yLmNvZGVUeXBlKCkgPT0gR2xv
YmFsQ29kZSkgewotICAgICAgICBpZiAoUmVnaXN0ZXJJRCogcmVzdWx0ID0gZ2VuZXJhdG9yLmVt
aXRJbml0R2xvYmFsQ29uc3QobV9pZGVudCwgdmFsdWUuZ2V0KCkpKQotICAgICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKLSAgICB9CisgICAgaWYgKGdlbmVyYXRvci5jb2RlVHlwZSgpID09IEdsb2Jh
bENvZGUpCisgICAgICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdEluaXRHbG9iYWxDb25zdChtX2lk
ZW50LCB2YWx1ZS5nZXQoKSk7CisKICAgICBpZiAoZ2VuZXJhdG9yLmNvZGVUeXBlKCkgIT0gRXZh
bENvZGUpCiAgICAgICAgIHJldHVybiB2YWx1ZS5nZXQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCA4NDY1YTcwZDJjYmY4ODZj
MTA5MTUzY2E4NWVhMGMzNDc1NmRkNjg4Li5kZGNiMzRiNDMxODAzMzcxNDA3YWM5MjhiYWVjN2Zj
Y2ViZWYzNDgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVD
b2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcApAQCAtMzA4Myw2ICszMDgzLDMyIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBh
cnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICBhZGRUb0dyYXBoKEp1bXAsIE9w
SW5mbyhtX2N1cnJlbnRJbmRleCArIE9QQ09ERV9MRU5HVEgob3Bfam5lcV9wdHIpKSk7CiAgICAg
ICAgICAgICBMQVNUX09QQ09ERShvcF9qbmVxX3B0cik7CiAKKyAgICAgICAgY2FzZSBvcF9nZXRf
c2NvcGVkX3ZhcjogeworICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiA9IGdl
dFByZWRpY3Rpb24oKTsKKyAgICAgICAgICAgIGludCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25b
MV0udS5vcGVyYW5kOworICAgICAgICAgICAgaW50IHNsb3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25b
Ml0udS5vcGVyYW5kOworICAgICAgICAgICAgaW50IGRlcHRoID0gY3VycmVudEluc3RydWN0aW9u
WzNdLnUub3BlcmFuZDsKKyAgICAgICAgICAgIGJvb2wgaGFzVG9wU2NvcGUgPSBtX2NvZGVCbG9j
ay0+Y29kZVR5cGUoKSA9PSBGdW5jdGlvbkNvZGUgJiYgbV9jb2RlQmxvY2stPm5lZWRzRnVsbFNj
b3BlQ2hhaW4oKTsKKyAgICAgICAgICAgIEFTU0VSVCghaGFzVG9wU2NvcGUgfHwgZGVwdGggPj0g
MSk7CisgICAgICAgICAgICBOb2RlKiBzY29wZSA9IGdldFNjb3BlKGhhc1RvcFNjb3BlLCBkZXB0
aCAtIGhhc1RvcFNjb3BlKTsKKyAgICAgICAgICAgIE5vZGUqIGdldFNjb3BlUmVnaXN0ZXJzID0g
YWRkVG9HcmFwaChHZXRTY29wZVJlZ2lzdGVycywgc2NvcGUpOworICAgICAgICAgICAgTm9kZSog
Z2V0U2NvcGVkVmFyID0gYWRkVG9HcmFwaChHZXRTY29wZWRWYXIsIE9wSW5mbyhzbG90KSwgT3BJ
bmZvKHByZWRpY3Rpb24pLCBnZXRTY29wZVJlZ2lzdGVycyk7CisgICAgICAgICAgICBzZXQoZHN0
LCBnZXRTY29wZWRWYXIpOworICAgICAgICAgICAgTkVYVF9PUENPREUob3BfZ2V0X3Njb3BlZF92
YXIpOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBvcF9wdXRfc2NvcGVkX3ZhcjogeworICAg
ICAgICAgICAgaW50IHNsb3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworICAg
ICAgICAgICAgaW50IGRlcHRoID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKKyAg
ICAgICAgICAgIGludCBzb3VyY2UgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOwor
ICAgICAgICAgICAgYm9vbCBoYXNUb3BTY29wZSA9IG1fY29kZUJsb2NrLT5jb2RlVHlwZSgpID09
IEZ1bmN0aW9uQ29kZSAmJiBtX2NvZGVCbG9jay0+bmVlZHNGdWxsU2NvcGVDaGFpbigpOworICAg
ICAgICAgICAgQVNTRVJUKCFoYXNUb3BTY29wZSB8fCBkZXB0aCA+PSAxKTsKKyAgICAgICAgICAg
IE5vZGUqIHNjb3BlID0gZ2V0U2NvcGUoaGFzVG9wU2NvcGUsIGRlcHRoIC0gaGFzVG9wU2NvcGUp
OworICAgICAgICAgICAgTm9kZSogc2NvcGVSZWdpc3RlcnMgPSBhZGRUb0dyYXBoKEdldFNjb3Bl
UmVnaXN0ZXJzLCBzY29wZSk7CisgICAgICAgICAgICBhZGRUb0dyYXBoKFB1dFNjb3BlZFZhciwg
T3BJbmZvKHNsb3QpLCBzY29wZSwgc2NvcGVSZWdpc3RlcnMsIGdldChzb3VyY2UpKTsKKyAgICAg
ICAgICAgIE5FWFRfT1BDT0RFKG9wX3B1dF9zY29wZWRfdmFyKTsKKyAgICAgICAgfQorCiAgICAg
ICAgIGNhc2Ugb3BfcmVzb2x2ZToKICAgICAgICAgY2FzZSBvcF9yZXNvbHZlX2dsb2JhbF9wcm9w
ZXJ0eToKICAgICAgICAgY2FzZSBvcF9yZXNvbHZlX2dsb2JhbF92YXI6CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKaW5kZXggOTYyNTRhM2Q0OTJkMDFj
MTMyYzY2ZjI3MGM2MDEwNTA0MGM3ODg1MC4uOGZjY2I4MDRiMjhkMWM0ZTZiMWJmOGYzM2FlNjdj
MmE4MzczNGMyZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBh
YmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0
aWVzLmNwcApAQCAtODUsNyArODUsNiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZGVidWdGYWlsKENv
ZGVCbG9jayogY29kZUJsb2NrLCBPcGNvZGVJRCBvcGNvZGVJRCwgQ2FwYWJpbGl0eQogICAgIGlm
IChyZXN1bHQgPT0gQ2Fubm90Q29tcGlsZSkKICAgICAgICAgZGF0YUxvZ0YoIkNhbm5vdCBoYW5k
bGUgY29kZSBibG9jayAlcCBiZWNhdXNlIG9mIG9wY29kZSAlcy5cbiIsIGNvZGVCbG9jaywgb3Bj
b2RlTmFtZXNbb3Bjb2RlSURdKTsKICAgICBlbHNlIHsKLSAgICAgICAgQVNTRVJUKHJlc3VsdCA9
PSBTaG91bGRQcm9maWxlKTsKICAgICAgICAgZGF0YUxvZ0YoIkNhbm5vdCBjb21waWxlIGNvZGUg
YmxvY2sgJXAgYmVjYXVzZSBvZiBvcGNvZGUgJXMsIGJ1dCBpbmxpbmluZyBtaWdodCBiZSBwb3Nz
aWJsZS5cbiIsIGNvZGVCbG9jaywgb3Bjb2RlTmFtZXNbb3Bjb2RlSURdKTsKICAgICB9CiAjZWxz
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmgKaW5kZXggNjA2
NGUzZWYxZTc0NGM1ZjI4YWNhNzYyZTQ4MTkyYmRhMDczYWY1ZC4uMjYxM2Q0MmE3NzBkYTc5ODRi
MTI4ZGFiNjNkMzRmOGRmZDAxOGUzYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDYXBhYmlsaXRpZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NhcGFiaWxpdGllcy5oCkBAIC0yMDMsNiArMjAzLDEwIEBAIGlubGluZSBDYXBhYmlsaXR5TGV2
ZWwgY2FuQ29tcGlsZU9wY29kZShPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiwgSW5zdHJ1
Y3RpCiAgICAgY2FzZSBvcF9yZXNvbHZlX3Njb3BlZF92YXJfd2l0aF90b3Bfc2NvcGVfY2hlY2s6
CiAgICAgICAgIHJldHVybiBDYW5Db21waWxlOwogCisgICAgY2FzZSBvcF9nZXRfc2NvcGVkX3Zh
cjoKKyAgICBjYXNlIG9wX3B1dF9zY29wZWRfdmFyOgorICAgICAgICByZXR1cm4gQ2FuQ29tcGls
ZTsKKwogICAgIGNhc2Ugb3BfcmVzb2x2ZV9iYXNlX3RvX2dsb2JhbDoKICAgICBjYXNlIG9wX3Jl
c29sdmVfYmFzZV90b19nbG9iYWxfZHluYW1pYzoKICAgICBjYXNlIG9wX3Jlc29sdmVfYmFzZV90
b19zY29wZToKQEAgLTIzNiw3ICsyNDAsMTEgQEAgaW5saW5lIGJvb2wgY2FuSW5saW5lT3Bjb2Rl
KE9wY29kZUlEIG9wY29kZUlELCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb24KICAg
ICBjYXNlIG9wX3Jlc29sdmVfd2l0aF9iYXNlOgogICAgIGNhc2Ugb3BfcmVzb2x2ZV93aXRoX3Ro
aXM6CiAgICAgICAgIHJldHVybiBjYW5JbmxpbmVSZXNvbHZlT3BlcmF0aW9ucyhwY1s0XS51LnJl
c29sdmVPcGVyYXRpb25zKTsKLSAgICAgICAgCisKKyAgICBjYXNlIG9wX2dldF9zY29wZWRfdmFy
OgorICAgIGNhc2Ugb3BfcHV0X3Njb3BlZF92YXI6CisgICAgICAgIHJldHVybiAhY29kZUJsb2Nr
LT5uZWVkc0Z1bGxTY29wZUNoYWluKCk7CisKICAgICAvLyBJbmxpbmluZyBkb2Vzbid0IGNvcnJl
Y3RseSByZW1hcCByZWd1bGFyIGV4cHJlc3Npb24gb3BlcmFuZHMuCiAgICAgY2FzZSBvcF9uZXdf
cmVnZXhwOgogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRleCAyZThmY2Vk
M2QyMzgxZDcwMDNhNzU4MGU1ODc1YmZlNjQ1MTMxZDkzLi44M2JmYTkwOTJkNmVmNjM5ZDBmNDc4
OWRiOTJkNDgxNDJkNDYwMGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC0zOTAs
NiArMzkwLDkgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBE
RUZJTkVfT1Aob3BfdG9fanNudW1iZXIpCiAgICAgICAgIERFRklORV9PUChvcF90b19wcmltaXRp
dmUpCiAKKyAgICAgICAgREVGSU5FX09QKG9wX2dldF9zY29wZWRfdmFyKQorICAgICAgICBERUZJ
TkVfT1Aob3BfcHV0X3Njb3BlZF92YXIpCisKICAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWRfY2hh
aW46CiAgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkX2dlbmVyaWM6CiAgICAgICAgIGNhc2Ugb3Bf
Z2V0X2J5X2lkX3Byb3RvOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXggYzBjM2M0NzkzZjMw
ZTQwZDE5NmE1YWFlMmVhYjQ0NzM5Y2Y4ZTkzYS4uODIwNmQwNDA4NWJmZTk2YmVmNmJlMTE1MGNk
N2IzYmFjNmU5YjA5ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC03NTYsNiArNzU2LDgg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdF9vcF90b19wcmltaXRpdmUoSW5z
dHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3VuZXhwZWN0ZWRfbG9hZChJbnN0cnVj
dGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfdXJzaGlmdChJbnN0cnVjdGlvbiopOworICAg
ICAgICB2b2lkIGVtaXRfb3BfZ2V0X3Njb3BlZF92YXIoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAg
dm9pZCBlbWl0X29wX3B1dF9zY29wZWRfdmFyKEluc3RydWN0aW9uKik7CiAKICAgICAgICAgdm9p
ZCBlbWl0U2xvd19vcF9hZGQoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0
ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfYml0YW5kKEluc3RydWN0aW9uKiwg
VmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAppbmRleCBkZjFlZmQ4ZjE3MjFiZmQwM2I4
N2JjNmIxNmY4MGVjZTlmZWFiYTRkLi4xM2RmZmEyMmE2YWQwZmFhMzAyMzQ0NjI4MjYyYmQ0OWJi
ZmJhMGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5
QWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNj
ZXNzLmNwcApAQCAtMTIwNCw2ICsxMjA0LDU0IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdl
dEJ5SWRDaGFpbihTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFN0cnVjdHVyZSogc3RyCiAg
ICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmtDYWxsZXJUb0Z1bmN0aW9uKHJldHVybkFkZHJlc3MsIEZ1
bmN0aW9uUHRyKGN0aV9vcF9nZXRfYnlfaWRfcHJvdG9fbGlzdCkpOwogfQogCit2b2lkIEpJVDo6
ZW1pdF9vcF9nZXRfc2NvcGVkX3ZhcihJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQor
eworICAgIGludCBza2lwID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKKworICAg
IGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKEpTU3RhY2s6OlNjb3BlQ2hhaW4sIHJlZ1Qw
KTsKKyAgICBib29sIGNoZWNrVG9wTGV2ZWwgPSBtX2NvZGVCbG9jay0+Y29kZVR5cGUoKSA9PSBG
dW5jdGlvbkNvZGUgJiYgbV9jb2RlQmxvY2stPm5lZWRzRnVsbFNjb3BlQ2hhaW4oKTsKKyAgICBB
U1NFUlQoc2tpcCB8fCAhY2hlY2tUb3BMZXZlbCk7CisgICAgaWYgKGNoZWNrVG9wTGV2ZWwgJiYg
c2tpcC0tKSB7CisgICAgICAgIEp1bXAgYWN0aXZhdGlvbk5vdENyZWF0ZWQ7CisgICAgICAgIGlm
IChjaGVja1RvcExldmVsKQorICAgICAgICAgICAgYWN0aXZhdGlvbk5vdENyZWF0ZWQgPSBicmFu
Y2hUZXN0UHRyKFplcm8sIGFkZHJlc3NGb3IobV9jb2RlQmxvY2stPmFjdGl2YXRpb25SZWdpc3Rl
cigpKSk7CisgICAgICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNTY29wZTo6b2Zmc2V0T2ZO
ZXh0KCkpLCByZWdUMCk7CisgICAgICAgIGFjdGl2YXRpb25Ob3RDcmVhdGVkLmxpbmsodGhpcyk7
CisgICAgfQorICAgIHdoaWxlIChza2lwLS0pCisgICAgICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdU
MCwgSlNTY29wZTo6b2Zmc2V0T2ZOZXh0KCkpLCByZWdUMCk7CisKKyAgICBsb2FkUHRyKEFkZHJl
c3MocmVnVDAsIEpTVmFyaWFibGVPYmplY3Q6Om9mZnNldE9mUmVnaXN0ZXJzKCkpLCByZWdUMCk7
CisgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVy
YW5kICogc2l6ZW9mKFJlZ2lzdGVyKSksIHJlZ1QwKTsKKyAgICBlbWl0VmFsdWVQcm9maWxpbmdT
aXRlKCk7CisgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0u
dS5vcGVyYW5kKTsKK30KKwordm9pZCBKSVQ6OmVtaXRfb3BfcHV0X3Njb3BlZF92YXIoSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBpbnQgc2tpcCA9IGN1cnJlbnRJbnN0
cnVjdGlvblsyXS51Lm9wZXJhbmQ7CisKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGN1cnJl
bnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQsIHJlZ1QwKTsKKworICAgIGVtaXRHZXRGcm9tQ2Fs
bEZyYW1lSGVhZGVyUHRyKEpTU3RhY2s6OlNjb3BlQ2hhaW4sIHJlZ1QxKTsKKyAgICBib29sIGNo
ZWNrVG9wTGV2ZWwgPSBtX2NvZGVCbG9jay0+Y29kZVR5cGUoKSA9PSBGdW5jdGlvbkNvZGUgJiYg
bV9jb2RlQmxvY2stPm5lZWRzRnVsbFNjb3BlQ2hhaW4oKTsKKyAgICBBU1NFUlQoc2tpcCB8fCAh
Y2hlY2tUb3BMZXZlbCk7CisgICAgaWYgKGNoZWNrVG9wTGV2ZWwgJiYgc2tpcC0tKSB7CisgICAg
ICAgIEp1bXAgYWN0aXZhdGlvbk5vdENyZWF0ZWQ7CisgICAgICAgIGlmIChjaGVja1RvcExldmVs
KQorICAgICAgICAgICAgYWN0aXZhdGlvbk5vdENyZWF0ZWQgPSBicmFuY2hUZXN0UHRyKFplcm8s
IGFkZHJlc3NGb3IobV9jb2RlQmxvY2stPmFjdGl2YXRpb25SZWdpc3RlcigpKSk7CisgICAgICAg
IGxvYWRQdHIoQWRkcmVzcyhyZWdUMSwgSlNTY29wZTo6b2Zmc2V0T2ZOZXh0KCkpLCByZWdUMSk7
CisgICAgICAgIGFjdGl2YXRpb25Ob3RDcmVhdGVkLmxpbmsodGhpcyk7CisgICAgfQorICAgIHdo
aWxlIChza2lwLS0pCisgICAgICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMSwgSlNTY29wZTo6b2Zm
c2V0T2ZOZXh0KCkpLCByZWdUMSk7CisKKyAgICBlbWl0V3JpdGVCYXJyaWVyKHJlZ1QxLCByZWdU
MCwgcmVnVDIsIHJlZ1QzLCBTaG91bGRGaWx0ZXJJbW1lZGlhdGVzLCBXcml0ZUJhcnJpZXJGb3JW
YXJpYWJsZUFjY2Vzcyk7CisKKyAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDEsIEpTVmFyaWFibGVP
YmplY3Q6Om9mZnNldE9mUmVnaXN0ZXJzKCkpLCByZWdUMSk7CisgICAgc3RvcmVQdHIocmVnVDAs
IEFkZHJlc3MocmVnVDEsIGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQgKiBzaXplb2Yo
UmVnaXN0ZXIpKSk7Cit9CisKIHZvaWQgSklUOjplbWl0X29wX2luaXRfZ2xvYmFsX2NvbnN0KElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCA9IG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCmluZGV4IDVk
OTQ1OTk1MTM3OWUzNjEzZTcwZjM0NDcyOTMzZmU3ZmY0OTU0MTcuLjUyYWYwY2I1ZGJjYzliMWIz
OWIzNzUwZmM5ZjM2NWEwOWNiOWE0ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcApAQCAtMTI0NCw2ICsxMjQ0LDU5IEBA
IHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfcG5hbWUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDCiAgICAgc3R1YkNhbGwuY2FsbChkc3QpOwogfQogCit2
b2lkIEpJVDo6ZW1pdF9vcF9nZXRfc2NvcGVkX3ZhcihJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQoreworICAgIGludCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5k
OworICAgIGludCBpbmRleCA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CisgICAg
aW50IHNraXAgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOworCisgICAgZW1pdEdl
dEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoSlNTdGFjazo6U2NvcGVDaGFpbiwgcmVnVDIpOworICAg
IGJvb2wgY2hlY2tUb3BMZXZlbCA9IG1fY29kZUJsb2NrLT5jb2RlVHlwZSgpID09IEZ1bmN0aW9u
Q29kZSAmJiBtX2NvZGVCbG9jay0+bmVlZHNGdWxsU2NvcGVDaGFpbigpOworICAgIEFTU0VSVChz
a2lwIHx8ICFjaGVja1RvcExldmVsKTsKKyAgICBpZiAoY2hlY2tUb3BMZXZlbCAmJiBza2lwLS0p
IHsKKyAgICAgICAgSnVtcCBhY3RpdmF0aW9uTm90Q3JlYXRlZDsKKyAgICAgICAgaWYgKGNoZWNr
VG9wTGV2ZWwpCisgICAgICAgICAgICBhY3RpdmF0aW9uTm90Q3JlYXRlZCA9IGJyYW5jaDMyKEVx
dWFsLCB0YWdGb3IobV9jb2RlQmxvY2stPmFjdGl2YXRpb25SZWdpc3RlcigpKSwgVHJ1c3RlZElt
bTMyKEpTVmFsdWU6OkVtcHR5VmFsdWVUYWcpKTsKKyAgICAgICAgbG9hZFB0cihBZGRyZXNzKHJl
Z1QyLCBKU1Njb3BlOjpvZmZzZXRPZk5leHQoKSksIHJlZ1QyKTsKKyAgICAgICAgYWN0aXZhdGlv
bk5vdENyZWF0ZWQubGluayh0aGlzKTsKKyAgICB9CisgICAgd2hpbGUgKHNraXAtLSkKKyAgICAg
ICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QyLCBKU1Njb3BlOjpvZmZzZXRPZk5leHQoKSksIHJlZ1Qy
KTsKKworICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMiwgSlNWYXJpYWJsZU9iamVjdDo6b2Zmc2V0
T2ZSZWdpc3RlcnMoKSksIHJlZ1QyKTsKKworICAgIGVtaXRMb2FkKGluZGV4LCByZWdUMSwgcmVn
VDAsIHJlZ1QyKTsKKyAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKCk7CisgICAgZW1pdFN0b3Jl
KGRzdCwgcmVnVDEsIHJlZ1QwKTsKKyAgICBtYXAobV9ieXRlY29kZU9mZnNldCArIE9QQ09ERV9M
RU5HVEgob3BfZ2V0X3Njb3BlZF92YXIpLCBkc3QsIHJlZ1QxLCByZWdUMCk7Cit9CisKK3ZvaWQg
SklUOjplbWl0X29wX3B1dF9zY29wZWRfdmFyKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCit7CisgICAgaW50IGluZGV4ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsK
KyAgICBpbnQgc2tpcCA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CisgICAgaW50
IHZhbHVlID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKKworICAgIGVtaXRMb2Fk
KHZhbHVlLCByZWdUMSwgcmVnVDApOworCisgICAgZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQ
dHIoSlNTdGFjazo6U2NvcGVDaGFpbiwgcmVnVDIpOworICAgIGJvb2wgY2hlY2tUb3BMZXZlbCA9
IG1fY29kZUJsb2NrLT5jb2RlVHlwZSgpID09IEZ1bmN0aW9uQ29kZSAmJiBtX2NvZGVCbG9jay0+
bmVlZHNGdWxsU2NvcGVDaGFpbigpOworICAgIEFTU0VSVChza2lwIHx8ICFjaGVja1RvcExldmVs
KTsKKyAgICBpZiAoY2hlY2tUb3BMZXZlbCAmJiBza2lwLS0pIHsKKyAgICAgICAgSnVtcCBhY3Rp
dmF0aW9uTm90Q3JlYXRlZDsKKyAgICAgICAgaWYgKGNoZWNrVG9wTGV2ZWwpCisgICAgICAgICAg
ICBhY3RpdmF0aW9uTm90Q3JlYXRlZCA9IGJyYW5jaDMyKEVxdWFsLCB0YWdGb3IobV9jb2RlQmxv
Y2stPmFjdGl2YXRpb25SZWdpc3RlcigpKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkVtcHR5VmFs
dWVUYWcpKTsKKyAgICAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QyLCBKU1Njb3BlOjpvZmZzZXRP
Zk5leHQoKSksIHJlZ1QyKTsKKyAgICAgICAgYWN0aXZhdGlvbk5vdENyZWF0ZWQubGluayh0aGlz
KTsKKyAgICB9CisgICAgd2hpbGUgKHNraXAtLSkKKyAgICAgICAgbG9hZFB0cihBZGRyZXNzKHJl
Z1QyLCBKU1Njb3BlOjpvZmZzZXRPZk5leHQoKSksIHJlZ1QyKTsKKworICAgIGxvYWRQdHIoQWRk
cmVzcyhyZWdUMiwgSlNWYXJpYWJsZU9iamVjdDo6b2Zmc2V0T2ZSZWdpc3RlcnMoKSksIHJlZ1Qz
KTsKKyAgICBlbWl0U3RvcmUoaW5kZXgsIHJlZ1QxLCByZWdUMCwgcmVnVDMpOworICAgIGVtaXRX
cml0ZUJhcnJpZXIocmVnVDIsIHJlZ1QxLCByZWdUMCwgcmVnVDEsIFNob3VsZEZpbHRlckltbWVk
aWF0ZXMsIFdyaXRlQmFycmllckZvclZhcmlhYmxlQWNjZXNzKTsKK30KKwogdm9pZCBKSVQ6OmVt
aXRfb3BfaW5pdF9nbG9iYWxfY29uc3QoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
IHsKICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4qIHJlZ2lzdGVyUG9pbnRlciA9IGN1cnJlbnRJ
bnN0cnVjdGlvblsxXS51LnJlZ2lzdGVyUG9pbnRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KaW5kZXggNWJi
ZmIyMjQxNjRkNjljZGQ4YjI2ZDY2MmI5M2RiNWFjODhjNmZiYS4uNTlmNjBlNWY0MTNhOWU3ODNl
MTAzYTNhOTZlZWUwODJhZjk2OWE5ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KQEAgLTE3ODEsNiArMTc4
MSw3MSBAQCBfbGxpbnRfb3BfY2F0Y2g6CiAgICAgZGlzcGF0Y2goMikKIAogCisjIEdpdmVzIHlv
dSB0aGUgc2NvcGUgaW4gdDAsIHdoaWxlIGFsbG93aW5nIHlvdSB0byBvcHRpb25hbGx5IHBlcmZv
cm0gYWRkaXRpb25hbCBjaGVja3Mgb24gdGhlCisjIHNjb3BlcyBhcyB0aGV5IGFyZSB0cmF2ZXJz
ZWQuIHNjb3BlQ2hlY2soKSBpcyBjYWxsZWQgd2l0aCB0d28gYXJndW1lbnRzOiB0aGUgcmVnaXN0
ZXIKKyMgaG9sZGluZyB0aGUgc2NvcGUsIGFuZCBhIHJlZ2lzdGVyIHRoYXQgY2FuIGJlIHVzZWQg
Zm9yIHNjcmF0Y2guIE5vdGUgdGhhdCB0aGlzIGRvZXMgbm90CisjIHVzZSB0Mywgc28geW91IGNh
biBob2xkIHN0dWZmIGluIHQzIGlmIG5lZWQgYmUuCittYWNybyBnZXREZUJydWlqblNjb3BlKGRl
QnJ1aWppbkluZGV4T3BlcmFuZCwgc2NvcGVDaGVjaykKKyAgICBsb2FkcCBTY29wZUNoYWluICsg
UGF5bG9hZE9mZnNldFtjZnJdLCB0MAorICAgIGxvYWRpIGRlQnJ1aWppbkluZGV4T3BlcmFuZCwg
dDIKKworICAgIGJ0aXogdDIsIC5kb25lCisKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDEK
KyAgICBiaW5lcSBDb2RlQmxvY2s6Om1fY29kZVR5cGVbdDFdLCBGdW5jdGlvbkNvZGUsIC5sb29w
CisgICAgYnRieiBDb2RlQmxvY2s6Om1fbmVlZHNGdWxsU2NvcGVDaGFpblt0MV0sIC5sb29wCisK
KyAgICBsb2FkaSBDb2RlQmxvY2s6Om1fYWN0aXZhdGlvblJlZ2lzdGVyW3QxXSwgdDEKKworICAg
ICMgTmVlZCB0byBjb25kaXRpb25hbGx5IHNraXAgb3ZlciBvbmUgc2NvcGUuCisgICAgYmllcSBU
YWdPZmZzZXRbY2ZyLCB0MSwgOF0sIEVtcHR5VmFsdWVUYWcsIC5ub0FjdGl2YXRpb24KKyAgICBz
Y29wZUNoZWNrKHQwLCB0MSkKKyAgICBsb2FkcCBKU1Njb3BlOjptX25leHRbdDBdLCB0MAorLm5v
QWN0aXZhdGlvbjoKKyAgICBzdWJpIDEsIHQyCisKKyAgICBidGl6IHQyLCAuZG9uZQorLmxvb3A6
CisgICAgc2NvcGVDaGVjayh0MCwgdDEpCisgICAgbG9hZHAgSlNTY29wZTo6bV9uZXh0W3QwXSwg
dDAKKyAgICBzdWJpIDEsIHQyCisgICAgYnRpbnogdDIsIC5sb29wCisKKy5kb25lOgorCitlbmQK
KworX2xsaW50X29wX2dldF9zY29wZWRfdmFyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICAj
IE9wZXJhbmRzIGFyZSBhcyBmb2xsb3dzOgorICAgICMgNFtQQ10gICBEZXN0aW5hdGlvbiBmb3Ig
dGhlIGxvYWQuCisgICAgIyA4W1BDXSAgIEluZGV4IG9mIHJlZ2lzdGVyIGluIHRoZSBzY29wZS4K
KyAgICAjIDEyW1BDXSAgRGUgQnJ1aWppbiBpbmRleC4KKyAgICBnZXREZUJydWlqblNjb3BlKDEy
W1BDXSwgbWFjcm8gKHNjb3BlLCBzY3JhdGNoKSBlbmQpCisgICAgbG9hZGkgNFtQQ10sIHQxCisg
ICAgbG9hZGkgOFtQQ10sIHQyCisgICAgbG9hZHAgSlNWYXJpYWJsZU9iamVjdDo6bV9yZWdpc3Rl
cnNbdDBdLCB0MAorICAgIGxvYWRpIFRhZ09mZnNldFt0MCwgdDIsIDhdLCB0MworICAgIGxvYWRp
IFBheWxvYWRPZmZzZXRbdDAsIHQyLCA4XSwgdDAKKyAgICBzdG9yZWkgdDMsIFRhZ09mZnNldFtj
ZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAg
IGxvYWRpIDE2W1BDXSwgdDEKKyAgICB2YWx1ZVByb2ZpbGUodDMsIHQwLCB0MSkKKyAgICBkaXNw
YXRjaCg1KQorCisKK19sbGludF9vcF9wdXRfc2NvcGVkX3ZhcjoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgZ2V0RGVCcnVpam5TY29wZSg4W1BDXSwgbWFjcm8gKHNjb3BlLCBzY3JhdGNoKSBl
bmQpCisgICAgbG9hZGkgMTJbUENdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDEs
IHQzLCB0MikKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICB3cml0ZUJhcnJpZXIodDMsIHQyKQor
ICAgIGxvYWRwIEpTVmFyaWFibGVPYmplY3Q6Om1fcmVnaXN0ZXJzW3QwXSwgdDAKKyAgICBzdG9y
ZWkgdDMsIFRhZ09mZnNldFt0MCwgdDEsIDhdCisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0
W3QwLCB0MSwgOF0KKyAgICBkaXNwYXRjaCg0KQorCiBfbGxpbnRfb3BfZW5kOgogICAgIHRyYWNl
RXhlY3V0aW9uKCkKICAgICBjaGVja1N3aXRjaFRvSklURm9yRXBpbG9ndWUoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20g
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQpp
bmRleCA4MzUyOTcxMTIwOTVlMzA5MGQxYjE4NmY2Y2I1ODg3MjExZDY4MTM1Li45MmY1Mzg4ZDMz
YmJmNWNmNzQzZTE5NmI1NzJmMjMwMjYxOGI0ZTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQpAQCAtMTYzMiw2ICsx
NjMyLDY3IEBAIF9sbGludF90aHJvd19kdXJpbmdfY2FsbF90cmFtcG9saW5lOgogICAgIGxvYWRw
IEpTR2xvYmFsRGF0YTo6Y2FsbEZyYW1lRm9yVGhyb3dbdDFdLCB0MAogICAgIGptcCBKU0dsb2Jh
bERhdGE6OnRhcmdldE1hY2hpbmVQQ0ZvclRocm93W3QxXQogCisjIEdpdmVzIHlvdSB0aGUgc2Nv
cGUgaW4gdDAsIHdoaWxlIGFsbG93aW5nIHlvdSB0byBvcHRpb25hbGx5IHBlcmZvcm0gYWRkaXRp
b25hbCBjaGVja3Mgb24gdGhlCisjIHNjb3BlcyBhcyB0aGV5IGFyZSB0cmF2ZXJzZWQuIHNjb3Bl
Q2hlY2soKSBpcyBjYWxsZWQgd2l0aCB0d28gYXJndW1lbnRzOiB0aGUgcmVnaXN0ZXIKKyMgaG9s
ZGluZyB0aGUgc2NvcGUsIGFuZCBhIHJlZ2lzdGVyIHRoYXQgY2FuIGJlIHVzZWQgZm9yIHNjcmF0
Y2guIE5vdGUgdGhhdCB0aGlzIGRvZXMgbm90CisjIHVzZSB0Mywgc28geW91IGNhbiBob2xkIHN0
dWZmIGluIHQzIGlmIG5lZWQgYmUuCittYWNybyBnZXREZUJydWlqblNjb3BlKGRlQnJ1aWppbklu
ZGV4T3BlcmFuZCwgc2NvcGVDaGVjaykKKyAgICBsb2FkcCBTY29wZUNoYWluW2Nmcl0sIHQwCisg
ICAgbG9hZGlzIGRlQnJ1aWppbkluZGV4T3BlcmFuZCwgdDIKKworICAgIGJ0aXogdDIsIC5kb25l
CisKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDEKKyAgICBiaW5lcSBDb2RlQmxvY2s6Om1f
Y29kZVR5cGVbdDFdLCBGdW5jdGlvbkNvZGUsIC5sb29wCisgICAgYnRieiBDb2RlQmxvY2s6Om1f
bmVlZHNGdWxsU2NvcGVDaGFpblt0MV0sIC5sb29wCisKKyAgICBsb2FkaXMgQ29kZUJsb2NrOjpt
X2FjdGl2YXRpb25SZWdpc3Rlclt0MV0sIHQxCisKKyAgICAjIE5lZWQgdG8gY29uZGl0aW9uYWxs
eSBza2lwIG92ZXIgb25lIHNjb3BlLgorICAgIGJ0cHogW2NmciwgdDEsIDhdLCAubm9BY3RpdmF0
aW9uCisgICAgc2NvcGVDaGVjayh0MCwgdDEpCisgICAgbG9hZHAgSlNTY29wZTo6bV9uZXh0W3Qw
XSwgdDAKKy5ub0FjdGl2YXRpb246CisgICAgc3ViaSAxLCB0MgorCisgICAgYnRpeiB0MiwgLmRv
bmUKKy5sb29wOgorICAgIHNjb3BlQ2hlY2sodDAsIHQxKQorICAgIGxvYWRwIEpTU2NvcGU6Om1f
bmV4dFt0MF0sIHQwCisgICAgc3ViaSAxLCB0MgorICAgIGJ0aW56IHQyLCAubG9vcAorCisuZG9u
ZToKK2VuZAorCitfbGxpbnRfb3BfZ2V0X3Njb3BlZF92YXI6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgICMgT3BlcmFuZHMgYXJlIGFzIGZvbGxvd3M6CisgICAgIyBwY1sxXTogRGVzdGluYXRp
b24gZm9yIHRoZSBsb2FkCisgICAgIyBwY1syXTogSW5kZXggb2YgcmVnaXN0ZXIgaW4gdGhlIHNj
b3BlCisgICAgIyAyNFtQQiwgUEMsIDhdICBEZSBCcnVpamluIGluZGV4LgorICAgIGdldERlQnJ1
aWpuU2NvcGUoMjRbUEIsIFBDLCA4XSwgbWFjcm8gKHNjb3BlLCBzY3JhdGNoKSBlbmQpCisgICAg
bG9hZGlzRnJvbUluc3RydWN0aW9uKDEsIHQxKQorICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigy
LCB0MikKKworICAgIGxvYWRwIEpTVmFyaWFibGVPYmplY3Q6Om1fcmVnaXN0ZXJzW3QwXSwgdDAK
KyAgICBsb2FkcCBbdDAsIHQyLCA4XSwgdDMKKyAgICBzdG9yZXAgdDMsIFtjZnIsIHQxLCA4XQor
ICAgIGxvYWRwIDMyW1BCLCBQQywgOF0sIHQxCisgICAgdmFsdWVQcm9maWxlKHQzLCB0MSkKKyAg
ICBkaXNwYXRjaCg1KQorCisKK19sbGludF9vcF9wdXRfc2NvcGVkX3ZhcjoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgZ2V0RGVCcnVpam5TY29wZSgxNltQQiwgUEMsIDhdLCBtYWNybyAoc2Nv
cGUsIHNjcmF0Y2gpIGVuZCkKKyAgICBsb2FkaXMgMjRbUEIsIFBDLCA4XSwgdDEKKyAgICBsb2Fk
Q29uc3RhbnRPclZhcmlhYmxlKHQxLCB0MykKKyAgICBsb2FkaXMgOFtQQiwgUEMsIDhdLCB0MQor
ICAgIHdyaXRlQmFycmllcih0MykKKyAgICBsb2FkcCBKU1ZhcmlhYmxlT2JqZWN0OjptX3JlZ2lz
dGVyc1t0MF0sIHQwCisgICAgc3RvcmVwIHQzLCBbdDAsIHQxLCA4XQorICAgIGRpc3BhdGNoKDQp
CiAKIG1hY3JvIG5hdGl2ZUNhbGxUcmFtcG9saW5lKGV4ZWN1dGFibGVPZmZzZXRUb0Z1bmN0aW9u
KQogICAgIHN0b3JlcCAwLCBDb2RlQmxvY2tbY2ZyXQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvZGVDYWNoZS5jcHAKaW5kZXggYTRiNjE5M2RjN2IxZDNkNDgzODhlMDM0YjcyOWQz
YzE3MDIzZTMyYS4uZmVjNjkwNTQ1YTVlMjMzOGNiN2I2NGI5MzVjOWE4ZmZiZmNkMDRiYiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCkBAIC02Niw3ICs2
Niw3IEBAIHRlbXBsYXRlIDw+IHN0cnVjdCBDYWNoZVR5cGVzPFVubGlua2VkRXZhbENvZGVCbG9j
az4gewogfTsKIAogdGVtcGxhdGUgPGNsYXNzIFVubGlua2VkQ29kZUJsb2NrVHlwZSwgY2xhc3Mg
RXhlY3V0YWJsZVR5cGU+Ci1VbmxpbmtlZENvZGVCbG9ja1R5cGUqIENvZGVDYWNoZTo6Z2V0Q29k
ZUJsb2NrKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgRXhlY3V0YWJsZVR5cGUqIGV4ZWN1dGFi
bGUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNQYXJzZXJTdHJpY3RuZXNzIHN0cmljdG5l
c3MsIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxlck1vZGUs
IFBhcnNlckVycm9yJiBlcnJvcikKK1VubGlua2VkQ29kZUJsb2NrVHlwZSogQ29kZUNhY2hlOjpn
ZXRDb2RlQmxvY2soSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1Njb3BlKiBzY29wZSwgRXhl
Y3V0YWJsZVR5cGUqIGV4ZWN1dGFibGUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNQYXJz
ZXJTdHJpY3RuZXNzIHN0cmljdG5lc3MsIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2Zp
bGVyTW9kZSBwcm9maWxlck1vZGUsIFBhcnNlckVycm9yJiBlcnJvcikKIHsKICAgICBTb3VyY2VD
b2RlS2V5IGtleSA9IFNvdXJjZUNvZGVLZXkoc291cmNlLCBTdHJpbmcoKSwgQ2FjaGVUeXBlczxV
bmxpbmtlZENvZGVCbG9ja1R5cGU+Ojpjb2RlVHlwZSwgc3RyaWN0bmVzcyk7CiAgICAgQ29kZUNh
Y2hlTWFwOjpBZGRSZXN1bHQgYWRkUmVzdWx0ID0gbV9zb3VyY2VDb2RlLmFkZChrZXksIFNvdXJj
ZUNvZGVWYWx1ZSgpKTsKQEAgLTg4LDcgKzg4LDcgQEAgVW5saW5rZWRDb2RlQmxvY2tUeXBlKiBD
b2RlQ2FjaGU6OmdldENvZGVCbG9jayhKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEV4ZWN1dGEK
IAogICAgIFVubGlua2VkQ29kZUJsb2NrVHlwZSogdW5saW5rZWRDb2RlID0gVW5saW5rZWRDb2Rl
QmxvY2tUeXBlOjpjcmVhdGUoJmdsb2JhbERhdGEsIGV4ZWN1dGFibGUtPmV4ZWN1dGFibGVJbmZv
KCkpOwogICAgIHVubGlua2VkQ29kZS0+cmVjb3JkUGFyc2Uocm9vdE5vZGUtPmZlYXR1cmVzKCks
IHJvb3ROb2RlLT5oYXNDYXB0dXJlZFZhcmlhYmxlcygpLCByb290Tm9kZS0+bGluZU5vKCkgLSBz
b3VyY2UuZmlyc3RMaW5lKCksIHJvb3ROb2RlLT5sYXN0TGluZSgpIC0gcm9vdE5vZGUtPmxpbmVO
bygpKTsKLSAgICBPd25QdHI8Qnl0ZWNvZGVHZW5lcmF0b3I+IGdlbmVyYXRvcihhZG9wdFB0cihu
ZXcgQnl0ZWNvZGVHZW5lcmF0b3IoZ2xvYmFsRGF0YSwgcm9vdE5vZGUuZ2V0KCksIHVubGlua2Vk
Q29kZSwgZGVidWdnZXJNb2RlLCBwcm9maWxlck1vZGUpKSk7CisgICAgT3duUHRyPEJ5dGVjb2Rl
R2VuZXJhdG9yPiBnZW5lcmF0b3IoYWRvcHRQdHIobmV3IEJ5dGVjb2RlR2VuZXJhdG9yKGdsb2Jh
bERhdGEsIHNjb3BlLCByb290Tm9kZS5nZXQoKSwgdW5saW5rZWRDb2RlLCBkZWJ1Z2dlck1vZGUs
IHByb2ZpbGVyTW9kZSkpKTsKICAgICBlcnJvciA9IGdlbmVyYXRvci0+Z2VuZXJhdGUoKTsKICAg
ICByb290Tm9kZS0+ZGVzdHJveURhdGEoKTsKICAgICBpZiAoZXJyb3IubV90eXBlICE9IFBhcnNl
ckVycm9yOjpFcnJvck5vbmUpIHsKQEAgLTEwNywxMiArMTA3LDEyIEBAIFVubGlua2VkQ29kZUJs
b2NrVHlwZSogQ29kZUNhY2hlOjpnZXRDb2RlQmxvY2soSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBFeGVjdXRhCiAKIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jayogQ29kZUNhY2hlOjpnZXRQcm9n
cmFtQ29kZUJsb2NrKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvZ3JhbUV4ZWN1dGFibGUq
IGV4ZWN1dGFibGUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNQYXJzZXJTdHJpY3RuZXNz
IHN0cmljdG5lc3MsIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9m
aWxlck1vZGUsIFBhcnNlckVycm9yJiBlcnJvcikKIHsKLSAgICByZXR1cm4gZ2V0Q29kZUJsb2Nr
PFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jaz4oZ2xvYmFsRGF0YSwgZXhlY3V0YWJsZSwgc291cmNl
LCBzdHJpY3RuZXNzLCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSwgZXJyb3IpOworICAgIHJl
dHVybiBnZXRDb2RlQmxvY2s8VW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrPihnbG9iYWxEYXRhLCAw
LCBleGVjdXRhYmxlLCBzb3VyY2UsIHN0cmljdG5lc3MsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJN
b2RlLCBlcnJvcik7CiB9CiAKLVVubGlua2VkRXZhbENvZGVCbG9jayogQ29kZUNhY2hlOjpnZXRF
dmFsQ29kZUJsb2NrKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgRXZhbEV4ZWN1dGFibGUqIGV4
ZWN1dGFibGUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNQYXJzZXJTdHJpY3RuZXNzIHN0
cmljdG5lc3MsIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxl
ck1vZGUsIFBhcnNlckVycm9yJiBlcnJvcikKK1VubGlua2VkRXZhbENvZGVCbG9jayogQ29kZUNh
Y2hlOjpnZXRFdmFsQ29kZUJsb2NrKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNTY29wZSog
c2NvcGUsIEV2YWxFeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3Vy
Y2UsIEpTUGFyc2VyU3RyaWN0bmVzcyBzdHJpY3RuZXNzLCBEZWJ1Z2dlck1vZGUgZGVidWdnZXJN
b2RlLCBQcm9maWxlck1vZGUgcHJvZmlsZXJNb2RlLCBQYXJzZXJFcnJvciYgZXJyb3IpCiB7Ci0g
ICAgcmV0dXJuIGdldENvZGVCbG9jazxVbmxpbmtlZEV2YWxDb2RlQmxvY2s+KGdsb2JhbERhdGEs
IGV4ZWN1dGFibGUsIHNvdXJjZSwgc3RyaWN0bmVzcywgZGVidWdnZXJNb2RlLCBwcm9maWxlck1v
ZGUsIGVycm9yKTsKKyAgICByZXR1cm4gZ2V0Q29kZUJsb2NrPFVubGlua2VkRXZhbENvZGVCbG9j
az4oZ2xvYmFsRGF0YSwgc2NvcGUsIGV4ZWN1dGFibGUsIHNvdXJjZSwgc3RyaWN0bmVzcywgZGVi
dWdnZXJNb2RlLCBwcm9maWxlck1vZGUsIGVycm9yKTsKIH0KIAogVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUqIENvZGVDYWNoZTo6Z2V0RnVuY3Rpb25FeGVjdXRhYmxlRnJvbUdsb2JhbENvZGUo
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBjb25zdCBT
b3VyY2VDb2RlJiBzb3VyY2UsIFBhcnNlckVycm9yJiBlcnJvcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29kZUNhY2hlLmgKaW5kZXggOWFhZWJhMzhjZjBmYWU5MTQzMjZjMTE5NGY4
NGU5Zjc1ZDE5MzQ4NS4uNTYwNTUyZWZjNTdhN2E5MTBmMGU3OGQzMzY4MjFmYzM2MThkMWQ0MSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmgKQEAgLTQyLDYgKzQy
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBFdmFsRXhlY3V0YWJsZTsKIGNsYXNzIEZ1bmN0
aW9uQm9keU5vZGU7CiBjbGFzcyBJZGVudGlmaWVyOworY2xhc3MgSlNTY29wZTsKIGNsYXNzIFBy
b2dyYW1FeGVjdXRhYmxlOwogY2xhc3MgVW5saW5rZWRDb2RlQmxvY2s7CiBjbGFzcyBVbmxpbmtl
ZEV2YWxDb2RlQmxvY2s7CkBAIC0yMjAsNyArMjIxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBQ
YXNzT3duUHRyPENvZGVDYWNoZT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRQdHIobmV3IENvZGVD
YWNoZSk7IH0KIAogICAgIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jayogZ2V0UHJvZ3JhbUNvZGVC
bG9jayhKU0dsb2JhbERhdGEmLCBQcm9ncmFtRXhlY3V0YWJsZSosIGNvbnN0IFNvdXJjZUNvZGUm
LCBKU1BhcnNlclN0cmljdG5lc3MsIERlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlLCBQYXJzZXJF
cnJvciYpOwotICAgIFVubGlua2VkRXZhbENvZGVCbG9jayogZ2V0RXZhbENvZGVCbG9jayhKU0ds
b2JhbERhdGEmLCBFdmFsRXhlY3V0YWJsZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU1BhcnNlclN0
cmljdG5lc3MsIERlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlLCBQYXJzZXJFcnJvciYpOworICAg
IFVubGlua2VkRXZhbENvZGVCbG9jayogZ2V0RXZhbENvZGVCbG9jayhKU0dsb2JhbERhdGEmLCBK
U1Njb3BlKiwgRXZhbEV4ZWN1dGFibGUqLCBjb25zdCBTb3VyY2VDb2RlJiwgSlNQYXJzZXJTdHJp
Y3RuZXNzLCBEZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSwgUGFyc2VyRXJyb3ImKTsKICAgICBV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZ2V0RnVuY3Rpb25FeGVjdXRhYmxlRnJvbUdsb2Jh
bENvZGUoSlNHbG9iYWxEYXRhJiwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFNvdXJjZUNvZGUm
LCBQYXJzZXJFcnJvciYpOwogICAgIH5Db2RlQ2FjaGUoKTsKIApAQCAtMjMzLDcgKzIzNCw3IEBA
IHByaXZhdGU6CiAgICAgQ29kZUNhY2hlKCk7CiAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVW5saW5r
ZWRDb2RlQmxvY2tUeXBlLCBjbGFzcyBFeGVjdXRhYmxlVHlwZT4gCi0gICAgVW5saW5rZWRDb2Rl
QmxvY2tUeXBlKiBnZXRDb2RlQmxvY2soSlNHbG9iYWxEYXRhJiwgRXhlY3V0YWJsZVR5cGUqLCBj
b25zdCBTb3VyY2VDb2RlJiwgSlNQYXJzZXJTdHJpY3RuZXNzLCBEZWJ1Z2dlck1vZGUsIFByb2Zp
bGVyTW9kZSwgUGFyc2VyRXJyb3ImKTsKKyAgICBVbmxpbmtlZENvZGVCbG9ja1R5cGUqIGdldENv
ZGVCbG9jayhKU0dsb2JhbERhdGEmLCBKU1Njb3BlKiwgRXhlY3V0YWJsZVR5cGUqLCBjb25zdCBT
b3VyY2VDb2RlJiwgSlNQYXJzZXJTdHJpY3RuZXNzLCBEZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9k
ZSwgUGFyc2VyRXJyb3ImKTsKIAogICAgIENvZGVDYWNoZU1hcCBtX3NvdXJjZUNvZGU7CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAppbmRleCBmMjZj
M2E2MGMyMWNkNTBlM2UzYjVkMWM4YjY5ZWI1MTY4YWYwMDAxLi44YjU4YjYyYWEzZTM5YTM0N2Zh
ZTkyOTYxYWY2OTQ4NGRlNzk1YTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FeGVjdXRhYmxlLmNwcApAQCAtMjExLDcgKzIxMSw3IEBAIEpTT2JqZWN0KiBFdmFsRXhlY3V0
YWJsZTo6Y29tcGlsZUludGVybmFsKEV4ZWNTdGF0ZSogZXhlYywgSlNTY29wZSogc2NvcGUsIEpJ
VENvCiAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBjcmVhdGVFdmFsRXJyb3Io
ZXhlYywgbGV4aWNhbEdsb2JhbE9iamVjdC0+ZXZhbERpc2FibGVkRXJyb3JNZXNzYWdlKCkpKTsK
IAogICAgICAgICBKU09iamVjdCogZXhjZXB0aW9uID0gMDsKLSAgICAgICAgVW5saW5rZWRFdmFs
Q29kZUJsb2NrKiB1bmxpbmtlZEV2YWxDb2RlID0gbGV4aWNhbEdsb2JhbE9iamVjdC0+Y3JlYXRl
RXZhbENvZGVCbG9jayhleGVjLCB0aGlzLCAmZXhjZXB0aW9uKTsKKyAgICAgICAgVW5saW5rZWRF
dmFsQ29kZUJsb2NrKiB1bmxpbmtlZEV2YWxDb2RlID0gbGV4aWNhbEdsb2JhbE9iamVjdC0+Y3Jl
YXRlRXZhbENvZGVCbG9jayhleGVjLCBzY29wZSwgdGhpcywgJmV4Y2VwdGlvbik7CiAgICAgICAg
IGlmICghdW5saW5rZWRFdmFsQ29kZSkKICAgICAgICAgICAgIHJldHVybiBleGNlcHRpb247CiAK
QEAgLTQ5OCw3ICs0OTgsNyBAQCBQYXNzT3duUHRyPEZ1bmN0aW9uQ29kZUJsb2NrPiBGdW5jdGlv
bkV4ZWN1dGFibGU6OnByb2R1Y2VDb2RlQmxvY2tGb3IoSlNTY29wZSogcwogICAgIFBhcnNlckVy
cm9yIGVycm9yOwogICAgIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUgPSBnbG9iYWxPYmplY3Qt
Pmhhc0RlYnVnZ2VyKCkgPyBEZWJ1Z2dlck9uIDogRGVidWdnZXJPZmY7CiAgICAgUHJvZmlsZXJN
b2RlIHByb2ZpbGVyTW9kZSA9IGdsb2JhbE9iamVjdC0+aGFzUHJvZmlsZXIoKSA/IFByb2ZpbGVy
T24gOiBQcm9maWxlck9mZjsKLSAgICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiB1bmxpbmtl
ZENvZGVCbG9jayA9IG1fdW5saW5rZWRFeGVjdXRhYmxlLT5jb2RlQmxvY2tGb3IoKmdsb2JhbERh
dGEsIG1fc291cmNlLCBzcGVjaWFsaXphdGlvbktpbmQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJN
b2RlLCBlcnJvcik7CisgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogdW5saW5rZWRDb2Rl
QmxvY2sgPSBtX3VubGlua2VkRXhlY3V0YWJsZS0+Y29kZUJsb2NrRm9yKCpnbG9iYWxEYXRhLCBz
Y29wZSwgbV9zb3VyY2UsIHNwZWNpYWxpemF0aW9uS2luZCwgZGVidWdnZXJNb2RlLCBwcm9maWxl
ck1vZGUsIGVycm9yKTsKICAgICByZWNvcmRQYXJzZShtX3VubGlua2VkRXhlY3V0YWJsZS0+ZmVh
dHVyZXMoKSwgbV91bmxpbmtlZEV4ZWN1dGFibGUtPmhhc0NhcHR1cmVkVmFyaWFibGVzKCksIGxp
bmVObygpLCBsYXN0TGluZSgpKTsKIAogICAgIGlmICghdW5saW5rZWRDb2RlQmxvY2spIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRl
eCBmODFhOWY1NDRhZjlkNzJjZWExODg2ZDFmZDI4OWIwOTYwYTY3YzJmLi5jMGUxNTRlY2MzZmZh
Yjg4NjNlNjUzZmIzZWQ1MWQxNGM2ZGM1YmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC02MTQsMTMgKzYxNCwxMyBAQCBVbmxp
bmtlZFByb2dyYW1Db2RlQmxvY2sqIEpTR2xvYmFsT2JqZWN0OjpjcmVhdGVQcm9ncmFtQ29kZUJs
b2NrKENhbGxGcmFtZSogY2FsbAogICAgIHJldHVybiB1bmxpbmtlZENvZGU7CiB9CiAKLVVubGlu
a2VkRXZhbENvZGVCbG9jayogSlNHbG9iYWxPYmplY3Q6OmNyZWF0ZUV2YWxDb2RlQmxvY2soQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUsIEV2YWxFeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU09iamVjdCoq
IGV4Y2VwdGlvbikKK1VubGlua2VkRXZhbENvZGVCbG9jayogSlNHbG9iYWxPYmplY3Q6OmNyZWF0
ZUV2YWxDb2RlQmxvY2soQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTU2NvcGUqIHNjb3BlLCBFdmFs
RXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNPYmplY3QqKiBleGNlcHRpb24pCiB7CiAgICAgUGFy
c2VyRXJyb3IgZXJyb3I7CiAgICAgSlNQYXJzZXJTdHJpY3RuZXNzIHN0cmljdG5lc3MgPSBleGVj
dXRhYmxlLT5pc1N0cmljdE1vZGUoKSA/IEpTUGFyc2VTdHJpY3QgOiBKU1BhcnNlTm9ybWFsOwog
ICAgIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUgPSBoYXNEZWJ1Z2dlcigpID8gRGVidWdnZXJP
biA6IERlYnVnZ2VyT2ZmOwogICAgIFByb2ZpbGVyTW9kZSBwcm9maWxlck1vZGUgPSBoYXNQcm9m
aWxlcigpID8gUHJvZmlsZXJPbiA6IFByb2ZpbGVyT2ZmOwotICAgIFVubGlua2VkRXZhbENvZGVC
bG9jayogdW5saW5rZWRDb2RlID0gZ2xvYmFsRGF0YSgpLmNvZGVDYWNoZSgpLT5nZXRFdmFsQ29k
ZUJsb2NrKGdsb2JhbERhdGEoKSwgZXhlY3V0YWJsZSwgZXhlY3V0YWJsZS0+c291cmNlKCksIHN0
cmljdG5lc3MsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBlcnJvcik7CisgICAgVW5saW5r
ZWRFdmFsQ29kZUJsb2NrKiB1bmxpbmtlZENvZGUgPSBnbG9iYWxEYXRhKCkuY29kZUNhY2hlKCkt
PmdldEV2YWxDb2RlQmxvY2soZ2xvYmFsRGF0YSgpLCBzY29wZSwgZXhlY3V0YWJsZSwgZXhlY3V0
YWJsZS0+c291cmNlKCksIHN0cmljdG5lc3MsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBl
cnJvcik7CiAKICAgICBpZiAoaGFzRGVidWdnZXIoKSkKICAgICAgICAgZGVidWdnZXIoKS0+c291
cmNlUGFyc2VkKGNhbGxGcmFtZSwgZXhlY3V0YWJsZS0+c291cmNlKCkucHJvdmlkZXIoKSwgZXJy
b3IubV9saW5lLCBlcnJvci5tX21lc3NhZ2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggMjA0YjZjZGEyMjJjMWM2Mzc2NmRmM2I4Y2Fk
MmY3ZDBjODlkNjA2ZC4uZTUyNTBhMzlkYzIzZGU0MDJkOTJhYmFmYzE3NTRhYzQzN2NkOTQ5NCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBA
IC0zOTAsNyArMzkwLDcgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIHdlYWtSYW5kb21JbnRlZ2Vy
KCkgeyByZXR1cm4gbV93ZWFrUmFuZG9tLmdldFVpbnQzMigpOyB9CiAKICAgICBVbmxpbmtlZFBy
b2dyYW1Db2RlQmxvY2sqIGNyZWF0ZVByb2dyYW1Db2RlQmxvY2soQ2FsbEZyYW1lKiwgUHJvZ3Jh
bUV4ZWN1dGFibGUqLCBKU09iamVjdCoqIGV4Y2VwdGlvbik7Ci0gICAgVW5saW5rZWRFdmFsQ29k
ZUJsb2NrKiBjcmVhdGVFdmFsQ29kZUJsb2NrKENhbGxGcmFtZSosIEV2YWxFeGVjdXRhYmxlKiwg
SlNPYmplY3QqKiBleGNlcHRpb24pOworICAgIFVubGlua2VkRXZhbENvZGVCbG9jayogY3JlYXRl
RXZhbENvZGVCbG9jayhDYWxsRnJhbWUqLCBKU1Njb3BlKiwgRXZhbEV4ZWN1dGFibGUqLCBKU09i
amVjdCoqIGV4Y2VwdGlvbik7CiAKIHByb3RlY3RlZDoKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191809</attachid>
            <date>2013-03-06 12:18:33 -0800</date>
            <delta_ts>2013-03-06 15:49:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111497-20130306121438.patch</filename>
            <type>text/plain</type>
            <size>64607</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0OTUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
ZDcwMTBhZmMyMGFkMjdhYWYxYWE5YTExNWM5ODk5NDU1YjI1NGI1Li41NWMyNDFiZTM3NDc1MGM0
ODA1ZjdjNDcxYjQxMTg5Yzg0MDM1N2VkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDQgQEAKKzIwMTMtMDMtMDUgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4K
KworICAgICAgICBCcmluZyBiYWNrIGVhZ2VyIHJlc29sdXRpb24gb2YgZnVuY3Rpb24gc2NvcGVk
IHZhcmlhYmxlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTExNDk3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhpcyByZXZlcnRzIHRoZSBnZXQvcHV0X3Njb3BlZF92YXIgcGFydCBvZiB0aGUgZ3JlYXQg
bm9uLWxvY2FsCisgICAgICAgIHZhcmlhYmxlIHJlc29sdXRpb24gcmVmYWN0b3JpbmcuICBUaGlz
IHN0aWxsIGxlYXZlcyBhbGwgdGhlIGxhenkKKyAgICAgICAgdmFyaWFibGUgcmVzb2x1dGlvbiBs
b2dpYyBhcyBpdCdzIG5lY2Vzc2FyeSBmb3IgZ2xvYmFsIHByb3BlcnR5CisgICAgICAgIHJlc29s
dXRpb24sIGFuZCBpIGRvbid0IHdhbnQgdG8gbWFrZSB0aGUgcGF0Y2ggYmlnZ2VyIHRoYW4gaXQK
KyAgICAgICAgYWxyZWFkeSBpcy4KKworICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6
CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6
Q29kZUJsb2NrOjpDb2RlQmxvY2spOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgor
ICAgICAgICAoQ29kZUJsb2NrKToKKyAgICAgICAgKiBieXRlY29kZS9PcGNvZGUuaDoKKyAgICAg
ICAgKEpTQyk6CisgICAgICAgIChKU0M6OnBhZE9wY29kZU5hbWUpOgorICAgICAgICAqIGJ5dGVj
b2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Z2VuZXJhdGVGdW5jdGlv
bkNvZGVCbG9jayk6CisgICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpj
b2RlQmxvY2tGb3IpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRD
b2RlQmxvY2spOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmg6CisgICAg
ICAgIChKU0MpOgorICAgICAgICAoVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUpOgorICAgICAg
ICAoVW5saW5rZWRDb2RlQmxvY2spOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6
dXNlc0dsb2JhbE9iamVjdCk6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpzZXRH
bG9iYWxPYmplY3RSZWdpc3Rlcik6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpn
bG9iYWxPYmplY3RSZWdpc3Rlcik6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6UmVzb2x2ZVJlc3VsdDo6Y2hlY2tWYWxpZGl0eSk6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TG9hZEdsb2JhbE9iamVjdCk6Cisg
ICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6cmVzb2x2ZSk6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpyZXNvbHZlQ29uc3REZWNsKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbHZlKToKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbHZlQmFzZSk6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2x2ZUJhc2VGb3JQdXQpOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc29sdmVXaXRoQmFzZUZvclB1dCk6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2x2ZVdpdGhUaGlzKToKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRTdGF0aWNWYXIpOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dFN0YXRpY1Zhcik6CisgICAgICAgICogYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OlJlc29sdmVSZXN1bHQ6Omxl
eGljYWxSZXNvbHZlKToKKyAgICAgICAgKEpTQzo6UmVzb2x2ZVJlc3VsdDo6aXNTdGF0aWMpOgor
ICAgICAgICAoSlNDOjpSZXNvbHZlUmVzdWx0OjpkZXB0aCk6CisgICAgICAgIChKU0M6OlJlc29s
dmVSZXN1bHQ6OmluZGV4KToKKyAgICAgICAgKFJlc29sdmVSZXN1bHQpOgorICAgICAgICAoSlND
OjpSZXNvbHZlUmVzdWx0OjpSZXNvbHZlUmVzdWx0KToKKyAgICAgICAgKEJ5dGVjb2RlR2VuZXJh
dG9yKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAg
KEpTQzo6UmVzb2x2ZU5vZGU6OmlzUHVyZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQ2FsbFJl
c29sdmVOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpQb3N0Zml4Tm9kZTo6ZW1p
dFJlc29sdmUpOgorICAgICAgICAoSlNDOjpUeXBlT2ZSZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjb2Rl
KToKKyAgICAgICAgKEpTQzo6UHJlZml4Tm9kZTo6ZW1pdFJlc29sdmUpOgorICAgICAgICAoSlND
OjpSZWFkTW9kaWZ5UmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkFz
c2lnblJlc29sdmVOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpDb25zdERlY2xO
b2RlOjplbWl0Q29kZVNpbmdsZSk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAg
ICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6ZGVidWdG
YWlsKToKKyAgICAgICAgKiBkZmcvREZHQ2FwYWJpbGl0aWVzLmg6CisgICAgICAgIChKU0M6OkRG
Rzo6Y2FuQ29tcGlsZU9wY29kZSk6CisgICAgICAgIChKU0M6OkRGRzo6Y2FuSW5saW5lT3Bjb2Rl
KToKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29t
cGlsZU1haW5QYXNzKToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAgIChKSVQpOgorICAg
ICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dF9vcF9nZXRfc2NvcGVkX3Zhcik6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3BfcHV0X3Njb3BlZF92YXIpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vz
czMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9zY29wZWRfdmFyKToK
KyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfc2NvcGVkX3Zh
cik6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAgICAg
ICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAqIHJ1bnRpbWUv
Q29kZUNhY2hlLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUNhY2hlOjpnZXRDb2RlQmxvY2spOgor
ICAgICAgICAoSlNDOjpDb2RlQ2FjaGU6OmdldFByb2dyYW1Db2RlQmxvY2spOgorICAgICAgICAo
SlNDOjpDb2RlQ2FjaGU6OmdldEV2YWxDb2RlQmxvY2spOgorICAgICAgICAqIHJ1bnRpbWUvQ29k
ZUNhY2hlLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoQ29kZUNhY2hlKToKKyAgICAgICAg
KiBydW50aW1lL0V4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpFdmFsRXhlY3V0YWJsZTo6
Y29tcGlsZUludGVybmFsKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpwcm9k
dWNlQ29kZUJsb2NrRm9yKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoK
KyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmNyZWF0ZUV2YWxDb2RlQmxvY2spOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTR2xvYmFsT2JqZWN0
KToKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpPcHRpb25z
Ojppbml0aWFsaXplKToKKwogMjAxMy0wMy0wNiAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0BhcHBs
ZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgZml4IFdpbmRvd3MgYnVpbGQgYWZ0ZXIgcjE0
NDkxMC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5k
ZXggOTc0YTA0YmExZjRjZTNhMWMyZjY2NjJmOTg0M2RlMWQ2Y2JlZmRjYy4uOWYxYWZjMTIyMTk3
ZWQ1ZWM0ZWNjZTZjY2Y1M2U5YjY0ZjAwMWZlMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTk4MCw2ICs5ODAsMjEgQEAgdm9pZCBDb2RlQmxv
Y2s6OmR1bXBCeXRlY29kZShQcmludFN0cmVhbSYgb3V0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IEluc3RydWN0aW8KICAgICAgICAgICAgIGR1bXBWYWx1ZVByb2ZpbGluZyhvdXQsIGl0LCBoYXNQ
cmludGVkUHJvZmlsaW5nKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAgICAg
IGNhc2Ugb3BfZ2V0X3Njb3BlZF92YXI6IHsKKyAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+
dS5vcGVyYW5kOworICAgICAgICAgICAgaW50IGluZGV4ID0gKCsraXQpLT51Lm9wZXJhbmQ7Cisg
ICAgICAgICAgICBpbnQgc2tpcExldmVscyA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAg
ICAgb3V0LnByaW50ZigiWyU0ZF0gZ2V0X3Njb3BlZF92YXJcdCAlcywgJWQsICVkIiwgbG9jYXRp
b24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCBpbmRleCwgc2tpcExldmVscyk7Cisg
ICAgICAgICAgICBkdW1wVmFsdWVQcm9maWxpbmcob3V0LCBpdCwgaGFzUHJpbnRlZFByb2ZpbGlu
Zyk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIG9wX3B1dF9z
Y29wZWRfdmFyOiB7CisgICAgICAgICAgICBpbnQgaW5kZXggPSAoKytpdCktPnUub3BlcmFuZDsK
KyAgICAgICAgICAgIGludCBza2lwTGV2ZWxzID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAg
ICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIG91dC5wcmludGYo
IlslNGRdIHB1dF9zY29wZWRfdmFyXHQgJWQsICVkLCAlcyIsIGxvY2F0aW9uLCBpbmRleCwgc2tp
cExldmVscywgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9pbml0X2dsb2JhbF9jb25zdF9ub3A6IHsK
ICAgICAgICAgICAgIG91dC5wcmludGYoIlslNGRdIGluaXRfZ2xvYmFsX2NvbnN0X25vcFx0Iiwg
bG9jYXRpb24pOwogICAgICAgICAgICAgaXQrKzsKQEAgLTE2NDQsOCArMTY1OSwxMCBAQCBDb2Rl
QmxvY2s6OkNvZGVCbG9jayhDb3B5UGFyc2VkQmxvY2tUYWcsIENvZGVCbG9jayYgb3RoZXIpCiAg
ICAgLCBtX2FyZ3VtZW50c1JlZ2lzdGVyKG90aGVyLm1fYXJndW1lbnRzUmVnaXN0ZXIpCiAgICAg
LCBtX2FjdGl2YXRpb25SZWdpc3RlcihvdGhlci5tX2FjdGl2YXRpb25SZWdpc3RlcikKICAgICAs
IG1faXNTdHJpY3RNb2RlKG90aGVyLm1faXNTdHJpY3RNb2RlKQorICAgICwgbV9uZWVkc0Z1bGxT
Y29wZUNoYWluKG90aGVyLm1fbmVlZHNGdWxsU2NvcGVDaGFpbikKICAgICAsIG1fc291cmNlKG90
aGVyLm1fc291cmNlKQogICAgICwgbV9zb3VyY2VPZmZzZXQob3RoZXIubV9zb3VyY2VPZmZzZXQp
CisgICAgLCBtX2NvZGVUeXBlKG90aGVyLm1fY29kZVR5cGUpCiAgICAgLCBtX2lkZW50aWZpZXJz
KG90aGVyLm1faWRlbnRpZmllcnMpCiAgICAgLCBtX2NvbnN0YW50UmVnaXN0ZXJzKG90aGVyLm1f
Y29uc3RhbnRSZWdpc3RlcnMpCiAgICAgLCBtX2Z1bmN0aW9uRGVjbHMob3RoZXIubV9mdW5jdGlv
bkRlY2xzKQpAQCAtMTY4Nyw4ICsxNzA0LDEwIEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKFNjcmlw
dEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rZWRDb2RlQmxvY2sqIHVubGluCiAg
ICAgLCBtX2FyZ3VtZW50c1JlZ2lzdGVyKHVubGlua2VkQ29kZUJsb2NrLT5hcmd1bWVudHNSZWdp
c3RlcigpKQogICAgICwgbV9hY3RpdmF0aW9uUmVnaXN0ZXIodW5saW5rZWRDb2RlQmxvY2stPmFj
dGl2YXRpb25SZWdpc3RlcigpKQogICAgICwgbV9pc1N0cmljdE1vZGUodW5saW5rZWRDb2RlQmxv
Y2stPmlzU3RyaWN0TW9kZSgpKQorICAgICwgbV9uZWVkc0Z1bGxTY29wZUNoYWluKHVubGlua2Vk
Q29kZUJsb2NrLT5uZWVkc0Z1bGxTY29wZUNoYWluKCkpCiAgICAgLCBtX3NvdXJjZShzb3VyY2VQ
cm92aWRlcikKICAgICAsIG1fc291cmNlT2Zmc2V0KHNvdXJjZU9mZnNldCkKKyAgICAsIG1fY29k
ZVR5cGUodW5saW5rZWRDb2RlQmxvY2stPmNvZGVUeXBlKCkpCiAgICAgLCBtX2FsdGVybmF0aXZl
KGFsdGVybmF0aXZlKQogICAgICwgbV9vc3JFeGl0Q291bnRlcigwKQogICAgICwgbV9vcHRpbWl6
YXRpb25EZWxheUNvdW50ZXIoMCkKQEAgLTE3MDQsNyArMTcyMyw4IEBAIENvZGVCbG9jazo6Q29k
ZUJsb2NrKFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rZWRDb2RlQmxv
Y2sqIHVubGluCiAjZW5kaWYKICAgICBzZXRJZGVudGlmaWVycyh1bmxpbmtlZENvZGVCbG9jay0+
aWRlbnRpZmllcnMoKSk7CiAgICAgc2V0Q29uc3RhbnRSZWdpc3RlcnModW5saW5rZWRDb2RlQmxv
Y2stPmNvbnN0YW50UmVnaXN0ZXJzKCkpOwotCisgICAgaWYgKHVubGlua2VkQ29kZUJsb2NrLT51
c2VzR2xvYmFsT2JqZWN0KCkpCisgICAgICAgIG1fY29uc3RhbnRSZWdpc3RlcnNbdW5saW5rZWRD
b2RlQmxvY2stPmdsb2JhbE9iamVjdFJlZ2lzdGVyKCldLnNldCgqbV9nbG9iYWxEYXRhLCBvd25l
ckV4ZWN1dGFibGUsIGdsb2JhbE9iamVjdCk7CiAgICAgbV9mdW5jdGlvbkRlY2xzLmdyb3codW5s
aW5rZWRDb2RlQmxvY2stPm51bWJlck9mRnVuY3Rpb25EZWNscygpKTsKICAgICBmb3IgKHNpemVf
dCBjb3VudCA9IHVubGlua2VkQ29kZUJsb2NrLT5udW1iZXJPZkZ1bmN0aW9uRGVjbHMoKSwgaSA9
IDA7IGkgPCBjb3VudDsgKytpKSB7CiAgICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
KiB1bmxpbmtlZEV4ZWN1dGFibGUgPSB1bmxpbmtlZENvZGVCbG9jay0+ZnVuY3Rpb25EZWNsKGkp
OwpAQCAtMTkyMCw2ICsxOTQwLDE2IEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKFNjcmlwdEV4ZWN1
dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rZWRDb2RlQmxvY2sqIHVubGluCiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogCisgICAgICAgIGNhc2Ugb3BfZ2V0X3Njb3BlZF92YXI6
IHsKKyNpZiBFTkFCTEUoREZHX0pJVCkKKyAgICAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmls
ZSA9ICZtX3ZhbHVlUHJvZmlsZXNbcGNbaSArIG9wTGVuZ3RoIC0gMV0udS5vcGVyYW5kXTsKKyAg
ICAgICAgICAgIEFTU0VSVChwcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0ID09IC0xKTsKKyAgICAg
ICAgICAgIHByb2ZpbGUtPm1fYnl0ZWNvZGVPZmZzZXQgPSBpOworICAgICAgICAgICAgaW5zdHJ1
Y3Rpb25zW2kgKyBvcExlbmd0aCAtIDFdID0gcHJvZmlsZTsKKyNlbmRpZgorICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKwogICAgICAgICBjYXNlIG9wX2NhbGw6CiAgICAgICAgIGNhc2Ug
b3BfY2FsbF9ldmFsOiB7CiAjaWYgRU5BQkxFKERGR19KSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKaW5kZXggZThlM2U3Zjg3MmIwMDQwYjA3MzQyNzJkMDQ2
NDE0NDc5NjFlMTYyYy4uNTc1ZGY3ZGViYzI4YjJlZjU2YTFkYmIzZjM1MWVlMmQwNzM2YTU4MSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaApAQCAtNTMyLDcg
KzUzMiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4g
bmVlZHNGdWxsU2NvcGVDaGFpbigpICYmIGNvZGVUeXBlKCkgIT0gR2xvYmFsQ29kZTsKICAgICAg
ICAgfQotICAgICAgICAKKwogICAgICAgICBib29sIGlzQ2FwdHVyZWQoaW50IG9wZXJhbmQsIElu
bGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lID0gMCkgY29uc3QKICAgICAgICAgewogICAg
ICAgICAgICAgaWYgKG9wZXJhbmRJc0FyZ3VtZW50KG9wZXJhbmQpKQpAQCAtMTE1NSw5ICsxMTU1
LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBpbnQgbV9hY3RpdmF0aW9uUmVnaXN0ZXI7
CiAKICAgICAgICAgYm9vbCBtX2lzU3RyaWN0TW9kZTsKKyAgICAgICAgYm9vbCBtX25lZWRzRnVs
bFNjb3BlQ2hhaW47CiAKICAgICAgICAgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiBtX3NvdXJjZTsK
ICAgICAgICAgdW5zaWduZWQgbV9zb3VyY2VPZmZzZXQ7CisgICAgICAgIHVuc2lnbmVkIG1fY29k
ZVR5cGU7CiAKICNpZiBFTkFCTEUoTExJTlQpCiAgICAgICAgIFNlZ21lbnRlZFZlY3RvcjxMTElu
dENhbGxMaW5rSW5mbywgOD4gbV9sbGludENhbGxMaW5rSW5mb3M7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvT3Bjb2RlLmgKaW5kZXggYzkxN2UwN2JlMDc4MzIzMTJlOWQyMDk4OWU5YjYw
Y2FjNTJjYWUzNC4uNTQ0MTRjMzVmOGQyMzUwMmY5ZDcxYjg0MDNmNDUyMmMwM2IzZDgxMiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaApAQCAtOTcsNiArOTcsOSBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICBtYWNybyhvcF9pc19mdW5jdGlvbiwgMykgXAogICAgIG1hY3Jv
KG9wX2luLCA0KSBcCiAgICAgXAorICAgIG1hY3JvKG9wX2dldF9zY29wZWRfdmFyLCA1KSAvKiBo
YXMgdmFsdWUgcHJvZmlsaW5nICovIFwKKyAgICBtYWNybyhvcF9wdXRfc2NvcGVkX3ZhciwgNCkg
XAorICAgIFwKICAgICBtYWNybyhvcF9yZXNvbHZlLCA1KSAvKiBoYXMgdmFsdWUgcHJvZmlsaW5n
ICovICBcCiAgICAgbWFjcm8ob3BfcmVzb2x2ZV9nbG9iYWxfcHJvcGVydHksIDUpIC8qIGhhcyB2
YWx1ZSBwcm9maWxpbmcgKi8gIFwKICAgICBtYWNybyhvcF9yZXNvbHZlX2dsb2JhbF92YXIsIDUp
IC8qIGhhcyB2YWx1ZSBwcm9maWxpbmcgKi8gIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCmluZGV4IGU5MWYxMzg0MzkwMmJi
ZDgzMGIwZWRjNjFhMjZlMDZlZDg4YTcyNTQuLmNkMDM2YmRhOTVhNjk2ZTJiMzIxYWZhNjQ5YzY0
NWI1OTE4YmMzYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9V
bmxpbmtlZENvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1VubGlua2VkQ29kZUJsb2NrLmNwcApAQCAtNDcsNyArNDcsNyBAQCBjb25zdCBDbGFzc0luZm8g
VW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrOjpzX2luZm8gPSB7ICJVbmxpbmtlZFByb2dyYW1Db2Rl
QmxvY2siLAogY29uc3QgQ2xhc3NJbmZvIFVubGlua2VkRXZhbENvZGVCbG9jazo6c19pbmZvID0g
eyAiVW5saW5rZWRFdmFsQ29kZUJsb2NrIiwgJkJhc2U6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01F
VEhPRF9UQUJMRShVbmxpbmtlZEV2YWxDb2RlQmxvY2spIH07CiBjb25zdCBDbGFzc0luZm8gVW5s
aW5rZWRGdW5jdGlvbkNvZGVCbG9jazo6c19pbmZvID0geyAiVW5saW5rZWRGdW5jdGlvbkNvZGVC
bG9jayIsICZCYXNlOjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoVW5saW5rZWRG
dW5jdGlvbkNvZGVCbG9jaykgfTsKIAotc3RhdGljIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sq
IGdlbmVyYXRlRnVuY3Rpb25Db2RlQmxvY2soSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgY29uc3QgU291cmNlQ29kZSYgc291
cmNlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1v
ZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxlck1vZGUsIFBhcnNlckVycm9yJiBlcnJvcikKK3N0YXRp
YyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZUZ1bmN0aW9uQ29kZUJsb2NrKEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNTY29wZSogc2NvcGUsIFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlKiBleGVjdXRhYmxlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIENvZGVTcGVj
aWFsaXphdGlvbktpbmQga2luZCwgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSwgUHJvZmlsZXJN
b2RlIHByb2ZpbGVyTW9kZSwgUGFyc2VyRXJyb3ImIGVycm9yKQogewogICAgIFJlZlB0cjxGdW5j
dGlvbkJvZHlOb2RlPiBib2R5ID0gcGFyc2U8RnVuY3Rpb25Cb2R5Tm9kZT4oJmdsb2JhbERhdGEs
IHNvdXJjZSwgZXhlY3V0YWJsZS0+cGFyYW1ldGVycygpLCBleGVjdXRhYmxlLT5uYW1lKCksIGV4
ZWN1dGFibGUtPmlzSW5TdHJpY3RDb250ZXh0KCkgPyBKU1BhcnNlU3RyaWN0IDogSlNQYXJzZU5v
cm1hbCwgSlNQYXJzZUZ1bmN0aW9uQ29kZSwgZXJyb3IpOwogCkBAIC02Miw3ICs2Miw3IEBAIHN0
YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZUZ1bmN0aW9uQ29kZUJsb2Nr
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsCiAgICAgZXhlY3V0YWJsZS0+cmVjb3JkUGFyc2UoYm9keS0+
ZmVhdHVyZXMoKSwgYm9keS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSwgYm9keS0+bGluZU5vKCks
IGJvZHktPmxhc3RMaW5lKCkpOwogICAgIAogICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sq
IHJlc3VsdCA9IFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s6OmNyZWF0ZSgmZ2xvYmFsRGF0YSwg
RnVuY3Rpb25Db2RlLCBFeGVjdXRhYmxlSW5mbyhib2R5LT5uZWVkc0FjdGl2YXRpb24oKSwgYm9k
eS0+dXNlc0V2YWwoKSwgYm9keS0+aXNTdHJpY3RNb2RlKCksIGtpbmQgPT0gQ29kZUZvckNvbnN0
cnVjdCkpOwotICAgIE93blB0cjxCeXRlY29kZUdlbmVyYXRvcj4gZ2VuZXJhdG9yKGFkb3B0UHRy
KG5ldyBCeXRlY29kZUdlbmVyYXRvcihnbG9iYWxEYXRhLCBib2R5LmdldCgpLCByZXN1bHQsIGRl
YnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlKSkpOworICAgIE93blB0cjxCeXRlY29kZUdlbmVyYXRv
cj4gZ2VuZXJhdG9yKGFkb3B0UHRyKG5ldyBCeXRlY29kZUdlbmVyYXRvcihnbG9iYWxEYXRhLCBz
Y29wZSwgYm9keS5nZXQoKSwgcmVzdWx0LCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSkpKTsK
ICAgICBlcnJvciA9IGdlbmVyYXRvci0+Z2VuZXJhdGUoKTsKICAgICBib2R5LT5kZXN0cm95RGF0
YSgpOwogICAgIGlmIChlcnJvci5tX3R5cGUgIT0gUGFyc2VyRXJyb3I6OkVycm9yTm9uZSkKQEAg
LTEzOSw3ICsxMzksNyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGU6OmZyb21HbG9iYWxDb2RlKGNvbnN0IElkZQogICAgIHJldHVybiBleGVj
dXRhYmxlOwogfQogCi1VbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZTo6Y29kZUJsb2NrRm9yKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3Qg
U291cmNlQ29kZSYgc291cmNlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIHNwZWNpYWxpemF0aW9u
S2luZCwgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9k
ZSwgUGFyc2VyRXJyb3ImIGVycm9yKQorVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNvZGVCbG9ja0ZvcihKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIEpTU2NvcGUqIHNjb3BlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIENvZGVTcGVjaWFs
aXphdGlvbktpbmQgc3BlY2lhbGl6YXRpb25LaW5kLCBEZWJ1Z2dlck1vZGUgZGVidWdnZXJNb2Rl
LCBQcm9maWxlck1vZGUgcHJvZmlsZXJNb2RlLCBQYXJzZXJFcnJvciYgZXJyb3IpCiB7CiAgICAg
c3dpdGNoIChzcGVjaWFsaXphdGlvbktpbmQpIHsKICAgICBjYXNlIENvZGVGb3JDYWxsOgpAQCAt
MTUyLDcgKzE1Miw3IEBAIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIFVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlOjpjb2RlQmxvY2tGb3IoSlNHbG9iYWxEYXRhCiAgICAgICAgIGJyZWFrOwog
ICAgIH0KIAotICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHJlc3VsdCA9IGdlbmVyYXRl
RnVuY3Rpb25Db2RlQmxvY2soZ2xvYmFsRGF0YSwgdGhpcywgc291cmNlLCBzcGVjaWFsaXphdGlv
bktpbmQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBlcnJvcik7CisgICAgVW5saW5rZWRG
dW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gZ2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jayhnbG9i
YWxEYXRhLCBzY29wZSwgdGhpcywgc291cmNlLCBzcGVjaWFsaXphdGlvbktpbmQsIGRlYnVnZ2Vy
TW9kZSwgcHJvZmlsZXJNb2RlLCBlcnJvcik7CiAgICAgCiAgICAgaWYgKGVycm9yLm1fdHlwZSAh
PSBQYXJzZXJFcnJvcjo6RXJyb3JOb25lKQogICAgICAgICByZXR1cm4gMDsKQEAgLTE4OSw2ICsx
ODksNyBAQCBVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2soSlNHbG9iYWxEYXRh
KiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdAogICAgICwgbV9udW1QYXJhbWV0ZXJzKDAp
CiAgICAgLCBtX2dsb2JhbERhdGEoZ2xvYmFsRGF0YSkKICAgICAsIG1fYXJndW1lbnRzUmVnaXN0
ZXIoLTEpCisgICAgLCBtX2dsb2JhbE9iamVjdFJlZ2lzdGVyKC0xKQogICAgICwgbV9uZWVkc0Z1
bGxTY29wZUNoYWluKGluZm8ubV9uZWVkc0FjdGl2YXRpb24pCiAgICAgLCBtX3VzZXNFdmFsKGlu
Zm8ubV91c2VzRXZhbCkKICAgICAsIG1faXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uKGZhbHNlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJs
b2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2su
aAppbmRleCA4MGU4OWQzZTc2MjFmYzBmMWEzYmRjYmE5YTIyZDU2ZTliZWVkOWFjLi44Y2IyOWY5
MzUxMDRhMjBkODA1M2FhNTBjZmRhOTdhMWNiNDFkY2E3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaApAQCAtNDksNiArNDksNyBA
QCBjbGFzcyBEZWJ1Z2dlcjsKIGNsYXNzIEZ1bmN0aW9uQm9keU5vZGU7CiBjbGFzcyBGdW5jdGlv
bkV4ZWN1dGFibGU7CiBjbGFzcyBGdW5jdGlvblBhcmFtZXRlcnM7CitjbGFzcyBKU1Njb3BlOwog
c3RydWN0IFBhcnNlckVycm9yOwogY2xhc3MgU2NyaXB0RXhlY3V0YWJsZTsKIGNsYXNzIFNvdXJj
ZUNvZGU7CkBAIC0xMDcsNyArMTA4LDcgQEAgcHVibGljOgogCiAgICAgU3RyaW5nIHBhcmFtU3Ry
aW5nKCkgY29uc3Q7CiAKLSAgICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBjb2RlQmxvY2tG
b3IoSlNHbG9iYWxEYXRhJiwgY29uc3QgU291cmNlQ29kZSYsIENvZGVTcGVjaWFsaXphdGlvbktp
bmQsIERlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlLCBQYXJzZXJFcnJvciYpOworICAgIFVubGlu
a2VkRnVuY3Rpb25Db2RlQmxvY2sqIGNvZGVCbG9ja0ZvcihKU0dsb2JhbERhdGEmLCBKU1Njb3Bl
KiwgY29uc3QgU291cmNlQ29kZSYsIENvZGVTcGVjaWFsaXphdGlvbktpbmQsIERlYnVnZ2VyTW9k
ZSwgUHJvZmlsZXJNb2RlLCBQYXJzZXJFcnJvciYpOwogCiAgICAgc3RhdGljIFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlKiBmcm9tR2xvYmFsQ29kZShjb25zdCBJZGVudGlmaWVyJiwgRXhlY1N0
YXRlKiwgRGVidWdnZXIqLCBjb25zdCBTb3VyY2VDb2RlJiwgSlNPYmplY3QqKiBleGNlcHRpb24p
OwogCkBAIC0yNjgsNiArMjY5LDExIEBAIHB1YmxpYzoKICAgICBib29sIHVzZXNBcmd1bWVudHMo
KSBjb25zdCB7IHJldHVybiBtX2FyZ3VtZW50c1JlZ2lzdGVyICE9IC0xOyB9CiAgICAgaW50IGFy
Z3VtZW50c1JlZ2lzdGVyKCkgY29uc3QgeyByZXR1cm4gbV9hcmd1bWVudHNSZWdpc3RlcjsgfQog
CisKKyAgICBib29sIHVzZXNHbG9iYWxPYmplY3QoKSBjb25zdCB7IHJldHVybiBtX2dsb2JhbE9i
amVjdFJlZ2lzdGVyICE9IC0xOyB9CisgICAgdm9pZCBzZXRHbG9iYWxPYmplY3RSZWdpc3Rlcihp
bnQgZ2xvYmFsT2JqZWN0UmVnaXN0ZXIpIHsgbV9nbG9iYWxPYmplY3RSZWdpc3RlciA9IGdsb2Jh
bE9iamVjdFJlZ2lzdGVyOyB9CisgICAgaW50IGdsb2JhbE9iamVjdFJlZ2lzdGVyKCkgY29uc3Qg
eyByZXR1cm4gbV9nbG9iYWxPYmplY3RSZWdpc3RlcjsgfQorCiAgICAgLy8gUGFyYW1ldGVyIGlu
Zm9ybWF0aW9uCiAgICAgdm9pZCBzZXROdW1QYXJhbWV0ZXJzKGludCBuZXdWYWx1ZSkgeyBtX251
bVBhcmFtZXRlcnMgPSBuZXdWYWx1ZTsgfQogICAgIHZvaWQgYWRkUGFyYW1ldGVyKCkgeyBtX251
bVBhcmFtZXRlcnMrKzsgfQpAQCAtNDkzLDYgKzQ5OSw3IEBAIHByaXZhdGU6CiAgICAgaW50IG1f
dGhpc1JlZ2lzdGVyOwogICAgIGludCBtX2FyZ3VtZW50c1JlZ2lzdGVyOwogICAgIGludCBtX2Fj
dGl2YXRpb25SZWdpc3RlcjsKKyAgICBpbnQgbV9nbG9iYWxPYmplY3RSZWdpc3RlcjsKIAogICAg
IGJvb2wgbV9uZWVkc0Z1bGxTY29wZUNoYWluIDogMTsKICAgICBib29sIG1fdXNlc0V2YWwgOiAx
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmNwcAppbmRleCBkNjUyMTc5MDQ0OTAxYmE1N2I4Y2YxZjE4ZTQ1MTM4MWQ4
NmMwYjZlLi4wZjk4YTg2NDk1YzM1OTAwM2M2MzhiNGViZDYxMzdmMDQ0MDc1MTg1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmNwcApAQCAtMTQxLDYgKzE0MSwxMCBAQCB2b2lkIFJlc29sdmVSZXN1bHQ6OmNoZWNr
VmFsaWRpdHkoKQogICAgIGNhc2UgRHluYW1pYzoKICAgICAgICAgQVNTRVJUKCFtX2xvY2FsKTsK
ICAgICAgICAgcmV0dXJuOworICAgIGNhc2UgTGV4aWNhbDoKKyAgICBjYXNlIFJlYWRPbmx5TGV4
aWNhbDoKKyAgICAgICAgQVNTRVJUKCFtX2xvY2FsKTsKKyAgICAgICAgcmV0dXJuOwogICAgIGRl
ZmF1bHQ6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQpAQCAt
MjI2LDcgKzIzMCw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OnByZXNlcnZlTGFzdFZhcigp
CiAgICAgICAgIG1fbGFzdFZhciA9ICZtX2NhbGxlZVJlZ2lzdGVycy5sYXN0KCk7CiB9CiAKLUJ5
dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIFByb2dyYW1Ob2RlKiBwcm9ncmFtTm9kZSwgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxl
ck1vZGUpCitCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhLCBKU1Njb3BlKiwgUHJvZ3JhbU5vZGUqIHByb2dyYW1Ob2RlLCBVbmxpbmtl
ZFByb2dyYW1Db2RlQmxvY2sqIGNvZGVCbG9jaywgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSwg
UHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSkKICAgICA6IG1fc2hvdWxkRW1pdERlYnVnSG9va3Mo
ZGVidWdnZXJNb2RlID09IERlYnVnZ2VyT24pCiAgICAgLCBtX3Nob3VsZEVtaXRQcm9maWxlSG9v
a3MocHJvZmlsZXJNb2RlID09IFByb2ZpbGVyT24pCiAgICAgLCBtX3N5bWJvbFRhYmxlKDApCkBA
IC0yMzQsNiArMjM4LDcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvZ3JhbU5vZGUqIHByb2cKICAgICAsIG1fY29kZUJs
b2NrKGdsb2JhbERhdGEsIGNvZGVCbG9jaykKICAgICAsIG1fdGhpc1JlZ2lzdGVyKENhbGxGcmFt
ZTo6dGhpc0FyZ3VtZW50T2Zmc2V0KCkpCiAgICAgLCBtX2VtcHR5VmFsdWVSZWdpc3RlcigwKQor
ICAgICwgbV9nbG9iYWxPYmplY3RSZWdpc3RlcigwKQogICAgICwgbV9maW5hbGx5RGVwdGgoMCkK
ICAgICAsIG1fZHluYW1pY1Njb3BlRGVwdGgoMCkKICAgICAsIG1fY29kZVR5cGUoR2xvYmFsQ29k
ZSkKQEAgLTI3MywxNCArMjc4LDE2IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVy
YXRvcihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb2dyYW1Ob2RlKiBwcm9nCiAKIH0KIAot
Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSwgRnVuY3Rpb25Cb2R5Tm9kZSogZnVuY3Rpb25Cb2R5LCBVbmxpbmtlZEZ1bmN0aW9uQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9k
ZSBwcm9maWxlck1vZGUpCitCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1Njb3BlKiBzY29wZSwgRnVuY3Rpb25Cb2R5Tm9kZSog
ZnVuY3Rpb25Cb2R5LCBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBjb2RlQmxvY2ssIERlYnVn
Z2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxlck1vZGUpCiAgICAgOiBt
X3Nob3VsZEVtaXREZWJ1Z0hvb2tzKGRlYnVnZ2VyTW9kZSA9PSBEZWJ1Z2dlck9uKQogICAgICwg
bV9zaG91bGRFbWl0UHJvZmlsZUhvb2tzKHByb2ZpbGVyTW9kZSA9PSBQcm9maWxlck9uKQogICAg
ICwgbV9zeW1ib2xUYWJsZShjb2RlQmxvY2stPnN5bWJvbFRhYmxlKCkpCiAgICAgLCBtX3Njb3Bl
Tm9kZShmdW5jdGlvbkJvZHkpCisgICAgLCBtX3Njb3BlKGdsb2JhbERhdGEsIHNjb3BlKQogICAg
ICwgbV9jb2RlQmxvY2soZ2xvYmFsRGF0YSwgY29kZUJsb2NrKQogICAgICwgbV9hY3RpdmF0aW9u
UmVnaXN0ZXIoMCkKICAgICAsIG1fZW1wdHlWYWx1ZVJlZ2lzdGVyKDApCisgICAgLCBtX2dsb2Jh
bE9iamVjdFJlZ2lzdGVyKDApCiAgICAgLCBtX2ZpbmFsbHlEZXB0aCgwKQogICAgICwgbV9keW5h
bWljU2NvcGVEZXB0aCgwKQogICAgICwgbV9jb2RlVHlwZShGdW5jdGlvbkNvZGUpCkBAIC00Njgs
MTQgKzQ3NSwxNiBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhLCBGdW5jdGlvbkJvZHlOb2RlKgogICAgIH0KIH0KIAotQnl0ZWNv
ZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
RXZhbE5vZGUqIGV2YWxOb2RlLCBVbmxpbmtlZEV2YWxDb2RlQmxvY2sqIGNvZGVCbG9jaywgRGVi
dWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSkKK0J5dGVj
b2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IEpTU2NvcGUqIHNjb3BlLCBFdmFsTm9kZSogZXZhbE5vZGUsIFVubGlua2VkRXZhbENvZGVCbG9j
ayogY29kZUJsb2NrLCBEZWJ1Z2dlck1vZGUgZGVidWdnZXJNb2RlLCBQcm9maWxlck1vZGUgcHJv
ZmlsZXJNb2RlKQogICAgIDogbV9zaG91bGRFbWl0RGVidWdIb29rcyhkZWJ1Z2dlck1vZGUgPT0g
RGVidWdnZXJPbikKICAgICAsIG1fc2hvdWxkRW1pdFByb2ZpbGVIb29rcyhwcm9maWxlck1vZGUg
PT0gUHJvZmlsZXJPbikKICAgICAsIG1fc3ltYm9sVGFibGUoY29kZUJsb2NrLT5zeW1ib2xUYWJs
ZSgpKQogICAgICwgbV9zY29wZU5vZGUoZXZhbE5vZGUpCisgICAgLCBtX3Njb3BlKGdsb2JhbERh
dGEsIHNjb3BlKQogICAgICwgbV9jb2RlQmxvY2soZ2xvYmFsRGF0YSwgY29kZUJsb2NrKQogICAg
ICwgbV90aGlzUmVnaXN0ZXIoQ2FsbEZyYW1lOjp0aGlzQXJndW1lbnRPZmZzZXQoKSkKICAgICAs
IG1fZW1wdHlWYWx1ZVJlZ2lzdGVyKDApCisgICAgLCBtX2dsb2JhbE9iamVjdFJlZ2lzdGVyKDAp
CiAgICAgLCBtX2ZpbmFsbHlEZXB0aCgwKQogICAgICwgbV9keW5hbWljU2NvcGVEZXB0aCgwKQog
ICAgICwgbV9jb2RlVHlwZShFdmFsQ29kZSkKQEAgLTEyMjcsNiArMTIzNiwyMSBAQCBSZWdpc3Rl
cklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdExvYWQoUmVnaXN0ZXJJRCogZHN0LCBKU1ZhbHVl
IHYpCiAgICAgcmV0dXJuIGNvbnN0YW50SUQ7CiB9CiAKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0TG9hZEdsb2JhbE9iamVjdChSZWdpc3RlcklEKiBkc3QpCit7CisgICAgaWYg
KCFtX2dsb2JhbE9iamVjdFJlZ2lzdGVyKSB7CisgICAgICAgIGludCBpbmRleCA9IG1fbmV4dENv
bnN0YW50T2Zmc2V0OworICAgICAgICBtX2NvbnN0YW50UG9vbFJlZ2lzdGVycy5hcHBlbmQoRmly
c3RDb25zdGFudFJlZ2lzdGVySW5kZXggKyBtX25leHRDb25zdGFudE9mZnNldCk7CisgICAgICAg
ICsrbV9uZXh0Q29uc3RhbnRPZmZzZXQ7CisgICAgICAgIG1fY29kZUJsb2NrLT5hZGRDb25zdGFu
dChKU1ZhbHVlKCkpOworICAgICAgICBtX2dsb2JhbE9iamVjdFJlZ2lzdGVyID0gJm1fY29uc3Rh
bnRQb29sUmVnaXN0ZXJzW2luZGV4XTsKKyAgICAgICAgbV9jb2RlQmxvY2stPnNldEdsb2JhbE9i
amVjdFJlZ2lzdGVyKGluZGV4KTsKKyAgICB9CisgICAgaWYgKGRzdCkKKyAgICAgICAgZW1pdE1v
dmUoZHN0LCBtX2dsb2JhbE9iamVjdFJlZ2lzdGVyKTsKKyAgICByZXR1cm4gbV9nbG9iYWxPYmpl
Y3RSZWdpc3RlcjsKK30KKwogUmVzb2x2ZVJlc3VsdCBCeXRlY29kZUdlbmVyYXRvcjo6cmVzb2x2
ZShjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSkKIHsKICAgICBpZiAocHJvcGVydHkgPT0gcHJv
cGVydHlOYW1lcygpLnRoaXNJZGVudGlmaWVyKQpAQCAtMTI0MywxMyArMTI2Nyw1OSBAQCBSZXNv
bHZlUmVzdWx0IEJ5dGVjb2RlR2VuZXJhdG9yOjpyZXNvbHZlKGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5KQogICAgICAgICAgICAgcmV0dXJuIFJlc29sdmVSZXN1bHQ6OnJlZ2lzdGVyUmVzb2x2
ZShsb2NhbCwgZmxhZ3MpOwogICAgICAgICB9CiAgICAgfQorICAgIC8vIENhc2VzIHdoZXJlIHdl
IGNhbm5vdCBzdGF0aWNhbGx5IG9wdGltaXplIHRoZSBsb29rdXAuCisgICAgaWYgKHByb3BlcnR5
ID09IHByb3BlcnR5TmFtZXMoKS5hcmd1bWVudHMgfHwgIWNhbk9wdGltaXplTm9uTG9jYWxzKCkp
CisgICAgICAgIHJldHVybiBSZXNvbHZlUmVzdWx0OjpkeW5hbWljUmVzb2x2ZSgpOworCisgICAg
aWYgKCFtX3Njb3BlIHx8IG1fY29kZVR5cGUgIT0gRnVuY3Rpb25Db2RlKQorICAgICAgICByZXR1
cm4gUmVzb2x2ZVJlc3VsdDo6ZHluYW1pY1Jlc29sdmUoKTsKKworICAgIFNjb3BlQ2hhaW5JdGVy
YXRvciBpdGVyID0gbV9zY29wZS0+YmVnaW4oKTsKKyAgICBTY29wZUNoYWluSXRlcmF0b3IgZW5k
ID0gbV9zY29wZS0+ZW5kKCk7CisgICAgc2l6ZV90IGRlcHRoID0gMDsKKyAgICBzaXplX3QgZGVw
dGhPZkZpcnN0U2NvcGVXaXRoRHluYW1pY0NoZWNrcyA9IDA7CisgICAgdW5zaWduZWQgZmxhZ3Mg
PSAwOworICAgIGZvciAoOyBpdGVyICE9IGVuZDsgKytpdGVyLCArK2RlcHRoKSB7CisgICAgICAg
IEpTT2JqZWN0KiBjdXJyZW50U2NvcGUgPSBpdGVyLmdldCgpOworICAgICAgICBpZiAoIWN1cnJl
bnRTY29wZS0+aXNWYXJpYWJsZU9iamVjdCgpKQorICAgICAgICAgICAgcmV0dXJuIFJlc29sdmVS
ZXN1bHQ6OmR5bmFtaWNSZXNvbHZlKCk7CisKKyAgICAgICAgSlNTeW1ib2xUYWJsZU9iamVjdCog
Y3VycmVudFZhcmlhYmxlT2JqZWN0ID0ganNDYXN0PEpTU3ltYm9sVGFibGVPYmplY3QqPihjdXJy
ZW50U2NvcGUpOworICAgICAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gY3VycmVudFZhcmlh
YmxlT2JqZWN0LT5zeW1ib2xUYWJsZSgpLT5nZXQocHJvcGVydHkuaW1wbCgpKTsKKworICAgICAg
ICAvLyBGb3VuZCB0aGUgcHJvcGVydHkKKyAgICAgICAgaWYgKCFlbnRyeS5pc051bGwoKSkgewor
ICAgICAgICAgICAgaWYgKGVudHJ5LmlzUmVhZE9ubHkoKSkKKyAgICAgICAgICAgICAgICBmbGFn
cyB8PSBSZXNvbHZlUmVzdWx0OjpSZWFkT25seUZsYWc7CisgICAgICAgICAgICBkZXB0aCArPSBt
X2NvZGVCbG9jay0+bmVlZHNGdWxsU2NvcGVDaGFpbigpOworICAgICAgICAgICAgaWYgKCsraXRl
ciA9PSBlbmQpIHsKKyAgICAgICAgICAgICAgICAvLyBHbG9iYWwgc2NvcGUKKyAgICAgICAgICAg
ICAgICByZXR1cm4gUmVzb2x2ZVJlc3VsdDo6ZHluYW1pY1Jlc29sdmUoKTsKKyAgICAgICAgICAg
IH0KKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgICAgICAgICBpZiAoSlNBY3RpdmF0aW9uKiBh
Y3RpdmF0aW9uID0ganNEeW5hbWljQ2FzdDxKU0FjdGl2YXRpb24qPihjdXJyZW50VmFyaWFibGVP
YmplY3QpKQorICAgICAgICAgICAgICAgIEFTU0VSVChhY3RpdmF0aW9uLT5pc1ZhbGlkKGVudHJ5
KSk7CisjZW5kaWYKKyAgICAgICAgICAgIHJldHVybiBSZXNvbHZlUmVzdWx0OjpsZXhpY2FsUmVz
b2x2ZShlbnRyeS5nZXRJbmRleCgpLCBkZXB0aCwgZmxhZ3MpOworICAgICAgICB9CisgICAgICAg
IGJvb2wgc2NvcGVSZXF1aXJlc0R5bmFtaWNDaGVja3MgPSBmYWxzZTsKKyAgICAgICAgaWYgKGN1
cnJlbnRWYXJpYWJsZU9iamVjdC0+aXNEeW5hbWljU2NvcGUoc2NvcGVSZXF1aXJlc0R5bmFtaWND
aGVja3MpKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGlmICghKGZsYWdzICYgUmVzb2x2
ZVJlc3VsdDo6RHluYW1pY0ZsYWcpKSB7CisgICAgICAgICAgICBpZiAoc2NvcGVSZXF1aXJlc0R5
bmFtaWNDaGVja3MpCisgICAgICAgICAgICAgICAgZmxhZ3MgfD0gUmVzb2x2ZVJlc3VsdDo6RHlu
YW1pY0ZsYWc7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgKytkZXB0aE9mRmly
c3RTY29wZVdpdGhEeW5hbWljQ2hlY2tzOworICAgICAgICB9CisgICAgfQorCiAgICAgcmV0dXJu
IFJlc29sdmVSZXN1bHQ6OmR5bmFtaWNSZXNvbHZlKCk7CiB9CiAKIFJlc29sdmVSZXN1bHQgQnl0
ZWNvZGVHZW5lcmF0b3I6OnJlc29sdmVDb25zdERlY2woY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHkpCiB7CiAgICAgLy8gUmVnaXN0ZXItYWxsb2NhdGVkIGNvbnN0IGRlY2xhcmF0aW9ucy4KLSAg
ICBpZiAobV9jb2RlVHlwZSAhPSBFdmFsQ29kZSAmJiBtX2NvZGVUeXBlICE9IEdsb2JhbENvZGUg
JiYgbV9zeW1ib2xUYWJsZSkgeworICAgIGlmIChtX2NvZGVUeXBlID09IEZ1bmN0aW9uQ29kZSAm
JiBtX3N5bWJvbFRhYmxlKSB7CiAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBzeW1i
b2xUYWJsZSgpLmdldChwcm9wZXJ0eS5pbXBsKCkpOwogICAgICAgICBpZiAoIWVudHJ5LmlzTnVs
bCgpKSB7CiAgICAgICAgICAgICB1bnNpZ25lZCBmbGFncyA9IGVudHJ5LmlzUmVhZE9ubHkoKSA/
IFJlc29sdmVSZXN1bHQ6OlJlYWRPbmx5RmxhZyA6IDA7CkBAIC0xMjg4LDggKzEzNTgsOCBAQCBi
b29sIEJ5dGVjb2RlR2VuZXJhdG9yOjpzaG91bGRBdm9pZFJlc29sdmVHbG9iYWwoKQogUmVnaXN0
ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbHZlKFJlZ2lzdGVySUQqIGRzdCwgY29u
c3QgUmVzb2x2ZVJlc3VsdCYgcmVzb2x2ZVJlc3VsdCwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHkpCiB7CiAKLSAgICBpZiAocmVzb2x2ZVJlc3VsdC5pc1JlZ2lzdGVyKCkpCi0gICAgICAgIHJl
dHVybiBlbWl0R2V0TG9jYWxWYXIoZHN0LCByZXNvbHZlUmVzdWx0LCBwcm9wZXJ0eSk7CisgICAg
aWYgKHJlc29sdmVSZXN1bHQuaXNTdGF0aWMoKSkKKyAgICAgICAgcmV0dXJuIGVtaXRHZXRTdGF0
aWNWYXIoZHN0LCByZXNvbHZlUmVzdWx0LCBwcm9wZXJ0eSk7CiAKICAgICBVbmxpbmtlZFZhbHVl
UHJvZmlsZSBwcm9maWxlID0gZW1pdFByb2ZpbGVkT3Bjb2RlKG9wX3Jlc29sdmUpOwogICAgIGlu
c3RydWN0aW9ucygpLmFwcGVuZChraWxsKGRzdCkpOwpAQCAtMTMwMSw3ICsxMzcxLDExIEBAIFJl
Z2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2x2ZShSZWdpc3RlcklEKiBkc3Qs
IGNvbnN0IFJlc29sdmVSZXN1bHQmCiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0UmVzb2x2ZUJhc2UoUmVnaXN0ZXJJRCogZHN0LCBjb25zdCBSZXNvbHZlUmVzdWx0JiByZXNv
bHZlUmVzdWx0LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSkKIHsKLSAgICBBU1NFUlRfVU5V
U0VEKHJlc29sdmVSZXN1bHQsICFyZXNvbHZlUmVzdWx0LmlzUmVnaXN0ZXIoKSk7CisgICAgaWYg
KCFyZXNvbHZlUmVzdWx0LmlzRHluYW1pYygpKSB7CisgICAgICAgIC8vIEdsb2JhbCBvYmplY3Qg
aXMgdGhlIGJhc2UKKyAgICAgICAgcmV0dXJuIGVtaXRMb2FkR2xvYmFsT2JqZWN0KGRzdCk7Cisg
ICAgfQorCiAgICAgLy8gV2UgY2FuJ3Qgb3B0aW1pc2UgYXQgYWxsIDotKAogICAgIFVubGlua2Vk
VmFsdWVQcm9maWxlIHByb2ZpbGUgPSBlbWl0UHJvZmlsZWRPcGNvZGUob3BfcmVzb2x2ZV9iYXNl
KTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoa2lsbChkc3QpKTsKQEAgLTEzMTMsOSArMTM4
Nyw4IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2x2ZUJhc2UoUmVn
aXN0ZXJJRCogZHN0LCBjb25zdCBSZXNvbHZlUmVzCiAgICAgcmV0dXJuIGRzdDsKIH0KIAotUmVn
aXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbHZlQmFzZUZvclB1dChSZWdpc3Rl
cklEKiBkc3QsIGNvbnN0IFJlc29sdmVSZXN1bHQmIHJlc29sdmVSZXN1bHQsIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5LCBOb25sb2NhbFJlc29sdmVJbmZvJiB2ZXJpZmllcikKK1JlZ2lzdGVy
SUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2x2ZUJhc2VGb3JQdXQoUmVnaXN0ZXJJRCog
ZHN0LCBjb25zdCBSZXNvbHZlUmVzdWx0JiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHksIE5v
bmxvY2FsUmVzb2x2ZUluZm8mIHZlcmlmaWVyKQogewotICAgIEFTU0VSVF9VTlVTRUQocmVzb2x2
ZVJlc3VsdCwgIXJlc29sdmVSZXN1bHQuaXNSZWdpc3RlcigpKTsKICAgICAvLyBXZSBjYW4ndCBv
cHRpbWlzZSBhdCBhbGwgOi0oCiAgICAgVW5saW5rZWRWYWx1ZVByb2ZpbGUgcHJvZmlsZSA9IGVt
aXRQcm9maWxlZE9wY29kZShvcF9yZXNvbHZlX2Jhc2UpOwogICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZChraWxsKGRzdCkpOwpAQCAtMTMzMSw3ICsxNDA0LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRSZXNvbHZlQmFzZUZvclB1dChSZWdpc3RlcklEKiBkc3QsIGNvbnN0
IFJlc28KIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbHZlV2l0aEJh
c2VGb3JQdXQoUmVnaXN0ZXJJRCogYmFzZURzdCwgUmVnaXN0ZXJJRCogcHJvcERzdCwgY29uc3Qg
UmVzb2x2ZVJlc3VsdCYgcmVzb2x2ZVJlc3VsdCwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHks
IE5vbmxvY2FsUmVzb2x2ZUluZm8mIHZlcmlmaWVyKQogewotICAgIEFTU0VSVF9VTlVTRUQocmVz
b2x2ZVJlc3VsdCwgIXJlc29sdmVSZXN1bHQuaXNSZWdpc3RlcigpKTsKKyAgICBBU1NFUlRfVU5V
U0VEKHJlc29sdmVSZXN1bHQsICFyZXNvbHZlUmVzdWx0LmlzU3RhdGljKCkpOwogICAgIFVubGlu
a2VkVmFsdWVQcm9maWxlIHByb2ZpbGUgPSBlbWl0UHJvZmlsZWRPcGNvZGUob3BfcmVzb2x2ZV93
aXRoX2Jhc2UpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChraWxsKGJhc2VEc3QpKTsKICAg
ICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQocHJvcERzdC0+aW5kZXgoKSk7CkBAIC0xMzQ2LDkgKzE0
MTksOSBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc29sdmVXaXRoQmFz
ZUZvclB1dChSZWdpc3RlcklEKiBiYXNlRHN0LCBSZQogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdFJlc29sdmVXaXRoVGhpcyhSZWdpc3RlcklEKiBiYXNlRHN0LCBSZWdpc3Rl
cklEKiBwcm9wRHN0LCBjb25zdCBSZXNvbHZlUmVzdWx0JiByZXNvbHZlUmVzdWx0LCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eSkKIHsKLSAgICBpZiAocmVzb2x2ZVJlc3VsdC5pc1JlZ2lzdGVy
KCkpIHsKKyAgICBpZiAocmVzb2x2ZVJlc3VsdC5pc1N0YXRpYygpKSB7CiAgICAgICAgIGVtaXRM
b2FkKGJhc2VEc3QsIGpzVW5kZWZpbmVkKCkpOwotICAgICAgICBlbWl0R2V0TG9jYWxWYXIocHJv
cERzdCwgcmVzb2x2ZVJlc3VsdCwgcHJvcGVydHkpOworICAgICAgICBlbWl0R2V0U3RhdGljVmFy
KHByb3BEc3QsIHJlc29sdmVSZXN1bHQsIHByb3BlcnR5KTsKICAgICAgICAgcmV0dXJuIGJhc2VE
c3Q7CiAgICAgfQogCkBAIC0xMzYxLDggKzE0MzQsOSBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdFJlc29sdmVXaXRoVGhpcyhSZWdpc3RlcklEKiBiYXNlRHN0LCBSZWdpc3Rl
cgogICAgIHJldHVybiBiYXNlRHN0OwogfQogCi1SZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdEdldExvY2FsVmFyKFJlZ2lzdGVySUQqIGRzdCwgY29uc3QgUmVzb2x2ZVJlc3VsdCYg
cmVzb2x2ZVJlc3VsdCwgY29uc3QgSWRlbnRpZmllciYpCitSZWdpc3RlcklEKiBCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdEdldFN0YXRpY1ZhcihSZWdpc3RlcklEKiBkc3QsIGNvbnN0IFJlc29sdmVS
ZXN1bHQmIHJlc29sdmVSZXN1bHQsIGNvbnN0IElkZW50aWZpZXImKQogeworICAgIEFTU0VSVCht
X2NvZGVUeXBlID09IEZ1bmN0aW9uQ29kZSk7CiAgICAgc3dpdGNoIChyZXNvbHZlUmVzdWx0LnR5
cGUoKSkgewogICAgIGNhc2UgUmVzb2x2ZVJlc3VsdDo6UmVnaXN0ZXI6CiAgICAgY2FzZSBSZXNv
bHZlUmVzdWx0OjpSZWFkT25seVJlZ2lzdGVyOgpAQCAtMTM3MCw2ICsxNDQ0LDE2IEBAIFJlZ2lz
dGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0TG9jYWxWYXIoUmVnaXN0ZXJJRCogZHN0
LCBjb25zdCBSZXNvbHZlUmVzCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgcmV0dXJu
IG1vdmVUb0Rlc3RpbmF0aW9uSWZOZWVkZWQoZHN0LCByZXNvbHZlUmVzdWx0LmxvY2FsKCkpOwog
CisgICAgY2FzZSBSZXNvbHZlUmVzdWx0OjpMZXhpY2FsOgorICAgIGNhc2UgUmVzb2x2ZVJlc3Vs
dDo6UmVhZE9ubHlMZXhpY2FsOiB7CisgICAgICAgIFVubGlua2VkVmFsdWVQcm9maWxlIHByb2Zp
bGUgPSBlbWl0UHJvZmlsZWRPcGNvZGUob3BfZ2V0X3Njb3BlZF92YXIpOworICAgICAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQoZHN0LT5pbmRleCgpKTsKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKHJlc29sdmVSZXN1bHQuaW5kZXgoKSk7CisgICAgICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZChyZXNvbHZlUmVzdWx0LmRlcHRoKCkpOworICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQocHJvZmlsZSk7CisgICAgICAgIHJldHVybiBkc3Q7CisgICAgfQorCiAgICAgZGVmYXVsdDoK
ICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIDA7
CkBAIC0xMzg3LDYgKzE0NzEsMjggQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRJbml0R2xvYmFsQ29uc3QoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllciwKICAgICByZXR1
cm4gdmFsdWU7CiB9CiAKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0U3Rh
dGljVmFyKGNvbnN0IFJlc29sdmVSZXN1bHQmIHJlc29sdmVSZXN1bHQsIGNvbnN0IElkZW50aWZp
ZXImLCBSZWdpc3RlcklEKiB2YWx1ZSkKK3sKKyAgICBBU1NFUlQobV9jb2RlVHlwZSA9PSBGdW5j
dGlvbkNvZGUpOworICAgIHN3aXRjaCAocmVzb2x2ZVJlc3VsdC50eXBlKCkpIHsKKyAgICBjYXNl
IFJlc29sdmVSZXN1bHQ6OlJlZ2lzdGVyOgorICAgIGNhc2UgUmVzb2x2ZVJlc3VsdDo6UmVhZE9u
bHlSZWdpc3RlcjoKKyAgICAgICAgcmV0dXJuIG1vdmVUb0Rlc3RpbmF0aW9uSWZOZWVkZWQocmVz
b2x2ZVJlc3VsdC5sb2NhbCgpLCB2YWx1ZSk7CisKKyAgICBjYXNlIFJlc29sdmVSZXN1bHQ6Okxl
eGljYWw6CisgICAgY2FzZSBSZXNvbHZlUmVzdWx0OjpSZWFkT25seUxleGljYWw6CisgICAgICAg
IGVtaXRPcGNvZGUob3BfcHV0X3Njb3BlZF92YXIpOworICAgICAgICBpbnN0cnVjdGlvbnMoKS5h
cHBlbmQocmVzb2x2ZVJlc3VsdC5pbmRleCgpKTsKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKHJlc29sdmVSZXN1bHQuZGVwdGgoKSk7CisgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZCh2YWx1ZS0+aW5kZXgoKSk7CisgICAgICAgIHJldHVybiB2YWx1ZTsKKworICAgIGRlZmF1bHQ6
CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiAw
OworICAgIH0KK30KKwogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRCeUlk
KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHkpCiB7CiAgICAgbV9jb2RlQmxvY2stPmFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24o
aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRleCBkZDAxMzJjYTY4OGQ2NjZk
YjRhMzE4NzE4YmFlMDVjNTExMWE0NmJkLi5hNTEzNWQ3MWZlYjcyODg4ZTkyOTQ5MWNkNzliYThl
YjYyNjhiOTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBAIC0xMjgsMTQgKzEyOCwyMiBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgICAgIER5bmFtaWNGbGFnID0gMHgyLAogICAgICAgICAgICAgLy8gVGhl
IHJlc29sdmVkIGJpbmRpbmcgaXMgaW1tdXRhYmxlLgogICAgICAgICAgICAgUmVhZE9ubHlGbGFn
ID0gMHg0LAorICAgICAgICAgICAgLy8gVGhlIHByb3BlcnR5IGhhcyBhIHN0YXRpYyBsb2NhdGlv
bgorICAgICAgICAgICAgU3RhdGljRmxhZyA9IDB4OCwKKyAgICAgICAgICAgIC8vIEVudHJ5IGF0
IHNjb3BlIGRpc3RhbmNlICJtX2RlcHRoIiBhbmQgbG9jYXRlZCBhdCAibV9pbmRleCIKKyAgICAg
ICAgICAgIFNjb3BlZEZsYWcgPSAweDEwCiAgICAgICAgIH07CiAKICAgICAgICAgZW51bSBUeXBl
IHsKICAgICAgICAgICAgIC8vIFRoZSBwcm9wZXJ0eSBpcyBsb2NhbCwgYW5kIHN0b3JlZCBpbiBh
IHJlZ2lzdGVyLgotICAgICAgICAgICAgUmVnaXN0ZXIgPSBSZWdpc3RlckZsYWcsCisgICAgICAg
ICAgICBSZWdpc3RlciA9IFJlZ2lzdGVyRmxhZyB8IFN0YXRpY0ZsYWcsCiAgICAgICAgICAgICAv
LyBBIHJlYWQtb25seSBsb2NhbCwgY3JlYXRlZCBieSAiY29uc3QiLgotICAgICAgICAgICAgUmVh
ZE9ubHlSZWdpc3RlciA9IFJlZ2lzdGVyRmxhZyB8IFJlYWRPbmx5RmxhZywKLSAgICAgICAgICAg
IC8vIEFueSBmb3JtIG9mIG5vbi1sb2NhbCBsb29rdXAKKyAgICAgICAgICAgIFJlYWRPbmx5UmVn
aXN0ZXIgPSBSZWdpc3RlckZsYWcgfCBSZWFkT25seUZsYWcgfCBTdGF0aWNGbGFnLAorICAgICAg
ICAgICAgLy8gTGV4aWNhbGx5IGZpeGVkIGxvY2F0aW9uIGluIHRoZSBzY29wZSBjaGFpbgorICAg
ICAgICAgICAgTGV4aWNhbCA9IFNjb3BlZEZsYWcgfCBTdGF0aWNGbGFnLAorICAgICAgICAgICAg
Ly8gQSByZWFkLW9ubHkgTGV4aWNhbCwgY3JlYXRlZCBieSAiY29uc3QiLgorICAgICAgICAgICAg
UmVhZE9ubHlMZXhpY2FsID0gU2NvcGVkRmxhZyB8IFJlYWRPbmx5RmxhZyB8IFN0YXRpY0ZsYWcs
CisgICAgICAgICAgICAvLyBBbnkgb3RoZXIgZm9ybSBvZiBsb29rdXAKICAgICAgICAgICAgIER5
bmFtaWMgPSBEeW5hbWljRmxhZywKICAgICAgICAgfTsKIApAQCAtMTQ3LDYgKzE1NSwxMiBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIFJlc29sdmVSZXN1
bHQoRHluYW1pYywgMCk7CiAgICAgICAgIH0KKyAgICAgICAgc3RhdGljIFJlc29sdmVSZXN1bHQg
bGV4aWNhbFJlc29sdmUoaW50IGluZGV4LCBzaXplX3QgZGVwdGgsIHVuc2lnbmVkIGZsYWdzKQor
ICAgICAgICB7CisgICAgICAgICAgICBpZiAoZmxhZ3MgJiBEeW5hbWljRmxhZykKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZHluYW1pY1Jlc29sdmUoKTsKKyAgICAgICAgICAgIHJldHVybiBSZXNv
bHZlUmVzdWx0KExleGljYWwgfCBmbGFncywgaW5kZXgsIGRlcHRoKTsKKyAgICAgICAgfQogICAg
ICAgICB1bnNpZ25lZCB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAKICAgICAgICAg
Ly8gUmV0dXJucyB0aGUgcmVnaXN0ZXIgY29ycmVzcG9uZGluZyB0byBhIGxvY2FsIHZhcmlhYmxl
LCBvciAwIGlmIG5vCkBAIC0xNTUsMTMgKzE2OSwzMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgUmVnaXN0ZXJJRCogbG9jYWwoKSBjb25zdCB7IHJldHVybiBtX2xvY2FsOyB9CiAKICAgICAg
ICAgYm9vbCBpc1JlZ2lzdGVyKCkgY29uc3QgeyByZXR1cm4gbV90eXBlICYgUmVnaXN0ZXJGbGFn
OyB9CisgICAgICAgIGJvb2wgaXNTdGF0aWMoKSBjb25zdCB7IHJldHVybiAobV90eXBlICYgU3Rh
dGljRmxhZykgJiYgIWlzRHluYW1pYygpOyB9CiAgICAgICAgIGJvb2wgaXNEeW5hbWljKCkgY29u
c3QgeyByZXR1cm4gbV90eXBlICYgRHluYW1pY0ZsYWc7IH0KICAgICAgICAgYm9vbCBpc1JlYWRP
bmx5KCkgY29uc3QgeyByZXR1cm4gKG1fdHlwZSAmIFJlYWRPbmx5RmxhZykgJiYgIWlzRHluYW1p
YygpOyB9CiAKKyAgICAgICAgdW5zaWduZWQgZGVwdGgoKSBjb25zdCB7IEFTU0VSVChpc1N0YXRp
YygpKTsgcmV0dXJuIG1fZGVwdGg7IH0KKyAgICAgICAgaW50MzJfdCBpbmRleCgpIGNvbnN0IHsg
QVNTRVJUKGlzU3RhdGljKCkpOyByZXR1cm4gbV9pbmRleDsgfQorCiAgICAgcHJpdmF0ZToKICAg
ICAgICAgUmVzb2x2ZVJlc3VsdCh1bnNpZ25lZCB0eXBlLCBSZWdpc3RlcklEKiBsb2NhbCkKICAg
ICAgICAgICAgIDogbV90eXBlKHR5cGUpCiAgICAgICAgICAgICAsIG1fbG9jYWwobG9jYWwpCisg
ICAgICAgICAgICAsIG1faW5kZXgoMCkKKyAgICAgICAgICAgICwgbV9kZXB0aCgwKQorICAgICAg
ICB7CisjaWZuZGVmIE5ERUJVRworICAgICAgICAgICAgY2hlY2tWYWxpZGl0eSgpOworI2VuZGlm
CisgICAgICAgIH0KKworICAgICAgICBSZXNvbHZlUmVzdWx0KHVuc2lnbmVkIHR5cGUsIGludCBp
bmRleCwgdW5zaWduZWQgZGVwdGgpCisgICAgICAgICAgICA6IG1fdHlwZSh0eXBlKQorICAgICAg
ICAgICAgLCBtX2xvY2FsKDApCisgICAgICAgICAgICAsIG1faW5kZXgoaW5kZXgpCisgICAgICAg
ICAgICAsIG1fZGVwdGgoZGVwdGgpCiAgICAgICAgIHsKICNpZm5kZWYgTkRFQlVHCiAgICAgICAg
ICAgICBjaGVja1ZhbGlkaXR5KCk7CkBAIC0xNzQsNiArMjA1LDggQEAgbmFtZXNwYWNlIEpTQyB7
CiAKICAgICAgICAgdW5zaWduZWQgbV90eXBlOwogICAgICAgICBSZWdpc3RlcklEKiBtX2xvY2Fs
OyAvLyBMb2NhbCByZWdpc3RlciwgaWYgUmVnaXN0ZXJGbGFnIGlzIHNldAorICAgICAgICBpbnQg
bV9pbmRleDsKKyAgICAgICAgdW5zaWduZWQgbV9kZXB0aDsKICAgICB9OwogCiAgICAgc3RydWN0
IE5vbmxvY2FsUmVzb2x2ZUluZm8gewpAQCAtMjExLDkgKzI0NCw5IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICB0eXBlZGVmIERlY2xhcmF0aW9uU3RhY2tzOjpWYXJTdGFjayBWYXJTdGFjazsK
ICAgICAgICAgdHlwZWRlZiBEZWNsYXJhdGlvblN0YWNrczo6RnVuY3Rpb25TdGFjayBGdW5jdGlv
blN0YWNrOwogCi0gICAgICAgIEJ5dGVjb2RlR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSYsIFByb2dy
YW1Ob2RlKiwgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKiwgRGVidWdnZXJNb2RlLCBQcm9maWxl
ck1vZGUpOwotICAgICAgICBCeXRlY29kZUdlbmVyYXRvcihKU0dsb2JhbERhdGEmLCBGdW5jdGlv
bkJvZHlOb2RlKiwgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayosIERlYnVnZ2VyTW9kZSwgUHJv
ZmlsZXJNb2RlKTsKLSAgICAgICAgQnl0ZWNvZGVHZW5lcmF0b3IoSlNHbG9iYWxEYXRhJiwgRXZh
bE5vZGUqLCBVbmxpbmtlZEV2YWxDb2RlQmxvY2sqLCBEZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9k
ZSk7CisgICAgICAgIEJ5dGVjb2RlR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSYsIEpTU2NvcGUqLCBQ
cm9ncmFtTm9kZSosIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jayosIERlYnVnZ2VyTW9kZSwgUHJv
ZmlsZXJNb2RlKTsKKyAgICAgICAgQnl0ZWNvZGVHZW5lcmF0b3IoSlNHbG9iYWxEYXRhJiwgSlNT
Y29wZSosIEZ1bmN0aW9uQm9keU5vZGUqLCBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiwgRGVi
dWdnZXJNb2RlLCBQcm9maWxlck1vZGUpOworICAgICAgICBCeXRlY29kZUdlbmVyYXRvcihKU0ds
b2JhbERhdGEmLCBKU1Njb3BlKiwgRXZhbE5vZGUqLCBVbmxpbmtlZEV2YWxDb2RlQmxvY2sqLCBE
ZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSk7CiAKICAgICAgICAgfkJ5dGVjb2RlR2VuZXJhdG9y
KCk7CiAgICAgICAgIApAQCAtMzc5LDYgKzQxMiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBSZWdpc3RlcklEKiBlbWl0TG9hZChSZWdpc3RlcklEKiBkc3QsIGRvdWJsZSk7CiAgICAgICAg
IFJlZ2lzdGVySUQqIGVtaXRMb2FkKFJlZ2lzdGVySUQqIGRzdCwgY29uc3QgSWRlbnRpZmllciYp
OwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0TG9hZChSZWdpc3RlcklEKiBkc3QsIEpTVmFsdWUp
OworICAgICAgICBSZWdpc3RlcklEKiBlbWl0TG9hZEdsb2JhbE9iamVjdChSZWdpc3RlcklEKiBk
c3QpOwogCiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRVbmFyeU9wKE9wY29kZUlELCBSZWdpc3Rl
cklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYyk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRCaW5h
cnlPcChPcGNvZGVJRCwgUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMxLCBSZWdpc3Rl
cklEKiBzcmMyLCBPcGVyYW5kVHlwZXMpOwpAQCAtNDA4LDcgKzQ0Miw4IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBSZWdpc3RlcklEKiBlbWl0VHlwZU9mKFJlZ2lzdGVySUQqIGRzdCwgUmVn
aXN0ZXJJRCogc3JjKSB7IHJldHVybiBlbWl0VW5hcnlPcChvcF90eXBlb2YsIGRzdCwgc3JjKTsg
fQogICAgICAgICBSZWdpc3RlcklEKiBlbWl0SW4oUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklE
KiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogYmFzZSkgeyByZXR1cm4gZW1pdEJpbmFyeU9wKG9wX2lu
LCBkc3QsIHByb3BlcnR5LCBiYXNlLCBPcGVyYW5kVHlwZXMoKSk7IH0KIAotICAgICAgICBSZWdp
c3RlcklEKiBlbWl0R2V0TG9jYWxWYXIoUmVnaXN0ZXJJRCogZHN0LCBjb25zdCBSZXNvbHZlUmVz
dWx0JiwgY29uc3QgSWRlbnRpZmllciYpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0R2V0U3Rh
dGljVmFyKFJlZ2lzdGVySUQqIGRzdCwgY29uc3QgUmVzb2x2ZVJlc3VsdCYsIGNvbnN0IElkZW50
aWZpZXImKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFB1dFN0YXRpY1Zhcihjb25zdCBSZXNv
bHZlUmVzdWx0JiwgY29uc3QgSWRlbnRpZmllciYsIFJlZ2lzdGVySUQqIHZhbHVlKTsKICAgICAg
ICAgUmVnaXN0ZXJJRCogZW1pdEluaXRHbG9iYWxDb25zdChjb25zdCBJZGVudGlmaWVyJiwgUmVn
aXN0ZXJJRCogdmFsdWUpOwogCiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRSZXNvbHZlKFJlZ2lz
dGVySUQqIGRzdCwgY29uc3QgUmVzb2x2ZVJlc3VsdCYsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5KTsKQEAgLTY1MCw2ICs2ODUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgU2hhcmVk
U3ltYm9sVGFibGUqIG1fc3ltYm9sVGFibGU7CiAKICAgICAgICAgU2NvcGVOb2RlKiBtX3Njb3Bl
Tm9kZTsKKyAgICAgICAgU3Ryb25nPEpTU2NvcGU+IG1fc2NvcGU7CiAgICAgICAgIFN0cm9uZzxV
bmxpbmtlZENvZGVCbG9jaz4gbV9jb2RlQmxvY2s7CiAKICAgICAgICAgLy8gU29tZSBvZiB0aGVz
ZSBvYmplY3RzIGtlZXAgcG9pbnRlcnMgdG8gb25lIGFub3RoZXIuIFRoZXkgYXJlIGFycmFuZ2Vk
CkBAIC02NjAsNiArNjk2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZ2lzdGVySUQg
bV9jYWxsZWVSZWdpc3RlcjsKICAgICAgICAgUmVnaXN0ZXJJRCogbV9hY3RpdmF0aW9uUmVnaXN0
ZXI7CiAgICAgICAgIFJlZ2lzdGVySUQqIG1fZW1wdHlWYWx1ZVJlZ2lzdGVyOworICAgICAgICBS
ZWdpc3RlcklEKiBtX2dsb2JhbE9iamVjdFJlZ2lzdGVyOwogICAgICAgICBTZWdtZW50ZWRWZWN0
b3I8UmVnaXN0ZXJJRCwgMzI+IG1fY29uc3RhbnRQb29sUmVnaXN0ZXJzOwogICAgICAgICBTZWdt
ZW50ZWRWZWN0b3I8UmVnaXN0ZXJJRCwgMzI+IG1fY2FsbGVlUmVnaXN0ZXJzOwogICAgICAgICBT
ZWdtZW50ZWRWZWN0b3I8UmVnaXN0ZXJJRCwgMzI+IG1fcGFyYW1ldGVyczsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCA0
ZTc0NWUxYzEwYzFjYzFjNzM2OTM0YjBhMTZkZGU1ZWM2NWQ4ZjNmLi5hODE4NzNmNjlkYmYxNWQ5
NmU3YTQ2NTU0NzhmZmQ4OTMyYTE2NDdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC0xNDEsNyArMTQxLDcgQEAgUmVn
aXN0ZXJJRCogVGhpc05vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLCBSZWdpc3RlcklEKiBkc3QKIAogYm9vbCBSZXNvbHZlTm9kZTo6aXNQdXJlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGdlbmVyYXRvci5yZXNv
bHZlKG1faWRlbnQpLmlzUmVnaXN0ZXIoKTsKKyAgICByZXR1cm4gZ2VuZXJhdG9yLnJlc29sdmUo
bV9pZGVudCkuaXNTdGF0aWMoKTsKIH0KIAogUmVnaXN0ZXJJRCogUmVzb2x2ZU5vZGU6OmVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCkBA
IC00MzksNiArNDM5LDE0IEBAIFJlZ2lzdGVySUQqIEZ1bmN0aW9uQ2FsbFJlc29sdmVOb2RlOjpl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwKICAgICAgICAgcmV0dXJu
IGdlbmVyYXRvci5lbWl0Q2FsbChnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbk9ySWdub3JlZChk
c3QsIGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCkpLCBmdW5jLmdldCgpLCBOb0V4cGVjdGVk
RnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIHN0YXJ0T2Zmc2V0KCksIGVuZE9mZnNl
dCgpKTsKICAgICB9CiAKKyAgICBpZiAocmVzb2x2ZVJlc3VsdC5pc1N0YXRpYygpKSB7CisgICAg
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiBmdW5jID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwor
ICAgICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwor
ICAgICAgICBnZW5lcmF0b3IuZW1pdEdldFN0YXRpY1ZhcihmdW5jLmdldCgpLCByZXNvbHZlUmVz
dWx0LCBtX2lkZW50KTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGNhbGxBcmd1bWVudHMu
dGhpc1JlZ2lzdGVyKCksIGpzVW5kZWZpbmVkKCkpOworICAgICAgICByZXR1cm4gZ2VuZXJhdG9y
LmVtaXRDYWxsKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uT3JJZ25vcmVkKGRzdCwgZnVuYy5n
ZXQoKSksIGZ1bmMuZ2V0KCksIGV4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90
KCksIHN0YXJ0T2Zmc2V0KCksIGVuZE9mZnNldCgpKTsKKyAgICB9CisKICAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gZnVuYyA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKICAgICBDYWxsQXJndW1l
bnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwogICAgIGludCBpZGVudGlmaWVy
U3RhcnQgPSBkaXZvdCgpIC0gc3RhcnRPZmZzZXQoKTsKQEAgLTYyMiw3ICs2MzAsMTkgQEAgUmVn
aXN0ZXJJRCogUG9zdGZpeE5vZGU6OmVtaXRSZXNvbHZlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5l
cmF0b3IsIFJlZ2lzdGVySUQqIGQKICAgICAgICAgICAgIHJldHVybiBlbWl0UHJlSW5jT3JEZWMo
Z2VuZXJhdG9yLCBsb2NhbCwgbV9vcGVyYXRvcik7CiAgICAgICAgIHJldHVybiBlbWl0UG9zdElu
Y09yRGVjKGdlbmVyYXRvciwgZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSwgbG9jYWws
IG1fb3BlcmF0b3IpOwogICAgIH0KLSAgICAKKworICAgIGlmIChyZXNvbHZlUmVzdWx0LmlzU3Rh
dGljKCkgJiYgIXJlc29sdmVSZXN1bHQuaXNSZWFkT25seSgpKSB7CisgICAgICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0R2V0U3RhdGljVmFyKGdlbmVyYXRvci5u
ZXdUZW1wb3JhcnkoKSwgcmVzb2x2ZVJlc3VsdCwgaWRlbnQpOworICAgICAgICBSZWdpc3RlcklE
KiBvbGRWYWx1ZTsKKyAgICAgICAgaWYgKGRzdCA9PSBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgp
KSB7CisgICAgICAgICAgICBvbGRWYWx1ZSA9IDA7CisgICAgICAgICAgICBlbWl0UHJlSW5jT3JE
ZWMoZ2VuZXJhdG9yLCB2YWx1ZS5nZXQoKSwgbV9vcGVyYXRvcik7CisgICAgICAgIH0gZWxzZQor
ICAgICAgICAgICAgb2xkVmFsdWUgPSBlbWl0UG9zdEluY09yRGVjKGdlbmVyYXRvciwgZ2VuZXJh
dG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSwgdmFsdWUuZ2V0KCksIG1fb3BlcmF0b3IpOworICAg
ICAgICBnZW5lcmF0b3IuZW1pdFB1dFN0YXRpY1ZhcihyZXNvbHZlUmVzdWx0LCBpZGVudCwgdmFs
dWUuZ2V0KCkpOworICAgICAgICByZXR1cm4gb2xkVmFsdWU7CisgICAgfQorCiAgICAgZ2VuZXJh
dG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBzdGFydE9mZnNldCgpLCBlbmRPZmZzZXQo
KSk7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFy
eSgpOwogICAgIE5vbmxvY2FsUmVzb2x2ZUluZm8gcmVzb2x2ZUluZm87CkBAIC03NjcsNiArNzg3
LDExIEBAIFJlZ2lzdGVySUQqIFR5cGVPZlJlc29sdmVOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0CiAgICAgICAgIHJldHVybiBnZW5lcmF0b3Iu
ZW1pdFR5cGVPZihnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QpLCBsb2NhbCk7CiAgICAg
fQogCisgICAgaWYgKHJlc29sdmVSZXN1bHQuaXNTdGF0aWMoKSkgeworICAgICAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gc2NyYXRjaCA9IGdlbmVyYXRvci5lbWl0R2V0U3RhdGljVmFyKGdlbmVyYXRv
ci50ZW1wRGVzdGluYXRpb24oZHN0KSwgcmVzb2x2ZVJlc3VsdCwgbV9pZGVudCk7CisgICAgICAg
IHJldHVybiBnZW5lcmF0b3IuZW1pdFR5cGVPZihnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihk
c3QsIHNjcmF0Y2guZ2V0KCkpLCBzY3JhdGNoLmdldCgpKTsKKyAgICB9CisKICAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gc2NyYXRjaCA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZUJhc2UoZ2VuZXJhdG9y
LnRlbXBEZXN0aW5hdGlvbihkc3QpLCByZXNvbHZlUmVzdWx0LCBtX2lkZW50KTsKICAgICBnZW5l
cmF0b3IuZW1pdEdldEJ5SWQoc2NyYXRjaC5nZXQoKSwgc2NyYXRjaC5nZXQoKSwgbV9pZGVudCk7
CiAgICAgaWYgKGRzdCA9PSBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKQpAQCAtODA4LDYgKzgz
MywxMyBAQCBSZWdpc3RlcklEKiBQcmVmaXhOb2RlOjplbWl0UmVzb2x2ZShCeXRlY29kZUdlbmVy
YXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkcwogICAgICAgICByZXR1cm4gZ2VuZXJhdG9y
Lm1vdmVUb0Rlc3RpbmF0aW9uSWZOZWVkZWQoZHN0LCBsb2NhbCk7CiAgICAgfQogCisgICAgaWYg
KHJlc29sdmVSZXN1bHQuaXNTdGF0aWMoKSAmJiAhcmVzb2x2ZVJlc3VsdC5pc1JlYWRPbmx5KCkp
IHsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByb3BEc3QgPSBnZW5lcmF0b3IuZW1pdEdl
dFN0YXRpY1ZhcihnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIHJlc29sdmVSZXN1bHQs
IGlkZW50KTsKKyAgICAgICAgZW1pdFByZUluY09yRGVjKGdlbmVyYXRvciwgcHJvcERzdC5nZXQo
KSwgbV9vcGVyYXRvcik7CisgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0U3RhdGljVmFyKHJlc29s
dmVSZXN1bHQsIGlkZW50LCBwcm9wRHN0LmdldCgpKTsKKyAgICAgICAgcmV0dXJuIGdlbmVyYXRv
ci5tb3ZlVG9EZXN0aW5hdGlvbklmTmVlZGVkKGRzdCwgcHJvcERzdC5nZXQoKSk7CisgICAgfQor
CiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBzdGFydE9mZnNldCgp
LCBlbmRPZmZzZXQoKSk7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByb3BEc3QgPSBnZW5lcmF0
b3IudGVtcERlc3RpbmF0aW9uKGRzdCk7CiAgICAgTm9ubG9jYWxSZXNvbHZlSW5mbyByZXNvbHZl
VmVyaWZpZXI7CkBAIC0xMjY3LDYgKzEyOTksMTMgQEAgUmVnaXN0ZXJJRCogUmVhZE1vZGlmeVJl
c29sdmVOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmUK
ICAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5tb3ZlVG9EZXN0aW5hdGlvbklmTmVlZGVkKGRzdCwg
cmVzdWx0KTsKICAgICB9CiAKKyAgICBpZiAocmVzb2x2ZVJlc3VsdC5pc1N0YXRpYygpICYmICFy
ZXNvbHZlUmVzdWx0LmlzUmVhZE9ubHkoKSkgeworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
c3JjMSA9IGdlbmVyYXRvci5lbWl0R2V0U3RhdGljVmFyKGdlbmVyYXRvci50ZW1wRGVzdGluYXRp
b24oZHN0KSwgcmVzb2x2ZVJlc3VsdCwgbV9pZGVudCk7CisgICAgICAgIFJlZ2lzdGVySUQqIHJl
c3VsdCA9IGVtaXRSZWFkTW9kaWZ5QXNzaWdubWVudChnZW5lcmF0b3IsIGdlbmVyYXRvci5maW5h
bERlc3RpbmF0aW9uKGRzdCwgc3JjMS5nZXQoKSksIHNyYzEuZ2V0KCksIG1fcmlnaHQsIG1fb3Bl
cmF0b3IsIE9wZXJhbmRUeXBlcyhSZXN1bHRUeXBlOjp1bmtub3duVHlwZSgpLCBtX3JpZ2h0LT5y
ZXN1bHREZXNjcmlwdG9yKCkpKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRTdGF0aWNWYXIo
cmVzb2x2ZVJlc3VsdCwgbV9pZGVudCwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsK
KyAgICB9CisKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3JjMSA9IGdlbmVyYXRvci50ZW1wRGVz
dGluYXRpb24oZHN0KTsKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCkg
LSBzdGFydE9mZnNldCgpICsgbV9pZGVudC5sZW5ndGgoKSwgbV9pZGVudC5sZW5ndGgoKSwgMCk7
CiAgICAgTm9ubG9jYWxSZXNvbHZlSW5mbyByZXNvbHZlVmVyaWZpZXI7CkBAIC0xMjkwLDYgKzEz
MjksMTQgQEAgUmVnaXN0ZXJJRCogQXNzaWduUmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3QKICAgICAgICAgcmV0dXJuIGdlbmVyYXRv
ci5tb3ZlVG9EZXN0aW5hdGlvbklmTmVlZGVkKGRzdCwgcmVzdWx0KTsKICAgICB9CiAKKyAgICBp
ZiAocmVzb2x2ZVJlc3VsdC5pc1N0YXRpYygpICYmICFyZXNvbHZlUmVzdWx0LmlzUmVhZE9ubHko
KSkgeworICAgICAgICBpZiAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpCisgICAg
ICAgICAgICBkc3QgPSAwOworICAgICAgICBSZWdpc3RlcklEKiB2YWx1ZSA9IGdlbmVyYXRvci5l
bWl0Tm9kZShkc3QsIG1fcmlnaHQpOworICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dFN0YXRpY1Zh
cihyZXNvbHZlUmVzdWx0LCBtX2lkZW50LCB2YWx1ZSk7CisgICAgICAgIHJldHVybiB2YWx1ZTsK
KyAgICB9CisKICAgICBOb25sb2NhbFJlc29sdmVJbmZvIHJlc29sdmVWZXJpZmllcjsKICAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZUJhc2VGb3JQdXQo
Z2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCByZXNvbHZlUmVzdWx0LCBtX2lkZW50LCByZXNvbHZl
VmVyaWZpZXIpOwogICAgIGlmIChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSkKQEAg
LTEzOTEsMTAgKzE0MzgsOSBAQCBSZWdpc3RlcklEKiBDb25zdERlY2xOb2RlOjplbWl0Q29kZVNp
bmdsZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yKQogCiAgICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IHZhbHVlID0gbV9pbml0ID8gZ2VuZXJhdG9yLmVtaXROb2RlKG1faW5pdCkgOiBnZW5lcmF0
b3IuZW1pdExvYWQoMCwganNVbmRlZmluZWQoKSk7CiAKLSAgICBpZiAoZ2VuZXJhdG9yLmNvZGVU
eXBlKCkgPT0gR2xvYmFsQ29kZSkgewotICAgICAgICBpZiAoUmVnaXN0ZXJJRCogcmVzdWx0ID0g
Z2VuZXJhdG9yLmVtaXRJbml0R2xvYmFsQ29uc3QobV9pZGVudCwgdmFsdWUuZ2V0KCkpKQotICAg
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9CisgICAgaWYgKGdlbmVyYXRvci5jb2RlVHlw
ZSgpID09IEdsb2JhbENvZGUpCisgICAgICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdEluaXRHbG9i
YWxDb25zdChtX2lkZW50LCB2YWx1ZS5nZXQoKSk7CisKICAgICBpZiAoZ2VuZXJhdG9yLmNvZGVU
eXBlKCkgIT0gRXZhbENvZGUpCiAgICAgICAgIHJldHVybiB2YWx1ZS5nZXQoKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCAzMGNi
NTNmYTNhNmM2YjdkZDRkOGYwY2UyNmNjMzgzMWRiMDQ3MjAxLi40MTRjNTA1NmMwYzdkMTE5MjQ1
NzE1MjNmZTgyOWU2NTZiYjY5ZTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtMzA2NCw2ICszMDY0LDMyIEBAIGJvb2wgQnl0ZUNv
ZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICBhZGRUb0dy
YXBoKEp1bXAsIE9wSW5mbyhtX2N1cnJlbnRJbmRleCArIE9QQ09ERV9MRU5HVEgob3Bfam5lcV9w
dHIpKSk7CiAgICAgICAgICAgICBMQVNUX09QQ09ERShvcF9qbmVxX3B0cik7CiAKKyAgICAgICAg
Y2FzZSBvcF9nZXRfc2NvcGVkX3ZhcjogeworICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJl
ZGljdGlvbiA9IGdldFByZWRpY3Rpb24oKTsKKyAgICAgICAgICAgIGludCBkc3QgPSBjdXJyZW50
SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworICAgICAgICAgICAgaW50IHNsb3QgPSBjdXJyZW50
SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOworICAgICAgICAgICAgaW50IGRlcHRoID0gY3VycmVu
dEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKKyAgICAgICAgICAgIGJvb2wgaGFzVG9wU2NvcGUg
PSBtX2NvZGVCbG9jay0+Y29kZVR5cGUoKSA9PSBGdW5jdGlvbkNvZGUgJiYgbV9pbmxpbmVTdGFj
a1RvcC0+bV9jb2RlQmxvY2stPm5lZWRzRnVsbFNjb3BlQ2hhaW4oKTsKKyAgICAgICAgICAgIEFT
U0VSVCghaGFzVG9wU2NvcGUgfHwgZGVwdGggPj0gMSk7CisgICAgICAgICAgICBOb2RlKiBzY29w
ZSA9IGdldFNjb3BlKGhhc1RvcFNjb3BlLCBkZXB0aCAtIGhhc1RvcFNjb3BlKTsKKyAgICAgICAg
ICAgIE5vZGUqIGdldFNjb3BlUmVnaXN0ZXJzID0gYWRkVG9HcmFwaChHZXRTY29wZVJlZ2lzdGVy
cywgc2NvcGUpOworICAgICAgICAgICAgTm9kZSogZ2V0U2NvcGVkVmFyID0gYWRkVG9HcmFwaChH
ZXRTY29wZWRWYXIsIE9wSW5mbyhzbG90KSwgT3BJbmZvKHByZWRpY3Rpb24pLCBnZXRTY29wZVJl
Z2lzdGVycyk7CisgICAgICAgICAgICBzZXQoZHN0LCBnZXRTY29wZWRWYXIpOworICAgICAgICAg
ICAgTkVYVF9PUENPREUob3BfZ2V0X3Njb3BlZF92YXIpOworICAgICAgICB9CisKKyAgICAgICAg
Y2FzZSBvcF9wdXRfc2NvcGVkX3ZhcjogeworICAgICAgICAgICAgaW50IHNsb3QgPSBjdXJyZW50
SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworICAgICAgICAgICAgaW50IGRlcHRoID0gY3VycmVu
dEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKKyAgICAgICAgICAgIGludCBzb3VyY2UgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOworICAgICAgICAgICAgYm9vbCBoYXNUb3BTY29w
ZSA9IG1fY29kZUJsb2NrLT5jb2RlVHlwZSgpID09IEZ1bmN0aW9uQ29kZSAmJiBtX2lubGluZVN0
YWNrVG9wLT5tX2NvZGVCbG9jay0+bmVlZHNGdWxsU2NvcGVDaGFpbigpOworICAgICAgICAgICAg
QVNTRVJUKCFoYXNUb3BTY29wZSB8fCBkZXB0aCA+PSAxKTsKKyAgICAgICAgICAgIE5vZGUqIHNj
b3BlID0gZ2V0U2NvcGUoaGFzVG9wU2NvcGUsIGRlcHRoIC0gaGFzVG9wU2NvcGUpOworICAgICAg
ICAgICAgTm9kZSogc2NvcGVSZWdpc3RlcnMgPSBhZGRUb0dyYXBoKEdldFNjb3BlUmVnaXN0ZXJz
LCBzY29wZSk7CisgICAgICAgICAgICBhZGRUb0dyYXBoKFB1dFNjb3BlZFZhciwgT3BJbmZvKHNs
b3QpLCBzY29wZSwgc2NvcGVSZWdpc3RlcnMsIGdldChzb3VyY2UpKTsKKyAgICAgICAgICAgIE5F
WFRfT1BDT0RFKG9wX3B1dF9zY29wZWRfdmFyKTsKKyAgICAgICAgfQorCiAgICAgICAgIGNhc2Ug
b3BfcmVzb2x2ZToKICAgICAgICAgY2FzZSBvcF9yZXNvbHZlX2dsb2JhbF9wcm9wZXJ0eToKICAg
ICAgICAgY2FzZSBvcF9yZXNvbHZlX2dsb2JhbF92YXI6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKaW5kZXggOTYyNTRhM2Q0OTJkMDFjMTMyYzY2ZjI3
MGM2MDEwNTA0MGM3ODg1MC4uOGZjY2I4MDRiMjhkMWM0ZTZiMWJmOGYzM2FlNjdjMmE4MzczNGMy
ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcApA
QCAtODUsNyArODUsNiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZGVidWdGYWlsKENvZGVCbG9jayog
Y29kZUJsb2NrLCBPcGNvZGVJRCBvcGNvZGVJRCwgQ2FwYWJpbGl0eQogICAgIGlmIChyZXN1bHQg
PT0gQ2Fubm90Q29tcGlsZSkKICAgICAgICAgZGF0YUxvZ0YoIkNhbm5vdCBoYW5kbGUgY29kZSBi
bG9jayAlcCBiZWNhdXNlIG9mIG9wY29kZSAlcy5cbiIsIGNvZGVCbG9jaywgb3Bjb2RlTmFtZXNb
b3Bjb2RlSURdKTsKICAgICBlbHNlIHsKLSAgICAgICAgQVNTRVJUKHJlc3VsdCA9PSBTaG91bGRQ
cm9maWxlKTsKICAgICAgICAgZGF0YUxvZ0YoIkNhbm5vdCBjb21waWxlIGNvZGUgYmxvY2sgJXAg
YmVjYXVzZSBvZiBvcGNvZGUgJXMsIGJ1dCBpbmxpbmluZyBtaWdodCBiZSBwb3NzaWJsZS5cbiIs
IGNvZGVCbG9jaywgb3Bjb2RlTmFtZXNbb3Bjb2RlSURdKTsKICAgICB9CiAjZWxzZQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmgKaW5kZXggNjA2NGUzZWYxZTc0
NGM1ZjI4YWNhNzYyZTQ4MTkyYmRhMDczYWY1ZC4uMjYxM2Q0MmE3NzBkYTc5ODRiMTI4ZGFiNjNk
MzRmOGRmZDAxOGUzYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
YXBhYmlsaXRpZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxp
dGllcy5oCkBAIC0yMDMsNiArMjAzLDEwIEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29t
cGlsZU9wY29kZShPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiwgSW5zdHJ1Y3RpCiAgICAg
Y2FzZSBvcF9yZXNvbHZlX3Njb3BlZF92YXJfd2l0aF90b3Bfc2NvcGVfY2hlY2s6CiAgICAgICAg
IHJldHVybiBDYW5Db21waWxlOwogCisgICAgY2FzZSBvcF9nZXRfc2NvcGVkX3ZhcjoKKyAgICBj
YXNlIG9wX3B1dF9zY29wZWRfdmFyOgorICAgICAgICByZXR1cm4gQ2FuQ29tcGlsZTsKKwogICAg
IGNhc2Ugb3BfcmVzb2x2ZV9iYXNlX3RvX2dsb2JhbDoKICAgICBjYXNlIG9wX3Jlc29sdmVfYmFz
ZV90b19nbG9iYWxfZHluYW1pYzoKICAgICBjYXNlIG9wX3Jlc29sdmVfYmFzZV90b19zY29wZToK
QEAgLTIzNiw3ICsyNDAsMTEgQEAgaW5saW5lIGJvb2wgY2FuSW5saW5lT3Bjb2RlKE9wY29kZUlE
IG9wY29kZUlELCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb24KICAgICBjYXNlIG9w
X3Jlc29sdmVfd2l0aF9iYXNlOgogICAgIGNhc2Ugb3BfcmVzb2x2ZV93aXRoX3RoaXM6CiAgICAg
ICAgIHJldHVybiBjYW5JbmxpbmVSZXNvbHZlT3BlcmF0aW9ucyhwY1s0XS51LnJlc29sdmVPcGVy
YXRpb25zKTsKLSAgICAgICAgCisKKyAgICBjYXNlIG9wX2dldF9zY29wZWRfdmFyOgorICAgIGNh
c2Ugb3BfcHV0X3Njb3BlZF92YXI6CisgICAgICAgIHJldHVybiAhY29kZUJsb2NrLT5uZWVkc0Z1
bGxTY29wZUNoYWluKCk7CisKICAgICAvLyBJbmxpbmluZyBkb2Vzbid0IGNvcnJlY3RseSByZW1h
cCByZWd1bGFyIGV4cHJlc3Npb24gb3BlcmFuZHMuCiAgICAgY2FzZSBvcF9uZXdfcmVnZXhwOgog
ICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRleCAyZThmY2VkM2QyMzgxZDcw
MDNhNzU4MGU1ODc1YmZlNjQ1MTMxZDkzLi44M2JmYTkwOTJkNmVmNjM5ZDBmNDc4OWRiOTJkNDgx
NDJkNDYwMGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC0zOTAsNiArMzkwLDkg
QEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Ao
b3BfdG9fanNudW1iZXIpCiAgICAgICAgIERFRklORV9PUChvcF90b19wcmltaXRpdmUpCiAKKyAg
ICAgICAgREVGSU5FX09QKG9wX2dldF9zY29wZWRfdmFyKQorICAgICAgICBERUZJTkVfT1Aob3Bf
cHV0X3Njb3BlZF92YXIpCisKICAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWRfY2hhaW46CiAgICAg
ICAgIGNhc2Ugb3BfZ2V0X2J5X2lkX2dlbmVyaWM6CiAgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lk
X3Byb3RvOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXggYzBjM2M0NzkzZjMwZTQwZDE5NmE1
YWFlMmVhYjQ0NzM5Y2Y4ZTkzYS4uODIwNmQwNDA4NWJmZTk2YmVmNmJlMTE1MGNkN2IzYmFjNmU5
YjA5ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC03NTYsNiArNzU2LDggQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdF9vcF90b19wcmltaXRpdmUoSW5zdHJ1Y3Rpb24q
KTsKICAgICAgICAgdm9pZCBlbWl0X29wX3VuZXhwZWN0ZWRfbG9hZChJbnN0cnVjdGlvbiopOwog
ICAgICAgICB2b2lkIGVtaXRfb3BfdXJzaGlmdChJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lk
IGVtaXRfb3BfZ2V0X3Njb3BlZF92YXIoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0
X29wX3B1dF9zY29wZWRfdmFyKEluc3RydWN0aW9uKik7CiAKICAgICAgICAgdm9pZCBlbWl0U2xv
d19vcF9hZGQoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7
CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfYml0YW5kKEluc3RydWN0aW9uKiwgVmVjdG9yPFNs
b3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVFByb3BlcnR5QWNjZXNzLmNwcAppbmRleCBkZjFlZmQ4ZjE3MjFiZmQwM2I4N2JjNmIxNmY4
MGVjZTlmZWFiYTRkLi4xM2RmZmEyMmE2YWQwZmFhMzAyMzQ0NjI4MjYyYmQ0OWJiZmJhMGFmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcApA
QCAtMTIwNCw2ICsxMjA0LDU0IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFp
bihTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFN0cnVjdHVyZSogc3RyCiAgICAgcmVwYXRj
aEJ1ZmZlci5yZWxpbmtDYWxsZXJUb0Z1bmN0aW9uKHJldHVybkFkZHJlc3MsIEZ1bmN0aW9uUHRy
KGN0aV9vcF9nZXRfYnlfaWRfcHJvdG9fbGlzdCkpOwogfQogCit2b2lkIEpJVDo6ZW1pdF9vcF9n
ZXRfc2NvcGVkX3ZhcihJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIGlu
dCBza2lwID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKKworICAgIGVtaXRHZXRG
cm9tQ2FsbEZyYW1lSGVhZGVyUHRyKEpTU3RhY2s6OlNjb3BlQ2hhaW4sIHJlZ1QwKTsKKyAgICBi
b29sIGNoZWNrVG9wTGV2ZWwgPSBtX2NvZGVCbG9jay0+Y29kZVR5cGUoKSA9PSBGdW5jdGlvbkNv
ZGUgJiYgbV9jb2RlQmxvY2stPm5lZWRzRnVsbFNjb3BlQ2hhaW4oKTsKKyAgICBBU1NFUlQoc2tp
cCB8fCAhY2hlY2tUb3BMZXZlbCk7CisgICAgaWYgKGNoZWNrVG9wTGV2ZWwgJiYgc2tpcC0tKSB7
CisgICAgICAgIEp1bXAgYWN0aXZhdGlvbk5vdENyZWF0ZWQ7CisgICAgICAgIGlmIChjaGVja1Rv
cExldmVsKQorICAgICAgICAgICAgYWN0aXZhdGlvbk5vdENyZWF0ZWQgPSBicmFuY2hUZXN0UHRy
KFplcm8sIGFkZHJlc3NGb3IobV9jb2RlQmxvY2stPmFjdGl2YXRpb25SZWdpc3RlcigpKSk7Cisg
ICAgICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNTY29wZTo6b2Zmc2V0T2ZOZXh0KCkpLCBy
ZWdUMCk7CisgICAgICAgIGFjdGl2YXRpb25Ob3RDcmVhdGVkLmxpbmsodGhpcyk7CisgICAgfQor
ICAgIHdoaWxlIChza2lwLS0pCisgICAgICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNTY29w
ZTo6b2Zmc2V0T2ZOZXh0KCkpLCByZWdUMCk7CisKKyAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAs
IEpTVmFyaWFibGVPYmplY3Q6Om9mZnNldE9mUmVnaXN0ZXJzKCkpLCByZWdUMCk7CisgICAgbG9h
ZFB0cihBZGRyZXNzKHJlZ1QwLCBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kICogc2l6
ZW9mKFJlZ2lzdGVyKSksIHJlZ1QwKTsKKyAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKCk7Cisg
ICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5k
KTsKK30KKwordm9pZCBKSVQ6OmVtaXRfb3BfcHV0X3Njb3BlZF92YXIoSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBpbnQgc2tpcCA9IGN1cnJlbnRJbnN0cnVjdGlvblsy
XS51Lm9wZXJhbmQ7CisKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVj
dGlvblszXS51Lm9wZXJhbmQsIHJlZ1QwKTsKKworICAgIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVh
ZGVyUHRyKEpTU3RhY2s6OlNjb3BlQ2hhaW4sIHJlZ1QxKTsKKyAgICBib29sIGNoZWNrVG9wTGV2
ZWwgPSBtX2NvZGVCbG9jay0+Y29kZVR5cGUoKSA9PSBGdW5jdGlvbkNvZGUgJiYgbV9jb2RlQmxv
Y2stPm5lZWRzRnVsbFNjb3BlQ2hhaW4oKTsKKyAgICBBU1NFUlQoc2tpcCB8fCAhY2hlY2tUb3BM
ZXZlbCk7CisgICAgaWYgKGNoZWNrVG9wTGV2ZWwgJiYgc2tpcC0tKSB7CisgICAgICAgIEp1bXAg
YWN0aXZhdGlvbk5vdENyZWF0ZWQ7CisgICAgICAgIGlmIChjaGVja1RvcExldmVsKQorICAgICAg
ICAgICAgYWN0aXZhdGlvbk5vdENyZWF0ZWQgPSBicmFuY2hUZXN0UHRyKFplcm8sIGFkZHJlc3NG
b3IobV9jb2RlQmxvY2stPmFjdGl2YXRpb25SZWdpc3RlcigpKSk7CisgICAgICAgIGxvYWRQdHIo
QWRkcmVzcyhyZWdUMSwgSlNTY29wZTo6b2Zmc2V0T2ZOZXh0KCkpLCByZWdUMSk7CisgICAgICAg
IGFjdGl2YXRpb25Ob3RDcmVhdGVkLmxpbmsodGhpcyk7CisgICAgfQorICAgIHdoaWxlIChza2lw
LS0pCisgICAgICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMSwgSlNTY29wZTo6b2Zmc2V0T2ZOZXh0
KCkpLCByZWdUMSk7CisKKyAgICBlbWl0V3JpdGVCYXJyaWVyKHJlZ1QxLCByZWdUMCwgcmVnVDIs
IHJlZ1QzLCBTaG91bGRGaWx0ZXJJbW1lZGlhdGVzLCBXcml0ZUJhcnJpZXJGb3JWYXJpYWJsZUFj
Y2Vzcyk7CisKKyAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDEsIEpTVmFyaWFibGVPYmplY3Q6Om9m
ZnNldE9mUmVnaXN0ZXJzKCkpLCByZWdUMSk7CisgICAgc3RvcmVQdHIocmVnVDAsIEFkZHJlc3Mo
cmVnVDEsIGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQgKiBzaXplb2YoUmVnaXN0ZXIp
KSk7Cit9CisKIHZvaWQgSklUOjplbWl0X29wX2luaXRfZ2xvYmFsX2NvbnN0KEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCA9IG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCmluZGV4IDVkOTQ1OTk1MTM3
OWUzNjEzZTcwZjM0NDcyOTMzZmU3ZmY0OTU0MTcuLjUyYWYwY2I1ZGJjYzliMWIzOWIzNzUwZmM5
ZjM2NWEwOWNiOWE0ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
UHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcApAQCAtMTI0NCw2ICsxMjQ0LDU5IEBAIHZvaWQgSklU
OjplbWl0U2xvd19vcF9nZXRfYnlfcG5hbWUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
biwgVmVjdG9yPFNsb3dDCiAgICAgc3R1YkNhbGwuY2FsbChkc3QpOwogfQogCit2b2lkIEpJVDo6
ZW1pdF9vcF9nZXRfc2NvcGVkX3ZhcihJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQor
eworICAgIGludCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworICAgIGlu
dCBpbmRleCA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CisgICAgaW50IHNraXAg
PSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOworCisgICAgZW1pdEdldEZyb21DYWxs
RnJhbWVIZWFkZXJQdHIoSlNTdGFjazo6U2NvcGVDaGFpbiwgcmVnVDIpOworICAgIGJvb2wgY2hl
Y2tUb3BMZXZlbCA9IG1fY29kZUJsb2NrLT5jb2RlVHlwZSgpID09IEZ1bmN0aW9uQ29kZSAmJiBt
X2NvZGVCbG9jay0+bmVlZHNGdWxsU2NvcGVDaGFpbigpOworICAgIEFTU0VSVChza2lwIHx8ICFj
aGVja1RvcExldmVsKTsKKyAgICBpZiAoY2hlY2tUb3BMZXZlbCAmJiBza2lwLS0pIHsKKyAgICAg
ICAgSnVtcCBhY3RpdmF0aW9uTm90Q3JlYXRlZDsKKyAgICAgICAgaWYgKGNoZWNrVG9wTGV2ZWwp
CisgICAgICAgICAgICBhY3RpdmF0aW9uTm90Q3JlYXRlZCA9IGJyYW5jaDMyKEVxdWFsLCB0YWdG
b3IobV9jb2RlQmxvY2stPmFjdGl2YXRpb25SZWdpc3RlcigpKSwgVHJ1c3RlZEltbTMyKEpTVmFs
dWU6OkVtcHR5VmFsdWVUYWcpKTsKKyAgICAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QyLCBKU1Nj
b3BlOjpvZmZzZXRPZk5leHQoKSksIHJlZ1QyKTsKKyAgICAgICAgYWN0aXZhdGlvbk5vdENyZWF0
ZWQubGluayh0aGlzKTsKKyAgICB9CisgICAgd2hpbGUgKHNraXAtLSkKKyAgICAgICAgbG9hZFB0
cihBZGRyZXNzKHJlZ1QyLCBKU1Njb3BlOjpvZmZzZXRPZk5leHQoKSksIHJlZ1QyKTsKKworICAg
IGxvYWRQdHIoQWRkcmVzcyhyZWdUMiwgSlNWYXJpYWJsZU9iamVjdDo6b2Zmc2V0T2ZSZWdpc3Rl
cnMoKSksIHJlZ1QyKTsKKworICAgIGVtaXRMb2FkKGluZGV4LCByZWdUMSwgcmVnVDAsIHJlZ1Qy
KTsKKyAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKCk7CisgICAgZW1pdFN0b3JlKGRzdCwgcmVn
VDEsIHJlZ1QwKTsKKyAgICBtYXAobV9ieXRlY29kZU9mZnNldCArIE9QQ09ERV9MRU5HVEgob3Bf
Z2V0X3Njb3BlZF92YXIpLCBkc3QsIHJlZ1QxLCByZWdUMCk7Cit9CisKK3ZvaWQgSklUOjplbWl0
X29wX3B1dF9zY29wZWRfdmFyKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7Cisg
ICAgaW50IGluZGV4ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKKyAgICBpbnQg
c2tpcCA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CisgICAgaW50IHZhbHVlID0g
Y3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKKworICAgIGVtaXRMb2FkKHZhbHVlLCBy
ZWdUMSwgcmVnVDApOworCisgICAgZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoSlNTdGFj
azo6U2NvcGVDaGFpbiwgcmVnVDIpOworICAgIGJvb2wgY2hlY2tUb3BMZXZlbCA9IG1fY29kZUJs
b2NrLT5jb2RlVHlwZSgpID09IEZ1bmN0aW9uQ29kZSAmJiBtX2NvZGVCbG9jay0+bmVlZHNGdWxs
U2NvcGVDaGFpbigpOworICAgIEFTU0VSVChza2lwIHx8ICFjaGVja1RvcExldmVsKTsKKyAgICBp
ZiAoY2hlY2tUb3BMZXZlbCAmJiBza2lwLS0pIHsKKyAgICAgICAgSnVtcCBhY3RpdmF0aW9uTm90
Q3JlYXRlZDsKKyAgICAgICAgaWYgKGNoZWNrVG9wTGV2ZWwpCisgICAgICAgICAgICBhY3RpdmF0
aW9uTm90Q3JlYXRlZCA9IGJyYW5jaDMyKEVxdWFsLCB0YWdGb3IobV9jb2RlQmxvY2stPmFjdGl2
YXRpb25SZWdpc3RlcigpKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkVtcHR5VmFsdWVUYWcpKTsK
KyAgICAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QyLCBKU1Njb3BlOjpvZmZzZXRPZk5leHQoKSks
IHJlZ1QyKTsKKyAgICAgICAgYWN0aXZhdGlvbk5vdENyZWF0ZWQubGluayh0aGlzKTsKKyAgICB9
CisgICAgd2hpbGUgKHNraXAtLSkKKyAgICAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QyLCBKU1Nj
b3BlOjpvZmZzZXRPZk5leHQoKSksIHJlZ1QyKTsKKworICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdU
MiwgSlNWYXJpYWJsZU9iamVjdDo6b2Zmc2V0T2ZSZWdpc3RlcnMoKSksIHJlZ1QzKTsKKyAgICBl
bWl0U3RvcmUoaW5kZXgsIHJlZ1QxLCByZWdUMCwgcmVnVDMpOworICAgIGVtaXRXcml0ZUJhcnJp
ZXIocmVnVDIsIHJlZ1QxLCByZWdUMCwgcmVnVDEsIFNob3VsZEZpbHRlckltbWVkaWF0ZXMsIFdy
aXRlQmFycmllckZvclZhcmlhYmxlQWNjZXNzKTsKK30KKwogdm9pZCBKSVQ6OmVtaXRfb3BfaW5p
dF9nbG9iYWxfY29uc3QoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBX
cml0ZUJhcnJpZXI8VW5rbm93bj4qIHJlZ2lzdGVyUG9pbnRlciA9IGN1cnJlbnRJbnN0cnVjdGlv
blsxXS51LnJlZ2lzdGVyUG9pbnRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KaW5kZXggNWJiZmIyMjQxNjRk
NjljZGQ4YjI2ZDY2MmI5M2RiNWFjODhjNmZiYS4uNTlmNjBlNWY0MTNhOWU3ODNlMTAzYTNhOTZl
ZWUwODJhZjk2OWE5ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KQEAgLTE3ODEsNiArMTc4MSw3MSBAQCBf
bGxpbnRfb3BfY2F0Y2g6CiAgICAgZGlzcGF0Y2goMikKIAogCisjIEdpdmVzIHlvdSB0aGUgc2Nv
cGUgaW4gdDAsIHdoaWxlIGFsbG93aW5nIHlvdSB0byBvcHRpb25hbGx5IHBlcmZvcm0gYWRkaXRp
b25hbCBjaGVja3Mgb24gdGhlCisjIHNjb3BlcyBhcyB0aGV5IGFyZSB0cmF2ZXJzZWQuIHNjb3Bl
Q2hlY2soKSBpcyBjYWxsZWQgd2l0aCB0d28gYXJndW1lbnRzOiB0aGUgcmVnaXN0ZXIKKyMgaG9s
ZGluZyB0aGUgc2NvcGUsIGFuZCBhIHJlZ2lzdGVyIHRoYXQgY2FuIGJlIHVzZWQgZm9yIHNjcmF0
Y2guIE5vdGUgdGhhdCB0aGlzIGRvZXMgbm90CisjIHVzZSB0Mywgc28geW91IGNhbiBob2xkIHN0
dWZmIGluIHQzIGlmIG5lZWQgYmUuCittYWNybyBnZXREZUJydWlqblNjb3BlKGRlQnJ1aWppbklu
ZGV4T3BlcmFuZCwgc2NvcGVDaGVjaykKKyAgICBsb2FkcCBTY29wZUNoYWluICsgUGF5bG9hZE9m
ZnNldFtjZnJdLCB0MAorICAgIGxvYWRpIGRlQnJ1aWppbkluZGV4T3BlcmFuZCwgdDIKKworICAg
IGJ0aXogdDIsIC5kb25lCisKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDEKKyAgICBiaW5l
cSBDb2RlQmxvY2s6Om1fY29kZVR5cGVbdDFdLCBGdW5jdGlvbkNvZGUsIC5sb29wCisgICAgYnRi
eiBDb2RlQmxvY2s6Om1fbmVlZHNGdWxsU2NvcGVDaGFpblt0MV0sIC5sb29wCisKKyAgICBsb2Fk
aSBDb2RlQmxvY2s6Om1fYWN0aXZhdGlvblJlZ2lzdGVyW3QxXSwgdDEKKworICAgICMgTmVlZCB0
byBjb25kaXRpb25hbGx5IHNraXAgb3ZlciBvbmUgc2NvcGUuCisgICAgYmllcSBUYWdPZmZzZXRb
Y2ZyLCB0MSwgOF0sIEVtcHR5VmFsdWVUYWcsIC5ub0FjdGl2YXRpb24KKyAgICBzY29wZUNoZWNr
KHQwLCB0MSkKKyAgICBsb2FkcCBKU1Njb3BlOjptX25leHRbdDBdLCB0MAorLm5vQWN0aXZhdGlv
bjoKKyAgICBzdWJpIDEsIHQyCisKKyAgICBidGl6IHQyLCAuZG9uZQorLmxvb3A6CisgICAgc2Nv
cGVDaGVjayh0MCwgdDEpCisgICAgbG9hZHAgSlNTY29wZTo6bV9uZXh0W3QwXSwgdDAKKyAgICBz
dWJpIDEsIHQyCisgICAgYnRpbnogdDIsIC5sb29wCisKKy5kb25lOgorCitlbmQKKworX2xsaW50
X29wX2dldF9zY29wZWRfdmFyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICAjIE9wZXJhbmRz
IGFyZSBhcyBmb2xsb3dzOgorICAgICMgNFtQQ10gICBEZXN0aW5hdGlvbiBmb3IgdGhlIGxvYWQu
CisgICAgIyA4W1BDXSAgIEluZGV4IG9mIHJlZ2lzdGVyIGluIHRoZSBzY29wZS4KKyAgICAjIDEy
W1BDXSAgRGUgQnJ1aWppbiBpbmRleC4KKyAgICBnZXREZUJydWlqblNjb3BlKDEyW1BDXSwgbWFj
cm8gKHNjb3BlLCBzY3JhdGNoKSBlbmQpCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgbG9hZGkg
OFtQQ10sIHQyCisgICAgbG9hZHAgSlNWYXJpYWJsZU9iamVjdDo6bV9yZWdpc3RlcnNbdDBdLCB0
MAorICAgIGxvYWRpIFRhZ09mZnNldFt0MCwgdDIsIDhdLCB0MworICAgIGxvYWRpIFBheWxvYWRP
ZmZzZXRbdDAsIHQyLCA4XSwgdDAKKyAgICBzdG9yZWkgdDMsIFRhZ09mZnNldFtjZnIsIHQxLCA4
XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIGxvYWRpIDE2
W1BDXSwgdDEKKyAgICB2YWx1ZVByb2ZpbGUodDMsIHQwLCB0MSkKKyAgICBkaXNwYXRjaCg1KQor
CisKK19sbGludF9vcF9wdXRfc2NvcGVkX3ZhcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
Z2V0RGVCcnVpam5TY29wZSg4W1BDXSwgbWFjcm8gKHNjb3BlLCBzY3JhdGNoKSBlbmQpCisgICAg
bG9hZGkgMTJbUENdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDEsIHQzLCB0MikK
KyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICB3cml0ZUJhcnJpZXIodDMsIHQyKQorICAgIGxvYWRw
IEpTVmFyaWFibGVPYmplY3Q6Om1fcmVnaXN0ZXJzW3QwXSwgdDAKKyAgICBzdG9yZWkgdDMsIFRh
Z09mZnNldFt0MCwgdDEsIDhdCisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W3QwLCB0MSwg
OF0KKyAgICBkaXNwYXRjaCg0KQorCiBfbGxpbnRfb3BfZW5kOgogICAgIHRyYWNlRXhlY3V0aW9u
KCkKICAgICBjaGVja1N3aXRjaFRvSklURm9yRXBpbG9ndWUoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20gYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQppbmRleCA4MzUy
OTcxMTIwOTVlMzA5MGQxYjE4NmY2Y2I1ODg3MjExZDY4MTM1Li45MmY1Mzg4ZDMzYmJmNWNmNzQz
ZTE5NmI1NzJmMjMwMjYxOGI0ZTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQpAQCAtMTYzMiw2ICsxNjMyLDY3IEBA
IF9sbGludF90aHJvd19kdXJpbmdfY2FsbF90cmFtcG9saW5lOgogICAgIGxvYWRwIEpTR2xvYmFs
RGF0YTo6Y2FsbEZyYW1lRm9yVGhyb3dbdDFdLCB0MAogICAgIGptcCBKU0dsb2JhbERhdGE6OnRh
cmdldE1hY2hpbmVQQ0ZvclRocm93W3QxXQogCisjIEdpdmVzIHlvdSB0aGUgc2NvcGUgaW4gdDAs
IHdoaWxlIGFsbG93aW5nIHlvdSB0byBvcHRpb25hbGx5IHBlcmZvcm0gYWRkaXRpb25hbCBjaGVj
a3Mgb24gdGhlCisjIHNjb3BlcyBhcyB0aGV5IGFyZSB0cmF2ZXJzZWQuIHNjb3BlQ2hlY2soKSBp
cyBjYWxsZWQgd2l0aCB0d28gYXJndW1lbnRzOiB0aGUgcmVnaXN0ZXIKKyMgaG9sZGluZyB0aGUg
c2NvcGUsIGFuZCBhIHJlZ2lzdGVyIHRoYXQgY2FuIGJlIHVzZWQgZm9yIHNjcmF0Y2guIE5vdGUg
dGhhdCB0aGlzIGRvZXMgbm90CisjIHVzZSB0Mywgc28geW91IGNhbiBob2xkIHN0dWZmIGluIHQz
IGlmIG5lZWQgYmUuCittYWNybyBnZXREZUJydWlqblNjb3BlKGRlQnJ1aWppbkluZGV4T3BlcmFu
ZCwgc2NvcGVDaGVjaykKKyAgICBsb2FkcCBTY29wZUNoYWluW2Nmcl0sIHQwCisgICAgbG9hZGlz
IGRlQnJ1aWppbkluZGV4T3BlcmFuZCwgdDIKKworICAgIGJ0aXogdDIsIC5kb25lCisKKyAgICBs
b2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDEKKyAgICBiaW5lcSBDb2RlQmxvY2s6Om1fY29kZVR5cGVb
dDFdLCBGdW5jdGlvbkNvZGUsIC5sb29wCisgICAgYnRieiBDb2RlQmxvY2s6Om1fbmVlZHNGdWxs
U2NvcGVDaGFpblt0MV0sIC5sb29wCisKKyAgICBsb2FkaXMgQ29kZUJsb2NrOjptX2FjdGl2YXRp
b25SZWdpc3Rlclt0MV0sIHQxCisKKyAgICAjIE5lZWQgdG8gY29uZGl0aW9uYWxseSBza2lwIG92
ZXIgb25lIHNjb3BlLgorICAgIGJ0cHogW2NmciwgdDEsIDhdLCAubm9BY3RpdmF0aW9uCisgICAg
c2NvcGVDaGVjayh0MCwgdDEpCisgICAgbG9hZHAgSlNTY29wZTo6bV9uZXh0W3QwXSwgdDAKKy5u
b0FjdGl2YXRpb246CisgICAgc3ViaSAxLCB0MgorCisgICAgYnRpeiB0MiwgLmRvbmUKKy5sb29w
OgorICAgIHNjb3BlQ2hlY2sodDAsIHQxKQorICAgIGxvYWRwIEpTU2NvcGU6Om1fbmV4dFt0MF0s
IHQwCisgICAgc3ViaSAxLCB0MgorICAgIGJ0aW56IHQyLCAubG9vcAorCisuZG9uZToKK2VuZAor
CitfbGxpbnRfb3BfZ2V0X3Njb3BlZF92YXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgICMg
T3BlcmFuZHMgYXJlIGFzIGZvbGxvd3M6CisgICAgIyBwY1sxXTogRGVzdGluYXRpb24gZm9yIHRo
ZSBsb2FkCisgICAgIyBwY1syXTogSW5kZXggb2YgcmVnaXN0ZXIgaW4gdGhlIHNjb3BlCisgICAg
IyAyNFtQQiwgUEMsIDhdICBEZSBCcnVpamluIGluZGV4LgorICAgIGdldERlQnJ1aWpuU2NvcGUo
MjRbUEIsIFBDLCA4XSwgbWFjcm8gKHNjb3BlLCBzY3JhdGNoKSBlbmQpCisgICAgbG9hZGlzRnJv
bUluc3RydWN0aW9uKDEsIHQxKQorICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigyLCB0MikKKwor
ICAgIGxvYWRwIEpTVmFyaWFibGVPYmplY3Q6Om1fcmVnaXN0ZXJzW3QwXSwgdDAKKyAgICBsb2Fk
cCBbdDAsIHQyLCA4XSwgdDMKKyAgICBzdG9yZXAgdDMsIFtjZnIsIHQxLCA4XQorICAgIGxvYWRw
IDMyW1BCLCBQQywgOF0sIHQxCisgICAgdmFsdWVQcm9maWxlKHQzLCB0MSkKKyAgICBkaXNwYXRj
aCg1KQorCisKK19sbGludF9vcF9wdXRfc2NvcGVkX3ZhcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgZ2V0RGVCcnVpam5TY29wZSgxNltQQiwgUEMsIDhdLCBtYWNybyAoc2NvcGUsIHNjcmF0
Y2gpIGVuZCkKKyAgICBsb2FkaXMgMjRbUEIsIFBDLCA4XSwgdDEKKyAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlKHQxLCB0MykKKyAgICBsb2FkaXMgOFtQQiwgUEMsIDhdLCB0MQorICAgIHdyaXRl
QmFycmllcih0MykKKyAgICBsb2FkcCBKU1ZhcmlhYmxlT2JqZWN0OjptX3JlZ2lzdGVyc1t0MF0s
IHQwCisgICAgc3RvcmVwIHQzLCBbdDAsIHQxLCA4XQorICAgIGRpc3BhdGNoKDQpCiAKIG1hY3Jv
IG5hdGl2ZUNhbGxUcmFtcG9saW5lKGV4ZWN1dGFibGVPZmZzZXRUb0Z1bmN0aW9uKQogICAgIHN0
b3JlcCAwLCBDb2RlQmxvY2tbY2ZyXQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29kZUNhY2hlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
ZGVDYWNoZS5jcHAKaW5kZXggYTRiNjE5M2RjN2IxZDNkNDgzODhlMDM0YjcyOWQzYzE3MDIzZTMy
YS4uZmVjNjkwNTQ1YTVlMjMzOGNiN2I2NGI5MzVjOWE4ZmZiZmNkMDRiYiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCkBAIC02Niw3ICs2Niw3IEBAIHRl
bXBsYXRlIDw+IHN0cnVjdCBDYWNoZVR5cGVzPFVubGlua2VkRXZhbENvZGVCbG9jaz4gewogfTsK
IAogdGVtcGxhdGUgPGNsYXNzIFVubGlua2VkQ29kZUJsb2NrVHlwZSwgY2xhc3MgRXhlY3V0YWJs
ZVR5cGU+Ci1VbmxpbmtlZENvZGVCbG9ja1R5cGUqIENvZGVDYWNoZTo6Z2V0Q29kZUJsb2NrKEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgRXhlY3V0YWJsZVR5cGUqIGV4ZWN1dGFibGUsIGNvbnN0
IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNQYXJzZXJTdHJpY3RuZXNzIHN0cmljdG5lc3MsIERlYnVn
Z2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxlck1vZGUsIFBhcnNlckVy
cm9yJiBlcnJvcikKK1VubGlua2VkQ29kZUJsb2NrVHlwZSogQ29kZUNhY2hlOjpnZXRDb2RlQmxv
Y2soSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1Njb3BlKiBzY29wZSwgRXhlY3V0YWJsZVR5
cGUqIGV4ZWN1dGFibGUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNQYXJzZXJTdHJpY3Ru
ZXNzIHN0cmljdG5lc3MsIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSBw
cm9maWxlck1vZGUsIFBhcnNlckVycm9yJiBlcnJvcikKIHsKICAgICBTb3VyY2VDb2RlS2V5IGtl
eSA9IFNvdXJjZUNvZGVLZXkoc291cmNlLCBTdHJpbmcoKSwgQ2FjaGVUeXBlczxVbmxpbmtlZENv
ZGVCbG9ja1R5cGU+Ojpjb2RlVHlwZSwgc3RyaWN0bmVzcyk7CiAgICAgQ29kZUNhY2hlTWFwOjpB
ZGRSZXN1bHQgYWRkUmVzdWx0ID0gbV9zb3VyY2VDb2RlLmFkZChrZXksIFNvdXJjZUNvZGVWYWx1
ZSgpKTsKQEAgLTg4LDcgKzg4LDcgQEAgVW5saW5rZWRDb2RlQmxvY2tUeXBlKiBDb2RlQ2FjaGU6
OmdldENvZGVCbG9jayhKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEV4ZWN1dGEKIAogICAgIFVu
bGlua2VkQ29kZUJsb2NrVHlwZSogdW5saW5rZWRDb2RlID0gVW5saW5rZWRDb2RlQmxvY2tUeXBl
OjpjcmVhdGUoJmdsb2JhbERhdGEsIGV4ZWN1dGFibGUtPmV4ZWN1dGFibGVJbmZvKCkpOwogICAg
IHVubGlua2VkQ29kZS0+cmVjb3JkUGFyc2Uocm9vdE5vZGUtPmZlYXR1cmVzKCksIHJvb3ROb2Rl
LT5oYXNDYXB0dXJlZFZhcmlhYmxlcygpLCByb290Tm9kZS0+bGluZU5vKCkgLSBzb3VyY2UuZmly
c3RMaW5lKCksIHJvb3ROb2RlLT5sYXN0TGluZSgpIC0gcm9vdE5vZGUtPmxpbmVObygpKTsKLSAg
ICBPd25QdHI8Qnl0ZWNvZGVHZW5lcmF0b3I+IGdlbmVyYXRvcihhZG9wdFB0cihuZXcgQnl0ZWNv
ZGVHZW5lcmF0b3IoZ2xvYmFsRGF0YSwgcm9vdE5vZGUuZ2V0KCksIHVubGlua2VkQ29kZSwgZGVi
dWdnZXJNb2RlLCBwcm9maWxlck1vZGUpKSk7CisgICAgT3duUHRyPEJ5dGVjb2RlR2VuZXJhdG9y
PiBnZW5lcmF0b3IoYWRvcHRQdHIobmV3IEJ5dGVjb2RlR2VuZXJhdG9yKGdsb2JhbERhdGEsIHNj
b3BlLCByb290Tm9kZS5nZXQoKSwgdW5saW5rZWRDb2RlLCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVy
TW9kZSkpKTsKICAgICBlcnJvciA9IGdlbmVyYXRvci0+Z2VuZXJhdGUoKTsKICAgICByb290Tm9k
ZS0+ZGVzdHJveURhdGEoKTsKICAgICBpZiAoZXJyb3IubV90eXBlICE9IFBhcnNlckVycm9yOjpF
cnJvck5vbmUpIHsKQEAgLTEwNywxMiArMTA3LDEyIEBAIFVubGlua2VkQ29kZUJsb2NrVHlwZSog
Q29kZUNhY2hlOjpnZXRDb2RlQmxvY2soSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBFeGVjdXRh
CiAKIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jayogQ29kZUNhY2hlOjpnZXRQcm9ncmFtQ29kZUJs
b2NrKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvZ3JhbUV4ZWN1dGFibGUqIGV4ZWN1dGFi
bGUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNQYXJzZXJTdHJpY3RuZXNzIHN0cmljdG5l
c3MsIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxlck1vZGUs
IFBhcnNlckVycm9yJiBlcnJvcikKIHsKLSAgICByZXR1cm4gZ2V0Q29kZUJsb2NrPFVubGlua2Vk
UHJvZ3JhbUNvZGVCbG9jaz4oZ2xvYmFsRGF0YSwgZXhlY3V0YWJsZSwgc291cmNlLCBzdHJpY3Ru
ZXNzLCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSwgZXJyb3IpOworICAgIHJldHVybiBnZXRD
b2RlQmxvY2s8VW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrPihnbG9iYWxEYXRhLCAwLCBleGVjdXRh
YmxlLCBzb3VyY2UsIHN0cmljdG5lc3MsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBlcnJv
cik7CiB9CiAKLVVubGlua2VkRXZhbENvZGVCbG9jayogQ29kZUNhY2hlOjpnZXRFdmFsQ29kZUJs
b2NrKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgRXZhbEV4ZWN1dGFibGUqIGV4ZWN1dGFibGUs
IGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNQYXJzZXJTdHJpY3RuZXNzIHN0cmljdG5lc3Ms
IERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxlck1vZGUsIFBh
cnNlckVycm9yJiBlcnJvcikKK1VubGlua2VkRXZhbENvZGVCbG9jayogQ29kZUNhY2hlOjpnZXRF
dmFsQ29kZUJsb2NrKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNTY29wZSogc2NvcGUsIEV2
YWxFeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEpTUGFy
c2VyU3RyaWN0bmVzcyBzdHJpY3RuZXNzLCBEZWJ1Z2dlck1vZGUgZGVidWdnZXJNb2RlLCBQcm9m
aWxlck1vZGUgcHJvZmlsZXJNb2RlLCBQYXJzZXJFcnJvciYgZXJyb3IpCiB7Ci0gICAgcmV0dXJu
IGdldENvZGVCbG9jazxVbmxpbmtlZEV2YWxDb2RlQmxvY2s+KGdsb2JhbERhdGEsIGV4ZWN1dGFi
bGUsIHNvdXJjZSwgc3RyaWN0bmVzcywgZGVidWdnZXJNb2RlLCBwcm9maWxlck1vZGUsIGVycm9y
KTsKKyAgICByZXR1cm4gZ2V0Q29kZUJsb2NrPFVubGlua2VkRXZhbENvZGVCbG9jaz4oZ2xvYmFs
RGF0YSwgc2NvcGUsIGV4ZWN1dGFibGUsIHNvdXJjZSwgc3RyaWN0bmVzcywgZGVidWdnZXJNb2Rl
LCBwcm9maWxlck1vZGUsIGVycm9yKTsKIH0KIAogVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUq
IENvZGVDYWNoZTo6Z2V0RnVuY3Rpb25FeGVjdXRhYmxlRnJvbUdsb2JhbENvZGUoSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBjb25zdCBTb3VyY2VDb2Rl
JiBzb3VyY2UsIFBhcnNlckVycm9yJiBlcnJvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29kZUNhY2hlLmgKaW5kZXggOWFhZWJhMzhjZjBmYWU5MTQzMjZjMTE5NGY4NGU5Zjc1ZDE5
MzQ4NS4uNTYwNTUyZWZjNTdhN2E5MTBmMGU3OGQzMzY4MjFmYzM2MThkMWQ0MSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmgKQEAgLTQyLDYgKzQyLDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiBjbGFzcyBFdmFsRXhlY3V0YWJsZTsKIGNsYXNzIEZ1bmN0aW9uQm9keU5v
ZGU7CiBjbGFzcyBJZGVudGlmaWVyOworY2xhc3MgSlNTY29wZTsKIGNsYXNzIFByb2dyYW1FeGVj
dXRhYmxlOwogY2xhc3MgVW5saW5rZWRDb2RlQmxvY2s7CiBjbGFzcyBVbmxpbmtlZEV2YWxDb2Rl
QmxvY2s7CkBAIC0yMjAsNyArMjIxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRy
PENvZGVDYWNoZT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRQdHIobmV3IENvZGVDYWNoZSk7IH0K
IAogICAgIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jayogZ2V0UHJvZ3JhbUNvZGVCbG9jayhKU0ds
b2JhbERhdGEmLCBQcm9ncmFtRXhlY3V0YWJsZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU1BhcnNl
clN0cmljdG5lc3MsIERlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlLCBQYXJzZXJFcnJvciYpOwot
ICAgIFVubGlua2VkRXZhbENvZGVCbG9jayogZ2V0RXZhbENvZGVCbG9jayhKU0dsb2JhbERhdGEm
LCBFdmFsRXhlY3V0YWJsZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU1BhcnNlclN0cmljdG5lc3Ms
IERlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlLCBQYXJzZXJFcnJvciYpOworICAgIFVubGlua2Vk
RXZhbENvZGVCbG9jayogZ2V0RXZhbENvZGVCbG9jayhKU0dsb2JhbERhdGEmLCBKU1Njb3BlKiwg
RXZhbEV4ZWN1dGFibGUqLCBjb25zdCBTb3VyY2VDb2RlJiwgSlNQYXJzZXJTdHJpY3RuZXNzLCBE
ZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSwgUGFyc2VyRXJyb3ImKTsKICAgICBVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZSogZ2V0RnVuY3Rpb25FeGVjdXRhYmxlRnJvbUdsb2JhbENvZGUoSlNH
bG9iYWxEYXRhJiwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFNvdXJjZUNvZGUmLCBQYXJzZXJF
cnJvciYpOwogICAgIH5Db2RlQ2FjaGUoKTsKIApAQCAtMjMzLDcgKzIzNCw3IEBAIHByaXZhdGU6
CiAgICAgQ29kZUNhY2hlKCk7CiAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVW5saW5rZWRDb2RlQmxv
Y2tUeXBlLCBjbGFzcyBFeGVjdXRhYmxlVHlwZT4gCi0gICAgVW5saW5rZWRDb2RlQmxvY2tUeXBl
KiBnZXRDb2RlQmxvY2soSlNHbG9iYWxEYXRhJiwgRXhlY3V0YWJsZVR5cGUqLCBjb25zdCBTb3Vy
Y2VDb2RlJiwgSlNQYXJzZXJTdHJpY3RuZXNzLCBEZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSwg
UGFyc2VyRXJyb3ImKTsKKyAgICBVbmxpbmtlZENvZGVCbG9ja1R5cGUqIGdldENvZGVCbG9jayhK
U0dsb2JhbERhdGEmLCBKU1Njb3BlKiwgRXhlY3V0YWJsZVR5cGUqLCBjb25zdCBTb3VyY2VDb2Rl
JiwgSlNQYXJzZXJTdHJpY3RuZXNzLCBEZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSwgUGFyc2Vy
RXJyb3ImKTsKIAogICAgIENvZGVDYWNoZU1hcCBtX3NvdXJjZUNvZGU7CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAppbmRleCBmMjZjM2E2MGMyMWNk
NTBlM2UzYjVkMWM4YjY5ZWI1MTY4YWYwMDAxLi44YjU4YjYyYWEzZTM5YTM0N2ZhZTkyOTYxYWY2
OTQ4NGRlNzk1YTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
eGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRh
YmxlLmNwcApAQCAtMjExLDcgKzIxMSw3IEBAIEpTT2JqZWN0KiBFdmFsRXhlY3V0YWJsZTo6Y29t
cGlsZUludGVybmFsKEV4ZWNTdGF0ZSogZXhlYywgSlNTY29wZSogc2NvcGUsIEpJVENvCiAgICAg
ICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBjcmVhdGVFdmFsRXJyb3IoZXhlYywgbGV4
aWNhbEdsb2JhbE9iamVjdC0+ZXZhbERpc2FibGVkRXJyb3JNZXNzYWdlKCkpKTsKIAogICAgICAg
ICBKU09iamVjdCogZXhjZXB0aW9uID0gMDsKLSAgICAgICAgVW5saW5rZWRFdmFsQ29kZUJsb2Nr
KiB1bmxpbmtlZEV2YWxDb2RlID0gbGV4aWNhbEdsb2JhbE9iamVjdC0+Y3JlYXRlRXZhbENvZGVC
bG9jayhleGVjLCB0aGlzLCAmZXhjZXB0aW9uKTsKKyAgICAgICAgVW5saW5rZWRFdmFsQ29kZUJs
b2NrKiB1bmxpbmtlZEV2YWxDb2RlID0gbGV4aWNhbEdsb2JhbE9iamVjdC0+Y3JlYXRlRXZhbENv
ZGVCbG9jayhleGVjLCBzY29wZSwgdGhpcywgJmV4Y2VwdGlvbik7CiAgICAgICAgIGlmICghdW5s
aW5rZWRFdmFsQ29kZSkKICAgICAgICAgICAgIHJldHVybiBleGNlcHRpb247CiAKQEAgLTQ5OCw3
ICs0OTgsNyBAQCBQYXNzT3duUHRyPEZ1bmN0aW9uQ29kZUJsb2NrPiBGdW5jdGlvbkV4ZWN1dGFi
bGU6OnByb2R1Y2VDb2RlQmxvY2tGb3IoSlNTY29wZSogcwogICAgIFBhcnNlckVycm9yIGVycm9y
OwogICAgIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUgPSBnbG9iYWxPYmplY3QtPmhhc0RlYnVn
Z2VyKCkgPyBEZWJ1Z2dlck9uIDogRGVidWdnZXJPZmY7CiAgICAgUHJvZmlsZXJNb2RlIHByb2Zp
bGVyTW9kZSA9IGdsb2JhbE9iamVjdC0+aGFzUHJvZmlsZXIoKSA/IFByb2ZpbGVyT24gOiBQcm9m
aWxlck9mZjsKLSAgICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9j
ayA9IG1fdW5saW5rZWRFeGVjdXRhYmxlLT5jb2RlQmxvY2tGb3IoKmdsb2JhbERhdGEsIG1fc291
cmNlLCBzcGVjaWFsaXphdGlvbktpbmQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBlcnJv
cik7CisgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2sgPSBt
X3VubGlua2VkRXhlY3V0YWJsZS0+Y29kZUJsb2NrRm9yKCpnbG9iYWxEYXRhLCBzY29wZSwgbV9z
b3VyY2UsIHNwZWNpYWxpemF0aW9uS2luZCwgZGVidWdnZXJNb2RlLCBwcm9maWxlck1vZGUsIGVy
cm9yKTsKICAgICByZWNvcmRQYXJzZShtX3VubGlua2VkRXhlY3V0YWJsZS0+ZmVhdHVyZXMoKSwg
bV91bmxpbmtlZEV4ZWN1dGFibGUtPmhhc0NhcHR1cmVkVmFyaWFibGVzKCksIGxpbmVObygpLCBs
YXN0TGluZSgpKTsKIAogICAgIGlmICghdW5saW5rZWRDb2RlQmxvY2spIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCBmODFhOWY1
NDRhZjlkNzJjZWExODg2ZDFmZDI4OWIwOTYwYTY3YzJmLi5jMGUxNTRlY2MzZmZhYjg4NjNlNjUz
ZmIzZWQ1MWQxNGM2ZGM1YmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC02MTQsMTMgKzYxNCwxMyBAQCBVbmxpbmtlZFByb2dy
YW1Db2RlQmxvY2sqIEpTR2xvYmFsT2JqZWN0OjpjcmVhdGVQcm9ncmFtQ29kZUJsb2NrKENhbGxG
cmFtZSogY2FsbAogICAgIHJldHVybiB1bmxpbmtlZENvZGU7CiB9CiAKLVVubGlua2VkRXZhbENv
ZGVCbG9jayogSlNHbG9iYWxPYmplY3Q6OmNyZWF0ZUV2YWxDb2RlQmxvY2soQ2FsbEZyYW1lKiBj
YWxsRnJhbWUsIEV2YWxFeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU09iamVjdCoqIGV4Y2VwdGlv
bikKK1VubGlua2VkRXZhbENvZGVCbG9jayogSlNHbG9iYWxPYmplY3Q6OmNyZWF0ZUV2YWxDb2Rl
QmxvY2soQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTU2NvcGUqIHNjb3BlLCBFdmFsRXhlY3V0YWJs
ZSogZXhlY3V0YWJsZSwgSlNPYmplY3QqKiBleGNlcHRpb24pCiB7CiAgICAgUGFyc2VyRXJyb3Ig
ZXJyb3I7CiAgICAgSlNQYXJzZXJTdHJpY3RuZXNzIHN0cmljdG5lc3MgPSBleGVjdXRhYmxlLT5p
c1N0cmljdE1vZGUoKSA/IEpTUGFyc2VTdHJpY3QgOiBKU1BhcnNlTm9ybWFsOwogICAgIERlYnVn
Z2VyTW9kZSBkZWJ1Z2dlck1vZGUgPSBoYXNEZWJ1Z2dlcigpID8gRGVidWdnZXJPbiA6IERlYnVn
Z2VyT2ZmOwogICAgIFByb2ZpbGVyTW9kZSBwcm9maWxlck1vZGUgPSBoYXNQcm9maWxlcigpID8g
UHJvZmlsZXJPbiA6IFByb2ZpbGVyT2ZmOwotICAgIFVubGlua2VkRXZhbENvZGVCbG9jayogdW5s
aW5rZWRDb2RlID0gZ2xvYmFsRGF0YSgpLmNvZGVDYWNoZSgpLT5nZXRFdmFsQ29kZUJsb2NrKGds
b2JhbERhdGEoKSwgZXhlY3V0YWJsZSwgZXhlY3V0YWJsZS0+c291cmNlKCksIHN0cmljdG5lc3Ms
IGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBlcnJvcik7CisgICAgVW5saW5rZWRFdmFsQ29k
ZUJsb2NrKiB1bmxpbmtlZENvZGUgPSBnbG9iYWxEYXRhKCkuY29kZUNhY2hlKCktPmdldEV2YWxD
b2RlQmxvY2soZ2xvYmFsRGF0YSgpLCBzY29wZSwgZXhlY3V0YWJsZSwgZXhlY3V0YWJsZS0+c291
cmNlKCksIHN0cmljdG5lc3MsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBlcnJvcik7CiAK
ICAgICBpZiAoaGFzRGVidWdnZXIoKSkKICAgICAgICAgZGVidWdnZXIoKS0+c291cmNlUGFyc2Vk
KGNhbGxGcmFtZSwgZXhlY3V0YWJsZS0+c291cmNlKCkucHJvdmlkZXIoKSwgZXJyb3IubV9saW5l
LCBlcnJvci5tX21lc3NhZ2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmgKaW5kZXggMjA0YjZjZGEyMjJjMWM2Mzc2NmRmM2I4Y2FkMmY3ZDBjODlk
NjA2ZC4uZTUyNTBhMzlkYzIzZGU0MDJkOTJhYmFmYzE3NTRhYzQzN2NkOTQ5NCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC0zOTAsNyAr
MzkwLDcgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIHdlYWtSYW5kb21JbnRlZ2VyKCkgeyByZXR1
cm4gbV93ZWFrUmFuZG9tLmdldFVpbnQzMigpOyB9CiAKICAgICBVbmxpbmtlZFByb2dyYW1Db2Rl
QmxvY2sqIGNyZWF0ZVByb2dyYW1Db2RlQmxvY2soQ2FsbEZyYW1lKiwgUHJvZ3JhbUV4ZWN1dGFi
bGUqLCBKU09iamVjdCoqIGV4Y2VwdGlvbik7Ci0gICAgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiBj
cmVhdGVFdmFsQ29kZUJsb2NrKENhbGxGcmFtZSosIEV2YWxFeGVjdXRhYmxlKiwgSlNPYmplY3Qq
KiBleGNlcHRpb24pOworICAgIFVubGlua2VkRXZhbENvZGVCbG9jayogY3JlYXRlRXZhbENvZGVC
bG9jayhDYWxsRnJhbWUqLCBKU1Njb3BlKiwgRXZhbEV4ZWN1dGFibGUqLCBKU09iamVjdCoqIGV4
Y2VwdGlvbik7CiAKIHByb3RlY3RlZDoKIAo=
</data>
<flag name="review"
          id="212870"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>