<?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>240407</bug_id>
          
          <creation_ts>2022-05-13 17:14:46 -0700</creation_ts>
          <short_desc>Shrink Structure to 96 Bytes when addresses can be encoded in 36-bits.</short_desc>
          <delta_ts>2022-05-31 10:50:40 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P1</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>233231</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yijia Huang">yijia_huang</reporter>
          <assigned_to name="Yijia Huang">yijia_huang</assigned_to>
          <cc>annulen</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>justin_michaud</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1868929</commentid>
    <comment_count>0</comment_count>
    <who name="Yijia Huang">yijia_huang</who>
    <bug_when>2022-05-13 17:14:46 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1869073</commentid>
    <comment_count>1</comment_count>
      <attachid>459379</attachid>
    <who name="Yijia Huang">yijia_huang</who>
    <bug_when>2022-05-15 09:45:08 -0700</bug_when>
    <thetext>Created attachment 459379
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1869251</commentid>
    <comment_count>2</comment_count>
      <attachid>459379</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2022-05-16 09:13:17 -0700</bug_when>
    <thetext>Comment on attachment 459379
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:3
&gt; +        REGRESSION (r89377554): [iOS] %2 RAMification

This is not a WebKit revision.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1869253</commentid>
    <comment_count>3</comment_count>
    <who name="Yijia Huang">yijia_huang</who>
    <bug_when>2022-05-16 09:15:33 -0700</bug_when>
    <thetext>(In reply to Alexey Proskuryakov from comment #2)
&gt; Comment on attachment 459379 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=459379&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/ChangeLog:3
&gt; &gt; +        REGRESSION (r89377554): [iOS] %2 RAMification
&gt; 
&gt; This is not a WebKit revision.

Sorry, I though &quot;r&quot; stands for radar.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1869258</commentid>
    <comment_count>4</comment_count>
      <attachid>459379</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2022-05-16 09:17:53 -0700</bug_when>
    <thetext>Comment on attachment 459379
Patch

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

Looking good, I left a few comments that might help you with your issues.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:14866
&gt; +    slowCases.append(m_jit.branchCompactPtr(CCallHelpers::NotEqual, scratch1GPR, CCallHelpers::Address(structureGPR, Structure::classInfoOffset()), scratch2GPR));

Can we make branchCompactPtr do the right thing so we don&apos;t need these #ifs everywhere?

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:14872
&gt;  

&gt; emitAllocateJSObjectWithKnownSize&lt;JSInternalPromise&gt;(resultGPR, structureGPR, butterfly, scratch1GPR, scratch2GPR, slowCases, sizeof(JSInternalPromise));

looks like scratch2 is still live?

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:14924
&gt;      slowCases.append(m_jit.branchPtr(CCallHelpers::NotEqual, scratch1GPR, CCallHelpers::Address(structureGPR, Structure::globalObjectOffset())));

ditto for both

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:16838
&gt; +        return m_out.lShr(structure, m_out.constInt32(StructureID::encodeShiftAmount));

need a b3 cast? This would only cause a validation error when JSC is running the B3 compiler, not a runtime error

&gt; Source/JavaScriptCore/heap/TinyBloomFilter.h:36
&gt; +    using StorageSize = WTF::Compacted&lt;nullptr_t&gt;::StorageSize;

We can get rid of Bits, and get rid of the #if here. StorageSize should pick the right size, right? Maybe let&apos;s name it StorageType or StorageBits or Bits?

&gt; Source/JavaScriptCore/jit/AssemblyHelpers.h:-1625
&gt; -        load64(MacroAssembler::Address(structure, Structure::structureIDOffset()), scratch);

Yusuke should leave a comment here. This seems correct, but I am not sure if we can leave a JSCell in this state. We might need to do this atomically to avoid GC tearing. This might happen if the GC would visit this cell in between these two stores.

&gt; Source/JavaScriptCore/jit/AssemblyHelpers.h:1930
&gt; +    {

Let&apos;s define this for all platforms and have it do the right thing

&gt; Source/JavaScriptCore/runtime/Structure.h:955
&gt; +    static constexpr int s_maxTransitionLength = 64; // macOS|iOS: 4 bytes

Not sue about the comment here? Also, constexpr values don&apos;t necessarily have to take up any space. Static values also don&apos;t contribute to object size.

&gt; Source/WTF/wtf/CompactPtr.h:28
&gt; +#include &lt;cstdint&gt;

Not sure we need all of these

&gt; Source/WTF/wtf/CompactRefPtr.h:38
&gt; +    WTF_MAKE_FAST_ALLOCATED;

I don&apos;t think we want this at all. We want this to be used only as a member of a class. Also, maybe we should see if we can assert that it isn&apos;t stack allocated, since that will break leaks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1869260</commentid>
    <comment_count>5</comment_count>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2022-05-16 09:18:42 -0700</bug_when>
    <thetext>(In reply to Yijia Huang from comment #3)
&gt; (In reply to Alexey Proskuryakov from comment #2)
&gt; &gt; Comment on attachment 459379 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=459379&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/JavaScriptCore/ChangeLog:3
&gt; &gt; &gt; +        REGRESSION (r89377554): [iOS] %2 RAMification
&gt; &gt; 
&gt; &gt; This is not a WebKit revision.
&gt; 
&gt; Sorry, I though &quot;r&quot; stands for radar.

For radars, we use rdar://000000</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1869263</commentid>
    <comment_count>6</comment_count>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2022-05-16 09:20:24 -0700</bug_when>
    <thetext>cc&apos;ing the radar bot and adding the InRadar tag: &lt;rdar://89377554&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1869378</commentid>
    <comment_count>7</comment_count>
      <attachid>459379</attachid>
    <who name="Yijia Huang">yijia_huang</who>
    <bug_when>2022-05-16 12:42:40 -0700</bug_when>
    <thetext>Comment on attachment 459379
Patch

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

&gt;&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:14866
&gt;&gt; +    slowCases.append(m_jit.branchCompactPtr(CCallHelpers::NotEqual, scratch1GPR, CCallHelpers::Address(structureGPR, Structure::classInfoOffset()), scratch2GPR));
&gt; 
&gt; Can we make branchCompactPtr do the right thing so we don&apos;t need these #ifs everywhere?

m_jit.branchCompactPtr requires additional scratchGPR. How can we handle:

/Volumes/WebKit/ios/OpenSource/Source/JavaScriptCore/jit/AssemblyHelpers.h:1928:88: error: unused parameter &apos;scratch&apos; [-Werror,-Wunused-parameter]
    Jump branchCompactPtr(RelationalCondition cond, GPRReg left, Address right, GPRReg scratch)

, when it is not iOS platform?

&gt;&gt; Source/JavaScriptCore/heap/TinyBloomFilter.h:36
&gt;&gt; +    using StorageSize = WTF::Compacted&lt;nullptr_t&gt;::StorageSize;
&gt; 
&gt; We can get rid of Bits, and get rid of the #if here. StorageSize should pick the right size, right? Maybe let&apos;s name it StorageType or StorageBits or Bits?

The Bits is actually being used somewhere else. Should we use `uintptr_t` for `Compacted::StorageSize` for the non-iOS platforms instead of T*? Then, we can directly use `using StorageSize = WTF::Compacted&lt;nullptr_t&gt;::StorageSize;`</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1869515</commentid>
    <comment_count>8</comment_count>
      <attachid>459467</attachid>
    <who name="Yijia Huang">yijia_huang</who>
    <bug_when>2022-05-16 17:42:57 -0700</bug_when>
    <thetext>Created attachment 459467
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1869519</commentid>
    <comment_count>9</comment_count>
      <attachid>459469</attachid>
    <who name="Yijia Huang">yijia_huang</who>
    <bug_when>2022-05-16 17:51:58 -0700</bug_when>
    <thetext>Created attachment 459469
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1869522</commentid>
    <comment_count>10</comment_count>
      <attachid>459470</attachid>
    <who name="Yijia Huang">yijia_huang</who>
    <bug_when>2022-05-16 18:04:31 -0700</bug_when>
    <thetext>Created attachment 459470
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1869524</commentid>
    <comment_count>11</comment_count>
      <attachid>459470</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2022-05-16 18:09:15 -0700</bug_when>
    <thetext>Comment on attachment 459470
Patch

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

&gt; Source/JavaScriptCore/jit/AssemblyHelpers.h:1936
&gt; +        (void)scratch;

Use UNUSED_PARAM(scratch).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1870963</commentid>
    <comment_count>12</comment_count>
    <who name="Yijia Huang">yijia_huang</who>
    <bug_when>2022-05-21 13:47:02 -0700</bug_when>
    <thetext>Pull request: https://github.com/WebKit/WebKit/pull/658</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1870987</commentid>
    <comment_count>13</comment_count>
      <attachid>459470</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2022-05-21 20:29:20 -0700</bug_when>
    <thetext>Comment on attachment 459470
Patch

This patch is obsolete.  The current patch is at the PR on GitHub.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1871023</commentid>
    <comment_count>14</comment_count>
    <who name="Yijia Huang">yijia_huang</who>
    <bug_when>2022-05-22 13:24:56 -0700</bug_when>
    <thetext>Pull request: https://github.com/WebKit/WebKit/pull/889</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1871024</commentid>
    <comment_count>15</comment_count>
    <who name="Yijia Huang">yijia_huang</who>
    <bug_when>2022-05-22 13:34:51 -0700</bug_when>
    <thetext>Pull request: https://github.com/WebKit/WebKit/pull/894</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1871026</commentid>
    <comment_count>16</comment_count>
    <who name="Yijia Huang">yijia_huang</who>
    <bug_when>2022-05-22 13:41:01 -0700</bug_when>
    <thetext>Pull request: https://github.com/WebKit/WebKit/pull/896</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1871405</commentid>
    <comment_count>17</comment_count>
    <who name="Yijia Huang">yijia_huang</who>
    <bug_when>2022-05-23 20:27:54 -0700</bug_when>
    <thetext>Pull request: https://github.com/WebKit/WebKit/pull/963</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1871414</commentid>
    <comment_count>18</comment_count>
    <who name="Yijia Huang">yijia_huang</who>
    <bug_when>2022-05-23 22:13:01 -0700</bug_when>
    <thetext>Pull request: https://github.com/WebKit/WebKit/pull/966</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1871437</commentid>
    <comment_count>19</comment_count>
      <attachid>459705</attachid>
    <who name="Yijia Huang">yijia_huang</who>
    <bug_when>2022-05-24 00:22:26 -0700</bug_when>
    <thetext>Created attachment 459705
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1871569</commentid>
    <comment_count>20</comment_count>
    <who name="Yijia Huang">yijia_huang</who>
    <bug_when>2022-05-24 14:27:01 -0700</bug_when>
    <thetext>Pull request: https://github.com/WebKit/WebKit/pull/983</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1872583</commentid>
    <comment_count>21</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-05-28 20:23:52 -0700</bug_when>
    <thetext>Committed r295008 (251103@main): &lt;https://commits.webkit.org/251103@main&gt;

Reviewed commits have been landed. Closing PR #658 and removing active labels.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1872849</commentid>
    <comment_count>22</comment_count>
    <who name="Yijia Huang">yijia_huang</who>
    <bug_when>2022-05-30 17:53:12 -0700</bug_when>
    <thetext>Landed Commit: https://github.com/WebKit/WebKit/commit/771382d8a3be082672a5f071b45375d6d3d36219
Fix for iOS debug build: https://github.com/WebKit/WebKit/commit/b9d14b3aaf16c9647fe0bb6abac487c5585ce737</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>459379</attachid>
            <date>2022-05-15 09:45:08 -0700</date>
            <delta_ts>2022-05-16 17:42:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-240407-20220515094507.patch</filename>
            <type>text/plain</type>
            <size>40561</size>
            <attacher name="Yijia Huang">yijia_huang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzODY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
MGFmMzcwNWZjNTU3ZDczMjNmNGJmMGVjZjA0ZTIzYzI4NjlkMWM1Li5kMDRmNzc1M2EzNWM1ZGYw
NDcwNjNiZmM3ZmU5YWI0MTUxZWFiYzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0OSBAQAorMjAyMi0wNS0xNSAgWWlqaWEgSHVhbmcgIDx5aWppYV9odWFuZ0BhcHBsZS5j
b20+CisKKyAgICAgICAgUkVHUkVTU0lPTiAocjg5Mzc3NTU0KTogW2lPU10gJTIgUkFNaWZpY2F0
aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDA0
MDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGRm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgICogZnRsL0ZUTEFic3RyYWN0SGVhcFJl
cG9zaXRvcnkuaDoKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAg
KEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNvbXBhcmVTdHJpY3RFcSk6Cisg
ICAgICAgICogaGVhcC9UaW55Qmxvb21GaWx0ZXIuaDoKKyAgICAgICAgKEpTQzo6VGlueUJsb29t
RmlsdGVyOjpiaXRzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VGlueUJsb29tRmlsdGVyOjpUaW55
Qmxvb21GaWx0ZXIpOgorICAgICAgICAoSlNDOjpUaW55Qmxvb21GaWx0ZXI6OmFkZCk6CisgICAg
ICAgIChKU0M6OlRpbnlCbG9vbUZpbHRlcjo6cnVsZU91dCBjb25zdCk6CisgICAgICAgICogaml0
L0Fzc2VtYmx5SGVscGVycy5jcHA6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6ZW1p
dFN0b3JlU3RydWN0dXJlV2l0aFR5cGVJbmZvKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxw
ZXJzOjplbWl0RW5jb2RlU3RydWN0dXJlKToKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJz
Lmg6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6ZW1pdFN0b3JlU3RydWN0dXJlV2l0
aFR5cGVJbmZvKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpsb2FkQ29tcGFjdFB0
cik6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6YnJhbmNoQ29tcGFjdFB0cik6Cisg
ICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpn
ZW5lcmF0ZU9wR2V0RnJvbVNjb3BlVGh1bmspOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
cHV0X3RvX3Njb3BlKToKKyAgICAgICAgKiBydW50aW1lL0NsYXNzSW5mby5oOgorICAgICAgICAo
SlNDOjpDbGFzc0luZm86Om9mZnNldE9mUGFyZW50Q2xhc3MpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpDbGFzc0luZm86OmlzU3ViQ2xhc3NPZiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICog
cnVudGltZS9TdHJ1Y3R1cmUuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OlN0cnVjdHVy
ZSk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuaDoKKyAgICAgICAgKEpTQzo6U3RydWN0
dXJlOjppZCBjb25zdCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6aWRCbG9iIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpjbGFzc0luZm9Gb3JDZWxscyBjb25zdCk6CisgICAg
ICAgIChKU0M6OlN0cnVjdHVyZTo6c3RydWN0dXJlSURPZmZzZXQpOiBEZWxldGVkLgorICAgICAg
ICAqIHJ1bnRpbWUvU3RydWN0dXJlSURCbG9iLmg6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZUlE
QmxvYjo6U3RydWN0dXJlSURCbG9iKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlSURCbG9iOjpv
cGVyYXRvcj0pOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVJREJsb2I6OmJsb2JFeGNsdWRpbmdT
dHJ1Y3R1cmVJRCBjb25zdCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZUlEQmxvYjo6YmxvYiBj
b25zdCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZUlEQmxvYjo6c3RydWN0dXJlSUQgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVJREJsb2I6OnN0cnVjdHVyZUlET2Zm
c2V0KTogRGVsZXRlZC4KKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3Bw
OgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseUZ1bmN0aW9uOjpqc0NhbGxFbnRyeXBvaW50U2xv
dyk6CisKIDIwMjItMDUtMDUgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAog
ICAgICAgICBVbnJldmlld2VkLCBwYXJ0aWFsIHJldmVydCBvZiByMjkzODEzIGJlY2F1c2Ugb2Yg
cHJvcG9zYWwncyBpc3N1ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291
cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggNmUxOTg0NmUwZTE5MTYxMDMzYWRhNWQzMDBkODExOTQ2
YzhjOTk1MC4uZDgyODliZjA5M2Q2ZWUzNGZjZTZmNmY5MDZmMzFhNzBkNGM1YzgyMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwzOCBAQAorMjAyMi0wNS0xNSAgWWlqaWEgSHVhbmcgIDx5aWppYV9odWFuZ0BhcHBs
ZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTiAocjg5Mzc3NTU0KTogW2lPU10gJTIgUkFNaWZp
Y2F0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
NDA0MDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9DTWFrZUxpc3Rz
LnR4dDoKKyAgICAgICAgKiB3dGYvQ29tcGFjdFB0ci5oOiBBZGRlZC4KKyAgICAgICAgKFdURjo6
Q29tcGFjdFB0cjo6Q29tcGFjdFB0cik6CisgICAgICAgIChXVEY6OkNvbXBhY3RQdHI6Om9wZXJh
dG9yKiBjb25zdCk6CisgICAgICAgIChXVEY6OkNvbXBhY3RQdHI6Om9wZXJhdG9yLT4gY29uc3Qp
OgorICAgICAgICAoV1RGOjpDb21wYWN0UHRyOjpvcGVyYXRvciEgY29uc3QpOgorICAgICAgICAo
V1RGOjpDb21wYWN0UHRyOjpvcGVyYXRvciBib29sIGNvbnN0KToKKyAgICAgICAgKFdURjo6Q29t
cGFjdFB0cjo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdURjo6Q29tcGFjdFB0cjo6Z2V0IGNvbnN0
KToKKyAgICAgICAgKiB3dGYvQ29tcGFjdFJlZlB0ci5oOiBBZGRlZC4KKyAgICAgICAgKFdURjo6
Q29tcGFjdGVkOjpDb21wYWN0ZWQpOgorICAgICAgICAoV1RGOjpDb21wYWN0ZWQ6Om9wZXJhdG9y
PSk6CisgICAgICAgIChXVEY6OkNvbXBhY3RlZDo6b3BlcmF0b3IhIGNvbnN0KToKKyAgICAgICAg
KFdURjo6Q29tcGFjdGVkOjpvcGVyYXRvciBib29sIGNvbnN0KToKKyAgICAgICAgKFdURjo6Q29t
cGFjdGVkOjpnZXQgY29uc3QpOgorICAgICAgICAoV1RGOjpDb21wYWN0ZWQ6OnNldCk6CisgICAg
ICAgIChXVEY6OkNvbXBhY3RlZDo6ZXhjaGFuZ2UpOgorICAgICAgICAoV1RGOjpDb21wYWN0ZWQ6
OnN3YXApOgorICAgICAgICAoV1RGOjpDb21wYWN0ZWQ6OmVuY29kZSBjb25zdCk6CisgICAgICAg
IChXVEY6OkNvbXBhY3RlZDo6ZGVjb2RlIGNvbnN0KToKKyAgICAgICAgKFdURjo6R2V0UHRySGVs
cGVyPENvbXBhY3RlZDxUPj46OmdldFB0cik6CisgICAgICAgIChXVEY6OkNvbXBhY3RQdHJUcmFp
dHM6OmV4Y2hhbmdlKToKKyAgICAgICAgKFdURjo6Q29tcGFjdFB0clRyYWl0czo6c3dhcCk6Cisg
ICAgICAgIChXVEY6OkNvbXBhY3RQdHJUcmFpdHM6OnVud3JhcCk6CisgICAgICAgIChXVEY6OkNv
bXBhY3RQdHJUcmFpdHM6Omhhc2hUYWJsZURlbGV0ZWRWYWx1ZSk6CisgICAgICAgIChXVEY6OkNv
bXBhY3RQdHJUcmFpdHM6OmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKToKKwogMjAyMi0wNS0wNSAg
QnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgYWJh
bmRvbmVkIFdLUHJlZmVyZW5jZSBmb3IgQWx3YXlzVXNlQWNjZWxlcmF0ZWRPdmVyZmxvd1Njcm9s
bApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApp
bmRleCA5OWI5MjM5YjRkNTRjNmYxNTlhNGRlZGY0MWE1NTQ2ZGE1ZTBkODdhLi44YzZlOTBiZDll
ZmQxZTc4ZTYwNjM5NDNlOTVkMTNjNTlkZmRkNjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtMTEwODIsNyArMTEwODIsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ2hlY2tKU0Nhc3QoTm9kZSogbm9kZSkKICAgICAg
ICAgR1BSUmVnIHNwZWNpZmllZEdQUiA9IHNwZWNpZmllZC5ncHIoKTsKIAogICAgICAgICBtX2pp
dC5lbWl0TG9hZFN0cnVjdHVyZSh2bSgpLCBiYXNlR1BSLCBvdGhlckdQUik7Ci0gICAgICAgIG1f
aml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKG90aGVyR1BSLCBTdHJ1Y3R1cmU6OmNs
YXNzSW5mb09mZnNldCgpKSwgb3RoZXJHUFIpOworICAgICAgICBtX2ppdC5sb2FkQ29tcGFjdFB0
cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mob3RoZXJHUFIsIFN0cnVjdHVyZTo6Y2xhc3NJbmZvT2Zm
c2V0KCkpLCBvdGhlckdQUik7CiAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihub2Rl
LT5jbGFzc0luZm8oKSksIHNwZWNpZmllZEdQUik7CiAKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpM
YWJlbCBsb29wID0gbV9qaXQubGFiZWwoKTsKQEAgLTExMjkzLDcgKzExMjkzLDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUZ1bmN0aW9uVG9TdHJpbmcoTm9kZSogbm9kZSkKICAgICBz
cGVjdWxhdGVGdW5jdGlvbihub2RlLT5jaGlsZDEoKSwgZnVuY3Rpb24uZ3ByKCkpOwogCiAgICAg
bV9qaXQuZW1pdExvYWRTdHJ1Y3R1cmUodm0oKSwgZnVuY3Rpb24uZ3ByKCksIHJlc3VsdC5ncHIo
KSk7Ci0gICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHQuZ3ByKCks
IFN0cnVjdHVyZTo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCByZXN1bHQuZ3ByKCkpOworICAgIG1faml0
LmxvYWRDb21wYWN0UHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdC5ncHIoKSwgU3RydWN0
dXJlOjpjbGFzc0luZm9PZmZzZXQoKSksIHJlc3VsdC5ncHIoKSk7CiAgICAgc3RhdGljX2Fzc2Vy
dChzdGQ6OmlzX2ZpbmFsX3Y8SlNCb3VuZEZ1bmN0aW9uPiwgIldlIGRvbid0IGhhbmRsZSBzdWJj
bGFzc2VzIHdoZW4gY29tcGFyaW5nIGNsYXNzSW5mbyBiZWxvdyIpOwogICAgIHNsb3dDYXNlcy5h
cHBlbmQobV9qaXQuYnJhbmNoUHRyKENDYWxsSGVscGVyczo6RXF1YWwsIHJlc3VsdC5ncHIoKSwg
VHJ1c3RlZEltbVB0cihKU0JvdW5kRnVuY3Rpb246OmluZm8oKSkpKTsKIApAQCAtMTQ4NjIsNyAr
MTQ4NjIsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZVByb21pc2UoTm9k
ZSogbm9kZSkKICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaFRlc3QzMihDQ2FsbEhl
bHBlcnM6Olplcm8sIHN0cnVjdHVyZUdQUikpOwogICAgIG1faml0LmVtaXROb25OdWxsRGVjb2Rl
WmVyb0V4dGVuZGVkU3RydWN0dXJlSUQoc3RydWN0dXJlR1BSLCBzdHJ1Y3R1cmVHUFIpOwogICAg
IG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihub2RlLT5pc0ludGVybmFsUHJvbWlzZSgpID8gSlNJ
bnRlcm5hbFByb21pc2U6OmluZm8oKSA6IEpTUHJvbWlzZTo6aW5mbygpKSwgc2NyYXRjaDFHUFIp
OworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5i
cmFuY2hDb21wYWN0UHRyKENDYWxsSGVscGVyczo6Tm90RXF1YWwsIHNjcmF0Y2gxR1BSLCBDQ2Fs
bEhlbHBlcnM6OkFkZHJlc3Moc3RydWN0dXJlR1BSLCBTdHJ1Y3R1cmU6OmNsYXNzSW5mb09mZnNl
dCgpKSwgc2NyYXRjaDJHUFIpKTsKKyNlbHNlCiAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5i
cmFuY2hQdHIoQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwgc2NyYXRjaDFHUFIsIENDYWxsSGVscGVy
czo6QWRkcmVzcyhzdHJ1Y3R1cmVHUFIsIFN0cnVjdHVyZTo6Y2xhc3NJbmZvT2Zmc2V0KCkpKSk7
CisjZW5kaWYKICAgICBtX2ppdC5sb2FkTGlua2FibGVDb25zdGFudChKSVRDb21waWxlcjo6TGlu
a2FibGVDb25zdGFudChtX2dyYXBoLCBnbG9iYWxPYmplY3QpLCBzY3JhdGNoMUdQUik7CiAgICAg
c2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hQdHIoQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwg
c2NyYXRjaDFHUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHJ1Y3R1cmVHUFIsIFN0cnVjdHVy
ZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0KCkpKSk7CiAKQEAgLTE0OTExLDcgKzE0OTE1LDExIEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVJbnRlcm5hbEZpZWxkT2JqZWN0KE5vZGUq
IG5vZGUsIE9wZXJhdGlvbiBvcGVyCiAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hU
ZXN0MzIoQ0NhbGxIZWxwZXJzOjpaZXJvLCBzdHJ1Y3R1cmVHUFIpKTsKICAgICBtX2ppdC5lbWl0
Tm9uTnVsbERlY29kZVplcm9FeHRlbmRlZFN0cnVjdHVyZUlEKHN0cnVjdHVyZUdQUiwgc3RydWN0
dXJlR1BSKTsKICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIoSlNDbGFzczo6aW5mbygpKSwg
c2NyYXRjaDFHUFIpOworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgc2xvd0Nhc2VzLmFw
cGVuZChtX2ppdC5icmFuY2hDb21wYWN0UHRyKENDYWxsSGVscGVyczo6Tm90RXF1YWwsIHNjcmF0
Y2gxR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3RydWN0dXJlR1BSLCBTdHJ1Y3R1cmU6OmNs
YXNzSW5mb09mZnNldCgpKSwgc2NyYXRjaDJHUFIpKTsKKyNlbHNlCiAgICAgc2xvd0Nhc2VzLmFw
cGVuZChtX2ppdC5icmFuY2hQdHIoQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwgc2NyYXRjaDFHUFIs
IENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHJ1Y3R1cmVHUFIsIFN0cnVjdHVyZTo6Y2xhc3NJbmZv
T2Zmc2V0KCkpKSk7CisjZW5kaWYKICAgICBtX2ppdC5sb2FkTGlua2FibGVDb25zdGFudChKSVRD
b21waWxlcjo6TGlua2FibGVDb25zdGFudChtX2dyYXBoLCBnbG9iYWxPYmplY3QpLCBzY3JhdGNo
MUdQUik7CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hQdHIoQ0NhbGxIZWxwZXJz
OjpOb3RFcXVhbCwgc2NyYXRjaDFHUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHJ1Y3R1cmVH
UFIsIFN0cnVjdHVyZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0KCkpKSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgKaW5kZXgg
ZmUyOWRkMmJlN2MyNTNlNTFhODQzYWYyOTdkODUxYmE5ZjQ0NTZiYS4uYjI4ZGU2MjJiMjMzMGU3
MWVmZDdkNmE3NWU0MDgxOTllOTk4MGNiYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgKQEAgLTE0Nyw3ICsxNDcsNiBA
QCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAgICAgbWFjcm8oU3RydWN0dXJlX291
dE9mTGluZVR5cGVGbGFncywgU3RydWN0dXJlOjpvdXRPZkxpbmVUeXBlRmxhZ3NPZmZzZXQoKSkg
XAogICAgIG1hY3JvKFN0cnVjdHVyZV9wcmV2aW91c09yUmFyZURhdGEsIFN0cnVjdHVyZTo6cHJl
dmlvdXNPclJhcmVEYXRhT2Zmc2V0KCkpIFwKICAgICBtYWNybyhTdHJ1Y3R1cmVfcHJvdG90eXBl
LCBTdHJ1Y3R1cmU6OnByb3RvdHlwZU9mZnNldCgpKSBcCi0gICAgbWFjcm8oU3RydWN0dXJlX3N0
cnVjdHVyZUlELCBTdHJ1Y3R1cmU6OnN0cnVjdHVyZUlET2Zmc2V0KCkpIFwKICAgICBtYWNybyhT
dHJ1Y3R1cmVSYXJlRGF0YV9jYWNoZWRLZXlzLCBTdHJ1Y3R1cmVSYXJlRGF0YTo6b2Zmc2V0T2ZD
YWNoZWRQcm9wZXJ0eU5hbWVzKENhY2hlZFByb3BlcnR5TmFtZXNLaW5kOjpLZXlzKSkgXAogICAg
IG1hY3JvKFN0cnVjdHVyZVJhcmVEYXRhX2NhY2hlZEdldE93blByb3BlcnR5TmFtZXMsIFN0cnVj
dHVyZVJhcmVEYXRhOjpvZmZzZXRPZkNhY2hlZFByb3BlcnR5TmFtZXMoQ2FjaGVkUHJvcGVydHlO
YW1lc0tpbmQ6OkdldE93blByb3BlcnR5TmFtZXMpKSBcCiAgICAgbWFjcm8oU3RydWN0dXJlUmFy
ZURhdGFfY2FjaGVkUHJvcGVydHlOYW1lRW51bWVyYXRvckFuZEZsYWcsIFN0cnVjdHVyZVJhcmVE
YXRhOjpvZmZzZXRPZkNhY2hlZFByb3BlcnR5TmFtZUVudW1lcmF0b3JBbmRGbGFnKCkpIFwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCA3ZWQz
NzM3OTQzYjczMWE2ZTNmZDVjN2Y5MzBjMDUyNjlkOTg1ZTZlLi5kYTI5OTNlNDk5ZDliMGU5NDM3
Y2QyNGExY2ExZGMxOTI0OWM5MmM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExMb3dlckRGR1RvQjMuY3BwCkBAIC0xNjgzMiw2ICsxNjgzMiwxNiBAQCBJR05PUkVfQ0xBTkdf
V0FSTklOR1NfRU5ECiAgICAgICAgICAgICBvYmplY3QsIG1faGVhcHMuSlNDZWxsX3VzZWZ1bEJ5
dGVzKTsKICAgICB9CiAKKyAgICBMVmFsdWUgZW1pdEVuY29kZVN0cnVjdHVyZShMVmFsdWUgc3Ry
dWN0dXJlKQorICAgIHsKKyNpZiBFTkFCTEUoU1RSVUNUVVJFX0lEX1dJVEhfU0hJRlQpCisgICAg
ICAgIHJldHVybiBtX291dC5sU2hyKHN0cnVjdHVyZSwgbV9vdXQuY29uc3RJbnQzMihTdHJ1Y3R1
cmVJRDo6ZW5jb2RlU2hpZnRBbW91bnQpKTsKKyNlbGlmIENQVShBRERSRVNTNjQpCisgICAgICAg
IHJldHVybiBtX291dC5iaXRBbmQoc3RydWN0dXJlLCBtX291dC5jb25zdEludDMyKHN0YXRpY19j
YXN0PHVpbnQzMl90PihTdHJ1Y3R1cmVJRDo6c3RydWN0dXJlSURNYXNrKSkpOworI2VuZGlmCisg
ICAgICAgIHJldHVybiBzdHJ1Y3R1cmU7CisgICAgfQorCiAgICAgdm9pZCBzdG9yZVN0cnVjdHVy
ZShMVmFsdWUgb2JqZWN0LCBMVmFsdWUgc3RydWN0dXJlKQogICAgIHsKICAgICAgICAgaWYgKHN0
cnVjdHVyZS0+aGFzSW50UHRyKCkpIHsKQEAgLTE2ODM5LDcgKzE2ODQ5LDcgQEAgSUdOT1JFX0NM
QU5HX1dBUk5JTkdTX0VORAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAg
ICAgTFZhbHVlIGlkID0gbV9vdXQubG9hZDMyKHN0cnVjdHVyZSwgbV9oZWFwcy5TdHJ1Y3R1cmVf
c3RydWN0dXJlSUQpOworICAgICAgICBMVmFsdWUgaWQgPSBlbWl0RW5jb2RlU3RydWN0dXJlKHN0
cnVjdHVyZSk7CiAgICAgICAgIG1fb3V0LnN0b3JlMzIoaWQsIG9iamVjdCwgbV9oZWFwcy5KU0Nl
bGxfc3RydWN0dXJlSUQpOwogCiAgICAgICAgIExWYWx1ZSBibG9iID0gbV9vdXQubG9hZDMyKHN0
cnVjdHVyZSwgbV9oZWFwcy5TdHJ1Y3R1cmVfaW5kZXhpbmdNb2RlSW5jbHVkaW5nSGlzdG9yeSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9UaW55Qmxvb21GaWx0ZXIu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1RpbnlCbG9vbUZpbHRlci5oCmluZGV4IDM4
YTdiY2YzMTJlZjVmYzI2ZGU1MmIzNzE0MzM2MDJlYWI5ZjM0YzguLjk3ZDc0MDRlYzk5NDllM2Rj
NmY1ZjRiNjA1NGY4NDA3ZmM1MTEzMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL1RpbnlCbG9vbUZpbHRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L1RpbnlCbG9vbUZpbHRlci5oCkBAIC0yNSwzMSArMjUsMzggQEAKIAogI3ByYWdtYSBvbmNlCiAK
KyNpbmNsdWRlIDx3dGYvQ29tcGFjdFJlZlB0ci5oPgorCiBuYW1lc3BhY2UgSlNDIHsKIAogdHlw
ZWRlZiB1aW50cHRyX3QgQml0czsKIAogY2xhc3MgVGlueUJsb29tRmlsdGVyIHsKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQorICAgIHVzaW5nIFN0b3JhZ2VTaXplID0gV1RGOjpDb21wYWN0ZWQ8
bnVsbHB0cl90Pjo6U3RvcmFnZVNpemU7CisjZWxzZQorICAgIHVzaW5nIFN0b3JhZ2VTaXplID0g
Qml0czsKKyNlbmRpZgogcHVibGljOgogICAgIFRpbnlCbG9vbUZpbHRlcigpID0gZGVmYXVsdDsK
LSAgICBUaW55Qmxvb21GaWx0ZXIoQml0cyk7CisgICAgVGlueUJsb29tRmlsdGVyKFN0b3JhZ2VT
aXplKTsKIAotICAgIHZvaWQgYWRkKEJpdHMpOworICAgIHZvaWQgYWRkKFN0b3JhZ2VTaXplKTsK
ICAgICB2b2lkIGFkZChUaW55Qmxvb21GaWx0ZXImKTsKLSAgICBib29sIHJ1bGVPdXQoQml0cykg
Y29uc3Q7IC8vIFRydWUgZm9yIDAuCisgICAgYm9vbCBydWxlT3V0KFN0b3JhZ2VTaXplKSBjb25z
dDsgLy8gVHJ1ZSBmb3IgMC4KICAgICB2b2lkIHJlc2V0KCk7Ci0gICAgQml0cyBiaXRzKCkgY29u
c3QgeyByZXR1cm4gbV9iaXRzOyB9CisgICAgU3RvcmFnZVNpemUgYml0cygpIGNvbnN0IHsgcmV0
dXJuIG1fYml0czsgfQogCiBwcml2YXRlOgotICAgIEJpdHMgbV9iaXRzIHsgMCB9OworICAgIFN0
b3JhZ2VTaXplIG1fYml0cyB7IDAgfTsKIH07CiAKLWlubGluZSBUaW55Qmxvb21GaWx0ZXI6OlRp
bnlCbG9vbUZpbHRlcihCaXRzIGJpdHMpCitpbmxpbmUgVGlueUJsb29tRmlsdGVyOjpUaW55Qmxv
b21GaWx0ZXIoU3RvcmFnZVNpemUgYml0cykKICAgICA6IG1fYml0cyhiaXRzKQogewogfQogCi1p
bmxpbmUgdm9pZCBUaW55Qmxvb21GaWx0ZXI6OmFkZChCaXRzIGJpdHMpCitpbmxpbmUgdm9pZCBU
aW55Qmxvb21GaWx0ZXI6OmFkZChTdG9yYWdlU2l6ZSBiaXRzKQogewogICAgIG1fYml0cyB8PSBi
aXRzOwogfQpAQCAtNTksNyArNjYsNyBAQCBpbmxpbmUgdm9pZCBUaW55Qmxvb21GaWx0ZXI6OmFk
ZChUaW55Qmxvb21GaWx0ZXImIG90aGVyKQogICAgIG1fYml0cyB8PSBvdGhlci5tX2JpdHM7CiB9
CiAKLWlubGluZSBib29sIFRpbnlCbG9vbUZpbHRlcjo6cnVsZU91dChCaXRzIGJpdHMpIGNvbnN0
CitpbmxpbmUgYm9vbCBUaW55Qmxvb21GaWx0ZXI6OnJ1bGVPdXQoU3RvcmFnZVNpemUgYml0cykg
Y29uc3QKIHsKICAgICBpZiAoIWJpdHMpCiAgICAgICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCmluZGV4IGZlZDkxMTZmNmUz
ZWZlMjM5ZDNmZDJjYzhhYWQ1ZTM2ODczYjY3MDEuLjEwNDE1ZGZlMDkxMjdhZmU4NDk5MjBjYzY5
NTQ5NWZhODNmNzI5ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNz
ZW1ibHlIZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5
SGVscGVycy5jcHAKQEAgLTMzMiw3ICszMzIsOCBAQCB2b2lkIEFzc2VtYmx5SGVscGVyczo6ZW1p
dFN0b3JlU3RydWN0dXJlV2l0aFR5cGVJbmZvKEFzc2VtYmx5SGVscGVycyYgaml0LCBUcnVzdAog
ewogICAgIGNvbnN0IFN0cnVjdHVyZSogc3RydWN0dXJlUHRyID0gcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBTdHJ1Y3R1cmUqPihzdHJ1Y3R1cmUubV92YWx1ZSk7CiAjaWYgVVNFKEpTVkFMVUU2NCkK
LSAgICBqaXQuc3RvcmU2NChUcnVzdGVkSW1tNjQoc3RydWN0dXJlUHRyLT5pZEJsb2IoKSksIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRlc3QsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSkp
OworICAgIGppdC5zdG9yZTMyKFRydXN0ZWRJbW0zMihTdHJ1Y3R1cmVJRDo6ZW5jb2RlKHN0cnVj
dHVyZVB0cikuYml0cygpKSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGVzdCwgSlNDZWxsOjpz
dHJ1Y3R1cmVJRE9mZnNldCgpKSk7CisgICAgaml0LnN0b3JlMzIoVHJ1c3RlZEltbTMyKHN0cnVj
dHVyZVB0ci0+aWRCbG9iKCkpLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkZXN0LCBKU0NlbGw6
OmluZGV4aW5nVHlwZUFuZE1pc2NPZmZzZXQoKSkpOwogICAgIGlmIChBU1NFUlRfRU5BQkxFRCkg
ewogICAgICAgICBKdW1wIGNvcnJlY3RTdHJ1Y3R1cmUgPSBqaXQuYnJhbmNoMzIoRXF1YWwsIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRlc3QsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSks
IFRydXN0ZWRJbW0zMihzdHJ1Y3R1cmVQdHItPmlkKCkuYml0cygpKSk7CiAgICAgICAgIGppdC5h
Ym9ydFdpdGhSZWFzb24oQUhTdHJ1Y3R1cmVJRElzVmFsaWQpOwpAQCAtNDI4LDYgKzQyOSwxNSBA
QCB2b2lkIEFzc2VtYmx5SGVscGVyczo6ZW1pdExvYWRTdHJ1Y3R1cmUoVk0mLCBSZWdpc3RlcklE
IHNvdXJjZSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIGVtaXROb25OdWxsRGVjb2RlWmVyb0V4dGVu
ZGVkU3RydWN0dXJlSUQoZGVzdCwgZGVzdCk7CiB9CiAKK3ZvaWQgQXNzZW1ibHlIZWxwZXJzOjpl
bWl0RW5jb2RlU3RydWN0dXJlKFJlZ2lzdGVySUQgc291cmNlLCBSZWdpc3RlcklEIGRlc3QpCit7
CisjaWYgRU5BQkxFKFNUUlVDVFVSRV9JRF9XSVRIX1NISUZUKQorICAgIHVyc2hpZnQzMihzb3Vy
Y2UsIFRydXN0ZWRJbW0zMihTdHJ1Y3R1cmVJRDo6ZW5jb2RlU2hpZnRBbW91bnQpLCBkZXN0KTsK
KyNlbGlmIENQVShBRERSRVNTNjQpCisgICAgYW5kMzIoVHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0
PHVpbnQzMl90PihTdHJ1Y3R1cmVJRDo6c3RydWN0dXJlSURNYXNrKSksIHNvdXJjZSwgZGVzdCk7
CisjZW5kaWYKK30KKwogdm9pZCBBc3NlbWJseUhlbHBlcnM6OmVtaXRMb2FkUHJvdG90eXBlKFZN
JiB2bSwgR1BSUmVnIG9iamVjdEdQUiwgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncywgSnVtcExpc3Qm
IHNsb3dQYXRoKQogewogICAgIEFTU0VSVChyZXN1bHRSZWdzLnBheWxvYWRHUFIoKSAhPSBvYmpl
Y3RHUFIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhl
bHBlcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKaW5k
ZXggZmM1OWVhOTRjY2EzZWFjYjIxNWQzY2RhYzBkNmJkNDc3Mzc5M2JlYS4uMDcxZWFkOTVhMzJk
OTFlOGI3N2FjMjE0MmYyMGRiMzg0NGI0MzMyMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0Fzc2VtYmx5SGVscGVycy5oCkBAIC0xNjEzLDYgKzE2MTMsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBlbWl0Tm9uTnVsbERlY29kZVplcm9FeHRlbmRlZFN0cnVjdHVyZUlEKFJlZ2lzdGVySUQg
c291cmNlLCBSZWdpc3RlcklEIGRlc3QpOwogICAgIHZvaWQgZW1pdExvYWRTdHJ1Y3R1cmUoVk0m
LCBSZWdpc3RlcklEIHNvdXJjZSwgUmVnaXN0ZXJJRCBkZXN0KTsKICAgICB2b2lkIGVtaXRMb2Fk
UHJvdG90eXBlKFZNJiwgR1BSUmVnIG9iamVjdEdQUiwgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncywg
SnVtcExpc3QmIHNsb3dQYXRoKTsKKyAgICB2b2lkIGVtaXRFbmNvZGVTdHJ1Y3R1cmUoUmVnaXN0
ZXJJRCBzb3VyY2UsIFJlZ2lzdGVySUQgZGVzdCk7CiAKICAgICB2b2lkIGVtaXRTdG9yZVN0cnVj
dHVyZVdpdGhUeXBlSW5mbyhUcnVzdGVkSW1tUHRyIHN0cnVjdHVyZSwgUmVnaXN0ZXJJRCBkZXN0
LCBSZWdpc3RlcklEKQogICAgIHsKQEAgLTE2MjEsMTcgKzE2MjIsMTYgQEAgcHVibGljOgogCiAg
ICAgdm9pZCBlbWl0U3RvcmVTdHJ1Y3R1cmVXaXRoVHlwZUluZm8oUmVnaXN0ZXJJRCBzdHJ1Y3R1
cmUsIFJlZ2lzdGVySUQgZGVzdCwgUmVnaXN0ZXJJRCBzY3JhdGNoKQogICAgIHsKKyAgICAgICAg
Ly8gU3RvcmUgdGhlIFN0cnVjdHVyZUlECiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgbG9h
ZDY0KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0cnVjdHVyZSwgU3RydWN0dXJlOjpzdHJ1Y3R1
cmVJRE9mZnNldCgpKSwgc2NyYXRjaCk7Ci0gICAgICAgIHN0b3JlNjQoc2NyYXRjaCwgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3MoZGVzdCwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSk7Cisg
ICAgICAgIGVtaXRFbmNvZGVTdHJ1Y3R1cmUoc3RydWN0dXJlLCBzY3JhdGNoKTsKKyAgICAgICAg
c3RvcmUzMihzY3JhdGNoLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkZXN0LCBKU0NlbGw6OnN0
cnVjdHVyZUlET2Zmc2V0KCkpKTsKICNlbHNlCisgICAgICAgIHN0b3JlUHRyKHN0cnVjdHVyZSwg
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGVzdCwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgp
KSk7CisjZW5kaWYKICAgICAgICAgLy8gU3RvcmUgYWxsIHRoZSBpbmZvIGZsYWdzIHVzaW5nIGEg
c2luZ2xlIDMyLWJpdCB3aWRlIGxvYWQgYW5kIHN0b3JlLgogICAgICAgICBsb2FkMzIoTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3Moc3RydWN0dXJlLCBTdHJ1Y3R1cmU6OmluZGV4aW5nTW9kZUluY2x1
ZGluZ0hpc3RvcnlPZmZzZXQoKSksIHNjcmF0Y2gpOwogICAgICAgICBzdG9yZTMyKHNjcmF0Y2gs
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRlc3QsIEpTQ2VsbDo6aW5kZXhpbmdUeXBlQW5kTWlz
Y09mZnNldCgpKSk7Ci0KLSAgICAgICAgLy8gU3RvcmUgdGhlIFN0cnVjdHVyZUlECi0gICAgICAg
IHN0b3JlUHRyKHN0cnVjdHVyZSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGVzdCwgSlNDZWxs
OjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSk7Ci0jZW5kaWYKICAgICB9CiAKICAgICBzdGF0aWMgdm9p
ZCBlbWl0U3RvcmVTdHJ1Y3R1cmVXaXRoVHlwZUluZm8oQXNzZW1ibHlIZWxwZXJzJiBqaXQsIFRy
dXN0ZWRJbW1QdHIgc3RydWN0dXJlLCBSZWdpc3RlcklEIGRlc3QpOwpAQCAtMTkxNCw3ICsxOTE0
LDI3IEBAIHB1YmxpYzoKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG91dE9mTGlu
ZUNhcGFjaXR5OyArK2kpCiAgICAgICAgICAgICBzdG9yZVRydXN0ZWRWYWx1ZShKU1ZhbHVlKCks
IEFkZHJlc3MoYnV0dGVyZmx5R1BSLCAtc2l6ZW9mKEluZGV4aW5nSGVhZGVyKSAtIChpICsgMSkg
KiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSk7CiAgICAgfQotICAgIAorCisgICAgdm9pZCBsb2Fk
Q29tcGFjdFB0cihBZGRyZXNzIGFkZHJlc3MsIEdQUlJlZyBkZXN0KQorICAgIHsKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQorICAgICAgICBsb2FkMzIoYWRkcmVzcywgZGVzdCk7CisgICAgICAg
IGxzaGlmdDY0KFRydXN0ZWRJbW0zMig0KSwgZGVzdCk7CisjZWxzZQorICAgICAgICBsb2FkUHRy
KGFkZHJlc3MsIGRlc3QpOworI2VuZGlmCisgICAgfQorCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKKyAgICBKdW1wIGJyYW5jaENvbXBhY3RQdHIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBH
UFJSZWcgbGVmdCwgQWRkcmVzcyByaWdodCwgR1BSUmVnIHNjcmF0Y2gpCisgICAgeworICAgICAg
ICBBU1NFUlQobGVmdCAhPSBzY3JhdGNoKTsKKyAgICAgICAgbG9hZDMyKHJpZ2h0LCBzY3JhdGNo
KTsKKyAgICAgICAgbHNoaWZ0NjQoVHJ1c3RlZEltbTMyKDQpLCBzY3JhdGNoKTsKKyAgICAgICAg
cmV0dXJuIGJyYW5jaFB0cihjb25kLCBsZWZ0LCBBZGRyZXNzKHNjcmF0Y2gpKTsKKyAgICB9Cisj
ZW5kaWYKKwogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgdm9pZCB3YW5nc0ludDY0SGFzaChHUFJS
ZWcgaW5wdXRBbmRSZXN1bHQsIEdQUlJlZyBzY3JhdGNoKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAppbmRleCA3NGY0OTlkYzdh
NWYyOTE3OTU2YjA5YWE0ZjQ5NGM5ZmVhYzkxYThjLi4zYjA2YjVlOTVhNmY2ZjIwNzU5YWRhNWVl
MjBhZTcyODQwZDE0N2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFByb3BlcnR5QWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFBy
b3BlcnR5QWNjZXNzLmNwcApAQCAtMTgwOSw3ICsxODA5LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OmdlbmVyYXRlT3BHZXRGcm9tU2NvcGVUaHVuayhWTSYg
dm0pCiAgICAgICAgICAgICAvLyBTdHJ1Y3R1cmUgY2hlY2sgY292ZXJzIHZhciBpbmplY3Rpb24g
c2luY2Ugd2UgZG9uJ3QgY2FjaGUgc3RydWN0dXJlcyBmb3IgYW55dGhpbmcgYnV0IHRoZSBHbG9i
YWxPYmplY3QuIEFkZGl0aW9uYWxseSwgcmVzb2x2ZV9zY29wZSBoYW5kbGVzIGNoZWNraW5nIGZv
ciB0aGUgdmFyIGluamVjdGlvbi4KICAgICAgICAgICAgIGppdC5sb2FkUHRyKEFkZHJlc3MobWV0
YWRhdGFHUFIsIE9wR2V0RnJvbVNjb3BlOjpNZXRhZGF0YTo6b2Zmc2V0T2ZTdHJ1Y3R1cmUoKSks
IHNjcmF0Y2hHUFIpOwogICAgICAgICAgICAgc2xvd0Nhc2UuYXBwZW5kKGppdC5icmFuY2hUZXN0
UHRyKFplcm8sIHNjcmF0Y2hHUFIpKTsKLSAgICAgICAgICAgIGppdC5sb2FkMzIoQWRkcmVzcyhz
Y3JhdGNoR1BSLCBTdHJ1Y3R1cmU6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBzY3JhdGNoR1BSKTsK
KyAgICAgICAgICAgIGppdC5lbWl0RW5jb2RlU3RydWN0dXJlKHNjcmF0Y2hHUFIsIHNjcmF0Y2hH
UFIpOwogICAgICAgICAgICAgc2xvd0Nhc2UuYXBwZW5kKGppdC5icmFuY2gzMihOb3RFcXVhbCwg
QWRkcmVzcyhzY29wZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgc2NyYXRjaEdQ
UikpOwogCiAgICAgICAgICAgICBqaXQuaml0QXNzZXJ0KHNjb3BlZExhbWJkYTxKdW1wKHZvaWQp
PihbJl0gKCkgLT4gSnVtcCB7CkBAIC0xOTgyLDcgKzE5ODIsNyBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF9wdXRfdG9fc2NvcGUoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ICAgICAgICAgICAgbG9hZFB0ckZyb21NZXRhZGF0YShieXRlY29kZSwgT3BQdXRUb1Njb3BlOjpN
ZXRhZGF0YTo6b2Zmc2V0T2ZTdHJ1Y3R1cmUoKSwgc2NyYXRjaEdQUjEpOwogICAgICAgICAgICAg
ZW1pdEdldFZpcnR1YWxSZWdpc3RlclBheWxvYWQoc2NvcGUsIHNjb3BlR1BSKTsKICAgICAgICAg
ICAgIGFkZFNsb3dDYXNlKGJyYW5jaFRlc3RQdHIoWmVybywgc2NyYXRjaEdQUjEpKTsKLSAgICAg
ICAgICAgIGxvYWQzMihBZGRyZXNzKHNjcmF0Y2hHUFIxLCBTdHJ1Y3R1cmU6OnN0cnVjdHVyZUlE
T2Zmc2V0KCkpLCBzY3JhdGNoR1BSMSk7CisgICAgICAgICAgICBlbWl0RW5jb2RlU3RydWN0dXJl
KHNjcmF0Y2hHUFIxLCBzY3JhdGNoR1BSMSk7CiAgICAgICAgICAgICBhZGRTbG93Q2FzZShicmFu
Y2gzMihOb3RFcXVhbCwgQWRkcmVzcyhzY29wZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNl
dCgpKSwgc2NyYXRjaEdQUjEpKTsKIAogICAgICAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rl
cih2YWx1ZSwgdmFsdWVKU1IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ2xhc3NJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0lu
Zm8uaAppbmRleCBhNTc2OTI4ZWQ4YWJjMTI1ZDk1ODU0OGRhZDBkOWQwZDQ5NTA3NzkxLi41ODRl
ZDIxYWY5Mjc0MWRkNmQ1Mzk2M2Q0ZjU0MGJkOWMyMzVhOWRhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9DbGFzc0luZm8uaApAQCAtMTcyLDcgKzE3Miw3IEBAIHN0cnVjdCBNZXRo
b2RUYWJsZSB7CiAgICAgQ2xhc3NOYW1lOjpUeXBlZEFycmF5U3RvcmFnZVR5cGUsIFwKICAgICBz
aXplb2YoQ2xhc3NOYW1lKSwKIAotc3RydWN0IENsYXNzSW5mbyB7CitzdHJ1Y3QgYWxpZ25hcygx
NikgQ2xhc3NJbmZvIHsKICAgICB1c2luZyBDaGVja0pTQ2FzdFNuaXBwZXRGdW5jdGlvblB0ciA9
IFJlZjxTbmlwcGV0PiAoKikodm9pZCk7CiAKICAgICAvLyBBIHN0cmluZyBkZW5vdGluZyB0aGUg
Y2xhc3MgbmFtZS4gRXhhbXBsZTogIldpbmRvdyIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RydWN0dXJlLmNwcAppbmRleCBhY2ZkODZjNDU2ZDdkMDViMTliZGQyMDI0YjUwZjRl
ODhhOTM5MjY2Li4xMjcwZjY1NDVjZDEzMWI1MTI5OTY5M2VlYzJkNDNiMzY0YjdkMWVmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKQEAgLTE5Nyw3ICsx
OTcsNyBAQCBpbmxpbmUgdm9pZCBTdHJ1Y3R1cmU6OnZhbGlkYXRlRmxhZ3MoKSB7IH0KIAogU3Ry
dWN0dXJlOjpTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIHByb3RvdHlwZSwgY29uc3QgVHlwZUluZm8mIHR5cGVJbmZvLCBjb25zdCBDbGFzc0lu
Zm8qIGNsYXNzSW5mbywgSW5kZXhpbmdUeXBlIGluZGV4aW5nVHlwZSwgdW5zaWduZWQgaW5saW5l
Q2FwYWNpdHkpCiAgICAgOiBKU0NlbGwodm0sIHZtLnN0cnVjdHVyZVN0cnVjdHVyZS5nZXQoKSkK
LSAgICAsIG1fYmxvYihTdHJ1Y3R1cmVJRDo6ZW5jb2RlKHRoaXMpLCBpbmRleGluZ1R5cGUsIHR5
cGVJbmZvKQorICAgICwgbV9ibG9iKGluZGV4aW5nVHlwZSwgdHlwZUluZm8pCiAgICAgLCBtX291
dE9mTGluZVR5cGVGbGFncyh0eXBlSW5mby5vdXRPZkxpbmVUeXBlRmxhZ3MoKSkKICAgICAsIG1f
aW5saW5lQ2FwYWNpdHkoaW5saW5lQ2FwYWNpdHkpCiAgICAgLCBtX2JpdEZpZWxkKDApCkBAIC0y
NjgsNyArMjY4LDcgQEAgU3RydWN0dXJlOjpTdHJ1Y3R1cmUoVk0mIHZtLCBDcmVhdGluZ0Vhcmx5
Q2VsbFRhZykKICAgICBzZXRNYXhPZmZzZXQodm0sIGludmFsaWRPZmZzZXQpOwogIAogICAgIFR5
cGVJbmZvIHR5cGVJbmZvID0gVHlwZUluZm8oU3RydWN0dXJlVHlwZSwgU3RydWN0dXJlRmxhZ3Mp
OwotICAgIG1fYmxvYiA9IFN0cnVjdHVyZUlEQmxvYihTdHJ1Y3R1cmVJRDo6ZW5jb2RlKHRoaXMp
LCAwLCB0eXBlSW5mbyk7CisgICAgbV9ibG9iID0gU3RydWN0dXJlSURCbG9iKDAsIHR5cGVJbmZv
KTsKICAgICBtX291dE9mTGluZVR5cGVGbGFncyA9IHR5cGVJbmZvLm91dE9mTGluZVR5cGVGbGFn
cygpOwogCiAgICAgQVNTRVJUKGhhc1JlYWRPbmx5T3JHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzRXhj
bHVkaW5nUHJvdG8oKSB8fCAhbV9jbGFzc0luZm8tPmhhc1N0YXRpY1NldHRlck9yUmVhZG9ubHlQ
cm9wZXJ0aWVzKCkpOwpAQCAtMzA5LDcgKzMwOSw3IEBAIFN0cnVjdHVyZTo6U3RydWN0dXJlKFZN
JiB2bSwgU3RydWN0dXJlKiBwcmV2aW91cykKICAgICBzZXRNYXhPZmZzZXQodm0sIGludmFsaWRP
ZmZzZXQpOwogIAogICAgIFR5cGVJbmZvIHR5cGVJbmZvID0gcHJldmlvdXMtPnR5cGVJbmZvKCk7
Ci0gICAgbV9ibG9iID0gU3RydWN0dXJlSURCbG9iKFN0cnVjdHVyZUlEOjplbmNvZGUodGhpcyks
IHByZXZpb3VzLT5pbmRleGluZ01vZGVJbmNsdWRpbmdIaXN0b3J5KCksIHR5cGVJbmZvKTsKKyAg
ICBtX2Jsb2IgPSBTdHJ1Y3R1cmVJREJsb2IocHJldmlvdXMtPmluZGV4aW5nTW9kZUluY2x1ZGlu
Z0hpc3RvcnkoKSwgdHlwZUluZm8pOwogICAgIG1fb3V0T2ZMaW5lVHlwZUZsYWdzID0gdHlwZUlu
Zm8ub3V0T2ZMaW5lVHlwZUZsYWdzKCk7CiAKICAgICBBU1NFUlQoIXByZXZpb3VzLT50eXBlSW5m
bygpLnN0cnVjdHVyZUlzSW1tb3J0YWwoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZS5oCmluZGV4IDlkYTQxZjExMGI0ODY2MzZhZWQwNDEwOWM5OTExNGQwMGY1OTU0
MDguLjUwYTRiMzFlOTNkMGUyZDliY2IxZTMzZjVkMWU0MjVjZjhlZTFlZjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCkBAIC00Niw2ICs0Niw4IEBACiAjaW5j
bHVkZSAiV3JpdGVCYXJyaWVySW5saW5lcy5oIgogI2luY2x1ZGUgPHd0Zi9BdG9taWNzLmg+CiAj
aW5jbHVkZSA8d3RmL0NvbXBhY3RQb2ludGVyVHVwbGUuaD4KKyNpbmNsdWRlIDx3dGYvQ29tcGFj
dFB0ci5oPgorI2luY2x1ZGUgPHd0Zi9Db21wYWN0UmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1By
aW50U3RyZWFtLmg+CiAKIG5hbWVzcGFjZSBXVEYgewpAQCAtMjI2LDkgKzIyOCwxNiBAQCBwcml2
YXRlOgogICAgIHZvaWQgdmFsaWRhdGVGbGFncygpOwogCiBwdWJsaWM6Ci0gICAgU3RydWN0dXJl
SUQgaWQoKSBjb25zdCB7IEFTU0VSVChtX2Jsb2Iuc3RydWN0dXJlSUQoKSA9PSBTdHJ1Y3R1cmVJ
RDo6ZW5jb2RlKHRoaXMpKTsgcmV0dXJuIG1fYmxvYi5zdHJ1Y3R1cmVJRCgpOyB9CisgICAgU3Ry
dWN0dXJlSUQgaWQoKSBjb25zdCAKKyAgICB7CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAg
ICAgICAgc3RhdGljX2Fzc2VydChzaXplb2YoKnRoaXMpID09IDk2KTsKKyNlbmRpZgorICAgICAg
ICByZXR1cm4gU3RydWN0dXJlSUQ6OmVuY29kZSh0aGlzKTsKKyAgICB9CisKICAgICBpbnQzMl90
IG9iamVjdEluaXRpYWxpemF0aW9uQmxvYigpIGNvbnN0IHsgcmV0dXJuIG1fYmxvYi5ibG9iRXhj
bHVkaW5nU3RydWN0dXJlSUQoKTsgfQotICAgIGludDY0X3QgaWRCbG9iKCkgY29uc3QgeyByZXR1
cm4gbV9ibG9iLmJsb2IoKTsgfQorICAgIGludDMyX3QgaWRCbG9iKCkgY29uc3QgeyByZXR1cm4g
bV9ibG9iLmJsb2IoKTsgfQogCiAgICAgYm9vbCBpc1Byb3h5KCkgY29uc3QKICAgICB7CkBAIC0z
MjYsNyArMzM1LDcgQEAgcHVibGljOgogICAgIC8vIFR5cGUgYWNjZXNzb3JzLgogICAgIFR5cGVJ
bmZvIHR5cGVJbmZvKCkgY29uc3QgeyByZXR1cm4gbV9ibG9iLnR5cGVJbmZvKG1fb3V0T2ZMaW5l
VHlwZUZsYWdzKTsgfQogICAgIGJvb2wgaXNPYmplY3QoKSBjb25zdCB7IHJldHVybiB0eXBlSW5m
bygpLmlzT2JqZWN0KCk7IH0KLSAgICBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mb0ZvckNlbGxz
KCkgY29uc3QgeyByZXR1cm4gbV9jbGFzc0luZm87IH0KKyAgICBjb25zdCBDbGFzc0luZm8qIGNs
YXNzSW5mb0ZvckNlbGxzKCkgY29uc3QgeyByZXR1cm4gbV9jbGFzc0luZm8uZ2V0KCk7IH0KIHBy
b3RlY3RlZDoKICAgICAvLyBZb3UgcHJvYmFibHkgd2FudCB0eXBlSW5mbygpLnR5cGUoKQogICAg
IEpTVHlwZSB0eXBlKCkgeyByZXR1cm4gSlNDZWxsOjp0eXBlKCk7IH0KQEAgLTY0NSwxMSArNjU0
LDYgQEAgcHVibGljOgogICAgIH0KICAgICB2b2lkIGNhY2hlU3BlY2lhbFByb3BlcnR5KEpTR2xv
YmFsT2JqZWN0KiwgVk0mLCBKU1ZhbHVlLCBDYWNoZWRTcGVjaWFsUHJvcGVydHlLZXksIGNvbnN0
IFByb3BlcnR5U2xvdCYpOwogCi0gICAgc3RhdGljIHB0cmRpZmZfdCBzdHJ1Y3R1cmVJRE9mZnNl
dCgpCi0gICAgewotICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFN0cnVjdHVyZSwgbV9i
bG9iKSArIFN0cnVjdHVyZUlEQmxvYjo6c3RydWN0dXJlSURPZmZzZXQoKTsKLSAgICB9Ci0KICAg
ICBzdGF0aWMgcHRyZGlmZl90IHByb3RvdHlwZU9mZnNldCgpCiAgICAgewogICAgICAgICByZXR1
cm4gT0JKRUNUX09GRlNFVE9GKFN0cnVjdHVyZSwgbV9wcm90b3R5cGUpOwpAQCAtOTQ4LDQ1ICs5
NTIsNDUgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY2xlYXJDYWNoZWRQcm90b3R5cGVDaGFpbigp
OwogCi0gICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgc19tYXhUcmFuc2l0aW9uTGVuZ3RoID0gNjQ7
Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgc19tYXhUcmFuc2l0aW9uTGVuZ3RoRm9yTm9uRXZh
bFB1dEJ5SWQgPSA1MTI7CisgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgc19tYXhUcmFuc2l0aW9u
TGVuZ3RoID0gNjQ7IC8vIG1hY09TfGlPUzogNCBieXRlcworICAgIHN0YXRpYyBjb25zdGV4cHIg
aW50IHNfbWF4VHJhbnNpdGlvbkxlbmd0aEZvck5vbkV2YWxQdXRCeUlkID0gNTEyOyAvLyBtYWNP
U3xpT1M6IDQgYnl0ZXMKIAogICAgIC8vIFRoZXNlIG5lZWQgdG8gYmUgcHJvcGVybHkgYWxpZ25l
ZCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSAnU3RydWN0dXJlJwogICAgIC8vIHBhcnQgb2YgdGhl
IG9iamVjdC4KLSAgICBTdHJ1Y3R1cmVJREJsb2IgbV9ibG9iOwotICAgIFR5cGVJbmZvOjpPdXRP
ZkxpbmVUeXBlRmxhZ3MgbV9vdXRPZkxpbmVUeXBlRmxhZ3M7CisgICAgU3RydWN0dXJlSURCbG9i
IG1fYmxvYjsgLy8gbWFjT1N8aU9TOiA0IGJ5dGVzCisgICAgVHlwZUluZm86Ok91dE9mTGluZVR5
cGVGbGFncyBtX291dE9mTGluZVR5cGVGbGFnczsgLy8gbWFjT1N8aU9TOiAyIGJ5dGVzCiAKLSAg
ICB1aW50OF90IG1faW5saW5lQ2FwYWNpdHk7CisgICAgdWludDhfdCBtX2lubGluZUNhcGFjaXR5
OyAvLyBtYWNPU3xpT1M6IDEgYnl0ZQogCi0gICAgQ29uY3VycmVudEpTTG9jayBtX2xvY2s7Cisg
ICAgQ29uY3VycmVudEpTTG9jayBtX2xvY2s7IC8vIG1hY09TfGlPUzogMSBieXRlCiAKLSAgICB1
aW50MzJfdCBtX2JpdEZpZWxkOworICAgIHVpbnQzMl90IG1fYml0RmllbGQ7IC8vIG1hY09TfGlP
UzogNCBieXRlcwogCi0gICAgV3JpdGVCYXJyaWVyPEpTR2xvYmFsT2JqZWN0PiBtX2dsb2JhbE9i
amVjdDsKLSAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4gbV9wcm90b3R5cGU7Ci0gICAgbXV0YWJs
ZSBXcml0ZUJhcnJpZXI8U3RydWN0dXJlQ2hhaW4+IG1fY2FjaGVkUHJvdG90eXBlQ2hhaW47Cisg
ICAgdWludDE2X3QgbV90cmFuc2l0aW9uT2Zmc2V0OyAvLyBtYWNPU3xpT1M6IDIgYnl0ZXMKKyAg
ICB1aW50MTZfdCBtX21heE9mZnNldDsgLy8gbWFjT1N8aU9TOiAyIGJ5dGVzCiAKLSAgICBXcml0
ZUJhcnJpZXI8SlNDZWxsPiBtX3ByZXZpb3VzT3JSYXJlRGF0YTsKKyAgICBXcml0ZUJhcnJpZXI8
SlNHbG9iYWxPYmplY3Q+IG1fZ2xvYmFsT2JqZWN0OyAvLyBtYWNPU3xpT1M6IDggYnl0ZXMKKyAg
ICBXcml0ZUJhcnJpZXI8VW5rbm93bj4gbV9wcm90b3R5cGU7IC8vIG1hY09TfGlPUzogOCBieXRl
cworICAgIG11dGFibGUgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZUNoYWluPiBtX2NhY2hlZFByb3Rv
dHlwZUNoYWluOyAvLyBtYWNPU3xpT1M6IDggYnl0ZXMKIAotICAgIFJlZlB0cjxVbmlxdWVkU3Ry
aW5nSW1wbD4gbV90cmFuc2l0aW9uUHJvcGVydHlOYW1lOworICAgIFdyaXRlQmFycmllcjxKU0Nl
bGw+IG1fcHJldmlvdXNPclJhcmVEYXRhOyAvLyBtYWNPU3xpT1M6IDggYnl0ZXMKIAotICAgIGNv
bnN0IENsYXNzSW5mbyogbV9jbGFzc0luZm87CisgICAgQ29tcGFjdFJlZlB0cjxVbmlxdWVkU3Ry
aW5nSW1wbD4gbV90cmFuc2l0aW9uUHJvcGVydHlOYW1lOyAvLyBtYWNPUzogOCBieXRlcywgaU9T
OiA0IGJ5dGVzCiAKLSAgICBTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGUgbV90cmFuc2l0aW9uVGFi
bGU7CisgICAgQ29tcGFjdFB0cjxjb25zdCBDbGFzc0luZm8+IG1fY2xhc3NJbmZvOyAvLyBtYWNP
U3xpT1M6IDggYnl0ZXMsIGlPUzogNCBieXRlcworCisgICAgU3RydWN0dXJlVHJhbnNpdGlvblRh
YmxlIG1fdHJhbnNpdGlvblRhYmxlOyAvLyBtYWNPU3xpT1M6IDggYnl0ZXMKIAogICAgIC8vIFNo
b3VsZCBiZSBhY2Nlc3NlZCB0aHJvdWdoIGVuc3VyZVByb3BlcnR5VGFibGUoKS4gRHVyaW5nIEdD
LCBpdCBtYXkgYmUgc2V0IHRvIDAgYnkgYW5vdGhlciB0aHJlYWQuCiAgICAgLy8gRHVyaW5nIGEg
SGVhcCBTbmFwc2hvdCBHQyB3ZSBhdm9pZCBjbGVhcmluZyB0aGUgdGFibGUgc28gaXQgaXMgc2Fm
ZSB0byB1c2UuCi0gICAgV3JpdGVCYXJyaWVyPFByb3BlcnR5VGFibGU+IG1fcHJvcGVydHlUYWJs
ZVVuc2FmZTsKKyAgICBXcml0ZUJhcnJpZXI8UHJvcGVydHlUYWJsZT4gbV9wcm9wZXJ0eVRhYmxl
VW5zYWZlOyAvLyBtYWNPU3xpT1M6IDggYnl0ZXMKIAotICAgIG11dGFibGUgSW5saW5lV2F0Y2hw
b2ludFNldCBtX3RyYW5zaXRpb25XYXRjaHBvaW50U2V0OworICAgIG11dGFibGUgSW5saW5lV2F0
Y2hwb2ludFNldCBtX3RyYW5zaXRpb25XYXRjaHBvaW50U2V0OyAvLyBtYWNPU3xpT1M6IDggYnl0
ZXMKIAogICAgIHN0YXRpY19hc3NlcnQoZmlyc3RPdXRPZkxpbmVPZmZzZXQgPCAyNTYpOwogCi0g
ICAgdWludDE2X3QgbV90cmFuc2l0aW9uT2Zmc2V0OwotICAgIHVpbnQxNl90IG1fbWF4T2Zmc2V0
OwotCi0gICAgdWludDMyX3QgbV9wcm9wZXJ0eUhhc2g7Ci0gICAgVGlueUJsb29tRmlsdGVyIG1f
c2VlblByb3BlcnRpZXM7CisgICAgdWludDMyX3QgbV9wcm9wZXJ0eUhhc2g7IC8vIDQKKyAgICBU
aW55Qmxvb21GaWx0ZXIgbV9zZWVuUHJvcGVydGllczsgLy8gbWFjT1N8aU9TOiA4IGJ5dGVzLCBp
T1M6IDQgYnl0ZXMKIAogICAgIGZyaWVuZCBjbGFzcyBWTUluc3BlY3RvcjsKICAgICBmcmllbmQg
Y2xhc3MgSlNEb2xsYXJWTUhlbHBlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZUlEQmxvYi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlSURCbG9iLmgKaW5kZXggZDRhYzE1MjkxODU0ZjRjNzk3MDgwZWI5MWM5YWRm
MzliYjhjN2Q1Yi4uYmY2NzA1OGRhNTVhNGM5ZTQxNDgyYWMwYTc3NzA1ZDg1ZmEzMTU0NSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSURCbG9iLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSURCbG9iLmgKQEAg
LTM3LDE4ICszNywxNiBAQCBjbGFzcyBTdHJ1Y3R1cmVJREJsb2IgewogcHVibGljOgogICAgIFN0
cnVjdHVyZUlEQmxvYigpID0gZGVmYXVsdDsKIAotICAgIFN0cnVjdHVyZUlEQmxvYihTdHJ1Y3R1
cmVJRCBzdHJ1Y3R1cmVJRCwgSW5kZXhpbmdUeXBlIGluZGV4aW5nTW9kZUluY2x1ZGluZ0hpc3Rv
cnksIGNvbnN0IFR5cGVJbmZvJiB0eXBlSW5mbykKKyAgICBTdHJ1Y3R1cmVJREJsb2IoSW5kZXhp
bmdUeXBlIGluZGV4aW5nTW9kZUluY2x1ZGluZ0hpc3RvcnksIGNvbnN0IFR5cGVJbmZvJiB0eXBl
SW5mbykKICAgICB7Ci0gICAgICAgIHUuZmllbGRzLnN0cnVjdHVyZUlEID0gc3RydWN0dXJlSUQ7
CiAgICAgICAgIHUuZmllbGRzLmluZGV4aW5nTW9kZUluY2x1ZGluZ0hpc3RvcnkgPSBpbmRleGlu
Z01vZGVJbmNsdWRpbmdIaXN0b3J5OwogICAgICAgICB1LmZpZWxkcy50eXBlID0gdHlwZUluZm8u
dHlwZSgpOwogICAgICAgICB1LmZpZWxkcy5pbmxpbmVUeXBlRmxhZ3MgPSB0eXBlSW5mby5pbmxp
bmVUeXBlRmxhZ3MoKTsKICAgICAgICAgdS5maWVsZHMuZGVmYXVsdENlbGxTdGF0ZSA9IENlbGxT
dGF0ZTo6RGVmaW5pdGVseVdoaXRlOwogICAgIH0KIAotICAgIHZvaWQgb3BlcmF0b3I9KGNvbnN0
IFN0cnVjdHVyZUlEQmxvYiYgb3RoZXIpIHsgdS5kb3VibGVXb3JkID0gb3RoZXIudS5kb3VibGVX
b3JkOyB9Ci0gICAgCi0gICAgU3RydWN0dXJlSUQgc3RydWN0dXJlSUQoKSBjb25zdCB7IHJldHVy
biB1LmZpZWxkcy5zdHJ1Y3R1cmVJRDsgfQorICAgIHZvaWQgb3BlcmF0b3I9KGNvbnN0IFN0cnVj
dHVyZUlEQmxvYiYgb3RoZXIpIHsgdS53b3JkMiA9IG90aGVyLnUud29yZDI7IH0KKwogICAgIElu
ZGV4aW5nVHlwZSBpbmRleGluZ01vZGVJbmNsdWRpbmdIaXN0b3J5KCkgY29uc3QgeyByZXR1cm4g
dS5maWVsZHMuaW5kZXhpbmdNb2RlSW5jbHVkaW5nSGlzdG9yeTsgfQogICAgIERlcGVuZGVuY3kg
ZmVuY2VkSW5kZXhpbmdNb2RlSW5jbHVkaW5nSGlzdG9yeShJbmRleGluZ1R5cGUmIGluZGV4aW5n
VHlwZSkKICAgICB7CkBAIC02MCwxMyArNTgsOCBAQCBwdWJsaWM6CiAgICAgCiAgICAgVHlwZUlu
Zm8gdHlwZUluZm8oVHlwZUluZm86Ok91dE9mTGluZVR5cGVGbGFncyBvdXRPZkxpbmVUeXBlRmxh
Z3MpIGNvbnN0IHsgcmV0dXJuIFR5cGVJbmZvKHR5cGUoKSwgaW5saW5lVHlwZUZsYWdzKCksIG91
dE9mTGluZVR5cGVGbGFncyk7IH0KICAgICAKLSAgICBpbnQzMl90IGJsb2JFeGNsdWRpbmdTdHJ1
Y3R1cmVJRCgpIGNvbnN0IHsgcmV0dXJuIHUud29yZHMud29yZDI7IH0KLSAgICBpbnQ2NF90IGJs
b2IoKSBjb25zdCB7IHJldHVybiB1LmRvdWJsZVdvcmQ7IH0KLSAgICAKLSAgICBzdGF0aWMgcHRy
ZGlmZl90IHN0cnVjdHVyZUlET2Zmc2V0KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBPQkpFQ1Rf
T0ZGU0VUT0YoU3RydWN0dXJlSURCbG9iLCB1LmZpZWxkcy5zdHJ1Y3R1cmVJRCk7Ci0gICAgfQor
ICAgIGludDMyX3QgYmxvYkV4Y2x1ZGluZ1N0cnVjdHVyZUlEKCkgY29uc3QgeyByZXR1cm4gdS53
b3JkMTsgfQorICAgIGludDMyX3QgYmxvYigpIGNvbnN0IHsgcmV0dXJuIHUud29yZDI7IH0KIAog
ICAgIHN0YXRpYyBwdHJkaWZmX3QgaW5kZXhpbmdNb2RlSW5jbHVkaW5nSGlzdG9yeU9mZnNldCgp
CiAgICAgewpAQCAtNzYsMjAgKzY5LDE1IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdW5pb24g
RGF0YSB7CiAgICAgICAgIHN0cnVjdCB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxk
IHJlbW92ZSB0aGlzIHNpbmNlIHRoZSBzdHJ1Y3R1cmVJRCBjYW4gYmUgZGlyZWN0bHkgY29tcHV0
ZWQgZnJvbSB0aGUgU3RydWN0dXJlKgotICAgICAgICAgICAgU3RydWN0dXJlSUQgc3RydWN0dXJl
SUQ7CiAgICAgICAgICAgICBJbmRleGluZ1R5cGUgaW5kZXhpbmdNb2RlSW5jbHVkaW5nSGlzdG9y
eTsKICAgICAgICAgICAgIEpTVHlwZSB0eXBlOwogICAgICAgICAgICAgVHlwZUluZm86OklubGlu
ZVR5cGVGbGFncyBpbmxpbmVUeXBlRmxhZ3M7CiAgICAgICAgICAgICBDZWxsU3RhdGUgZGVmYXVs
dENlbGxTdGF0ZTsKICAgICAgICAgfSBmaWVsZHM7Ci0gICAgICAgIHN0cnVjdCB7Ci0gICAgICAg
ICAgICBpbnQzMl90IHdvcmQxOwotICAgICAgICAgICAgaW50MzJfdCB3b3JkMjsKLSAgICAgICAg
fSB3b3JkczsKLSAgICAgICAgaW50NjRfdCBkb3VibGVXb3JkOworICAgICAgICBpbnQzMl90IHdv
cmQxOworICAgICAgICBpbnQzMl90IHdvcmQyOwogCi0gICAgICAgIERhdGEoKSB7IGRvdWJsZVdv
cmQgPSAweGJiYWRiZWVmOyB9CisgICAgICAgIERhdGEoKSB7IHdvcmQyID0gMHhiYmFkYmVlZjsg
fQogICAgIH07CiAKICAgICBEYXRhIHU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCmluZGV4IGM0ZDJiOTZjMjkzMDcxNTUx
Zjk2YjhmYTRkY2VhZjUwOTVhMDliOTUuLjQ0YjY5MmI3ZWU1MjlmMzkxZGNkMjVlZDk4ZmM3ZDI2
ZGY3MTVkMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFz
c2VtYmx5RnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dl
YkFzc2VtYmx5RnVuY3Rpb24uY3BwCkBAIC0yNjgsNyArMjY4LDcgQEAgTWFjcm9Bc3NlbWJsZXJD
b2RlUHRyPEpTRW50cnlQdHJUYWc+IFdlYkFzc2VtYmx5RnVuY3Rpb246OmpzQ2FsbEVudHJ5cG9p
bnRTbG93KCkKIAogICAgICAgICAgICAgICAgIHN0YWNrTGltaXRHUFJJc0Nsb2JiZXJlZCA9IHRy
dWU7CiAgICAgICAgICAgICAgICAgaml0LmVtaXRMb2FkU3RydWN0dXJlKHZtLCBzY3JhdGNoR1BS
LCBzY3JhdGNoR1BSKTsKLSAgICAgICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6
OkFkZHJlc3Moc2NyYXRjaEdQUiwgU3RydWN0dXJlOjpjbGFzc0luZm9PZmZzZXQoKSksIHNjcmF0
Y2hHUFIpOworICAgICAgICAgICAgICAgIGppdC5sb2FkQ29tcGFjdFB0cihDQ2FsbEhlbHBlcnM6
OkFkZHJlc3Moc2NyYXRjaEdQUiwgU3RydWN0dXJlOjpjbGFzc0luZm9PZmZzZXQoKSksIHNjcmF0
Y2hHUFIpOwogCiAgICAgICAgICAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2ZpbmFsPFdl
YkFzc2VtYmx5RnVuY3Rpb24+Ojp2YWx1ZSwgIldlIGRvIG5vdCBjaGVjayBmb3Igc3VidHlwZXMg
YmVsb3ciKTsKICAgICAgICAgICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfZmluYWw8V2Vi
QXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24+Ojp2YWx1ZSwgIldlIGRvIG5vdCBjaGVjayBmb3Igc3Vi
dHlwZXMgYmVsb3ciKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDg4MTkyMGRjMmVmYjUwNDQxMDZkNWFhNTQ5YzUyN2QwNDA3MGFkMTMuLjUxMTcyMzNmMDIy
OWQ0NzljYjk5YWZmMzI4MDgwYTIyZGJkNTRhYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RG
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtODExLDYgKzgxMSw4IEBACiAJCUZFMzVEMDkyMjdEQzVFQ0Mw
MDlERkE1QiAvKiBTdGFja0NoZWNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEZFMzVEMDkxMjdEQzVFQ0MwMDlERkE1QiAvKiBTdGFja0NoZWNrLmNw
cCAqLzsgfTsKIAkJRkVEQUNEM0QxNjMwRjgzRjAwQzY5NjM0IC8qIFN0YWNrU3RhdHMuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVEQUNEM0IxNjMw
RjgzRjAwQzY5NjM0IC8qIFN0YWNrU3RhdHMuY3BwICovOyB9OwogCQlGRUVBNERGOTIxNkQ3QkU0
MDBBQzA2MDIgLyogU3RhY2tQb2ludGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEZFRUE0REY4MjE2RDdCRTQwMEFDMDYwMiAvKiBTdGFja1BvaW50
ZXIuY3BwICovOyB9OworCQlGRjg5NUYxMTI4MkFCOTY0MDBFN0JBRTggLyogQ29tcGFjdFJlZlB0
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkY4OTVG
MTAyODJBQjk2NDAwRTdCQUU4IC8qIENvbXBhY3RSZWZQdHIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlGRkVFNDZGNDI4MjVERjgwMDAzQkM5ODEg
LyogQ29tcGFjdFB0ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRkZFRTQ2RjMyODI1REY4MDAwM0JDOTgxIC8qIENvbXBhY3RQdHIuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogLyogRW5kIFBCWEJ1aWxkRmls
ZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWEJ1aWxkUnVsZSBzZWN0aW9uICovCkBAIC0xNzE0
LDYgKzE3MTYsOCBAQAogCQlGRUVBNERGODIxNkQ3QkU0MDBBQzA2MDIgLyogU3RhY2tQb2ludGVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0YWNrUG9pbnRlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFRjI5NUJGMjBCNDlEQ0IwMENGMjgz
QSAvKiBVVEY4Q29udmVyc2lvbkVycm9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFVURjhDb252ZXJzaW9uRXJyb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RkYwQTQzNjU4ODk1NEYzQ0IwN0RCRUNBIC8qIFN0ZExpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU3RkTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlG
Rjg5NUYxMDI4MkFCOTY0MDBFN0JBRTggLyogQ29tcGFjdFJlZlB0ci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBDb21wYWN0UmVmUHRyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUZGRUU0NkYzMjgyNURGODAwMDNCQzk4MSAvKiBDb21wYWN0UHRyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbXBhY3RQdHIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIC8qIEVuZCBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KIAogLyogQmVn
aW4gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwpAQCAtMTkzMCw2ICsxOTM0LDgg
QEAKIAkJCQkwRjY2QjI4MTFEQzk3QkFCMDA0QTFEM0YgLyogQ2xvY2tUeXBlLmggKi8sCiAJCQkJ
MEZDNEVERTUxNjk2MTQ5NjAwRjY1MDQxIC8qIENvbW1hUHJpbnRlci5oICovLAogCQkJCUUzQ0Y3
NjkwMjExNUQ2QkEwMDkxREU0OCAvKiBDb21wYWN0UG9pbnRlclR1cGxlLmggKi8sCisJCQkJRkZF
RTQ2RjMyODI1REY4MDAwM0JDOTgxIC8qIENvbXBhY3RQdHIuaCAqLywKKwkJCQlGRjg5NUYxMDI4
MkFCOTY0MDBFN0JBRTggLyogQ29tcGFjdFJlZlB0ci5oICovLAogCQkJCUUzODAyMERCMjQwMUMw
OTMwMDM3Q0E5RSAvKiBDb21wYWN0UmVmUHRyVHVwbGUuaCAqLywKIAkJCQk5Qjk2RTlCMzI0RkY3
N0I4MDAxNzU2QzMgLyogQ29tcGFjdFVuaXF1ZVB0clR1cGxlLmggKi8sCiAJCQkJMEY4RjJCOEYx
NzJFMDBGMDAwN0RCREE1IC8qIENvbXBpbGF0aW9uVGhyZWFkLmNwcCAqLywKQEAgLTI4NjEsNiAr
Mjg2Nyw4IEBACiAJCQkJRERGMzA3RjQyN0MwODZFQTAwNkE1MjZGIC8qIENvbGxhdG9yLmggaW4g
SGVhZGVycyAqLywKIAkJCQlERDNEQzkxNjI3QTRCRjhFMDA3RTVCNjEgLyogQ29tbWFQcmludGVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQlERDNEQzhGNjI3QTRCRjhFMDA3RTVCNjEgLyogQ29tcGFj
dFBvaW50ZXJUdXBsZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkZFRTQ2RjQyODI1REY4MDAwM0JD
OTgxIC8qIENvbXBhY3RQdHIuaCBpbiBIZWFkZXJzICovLAorCQkJCUZGODk1RjExMjgyQUI5NjQw
MEU3QkFFOCAvKiBDb21wYWN0UmVmUHRyLmggaW4gSGVhZGVycyAqLywKIAkJCQlERDNEQzkzOTI3
QTRCRjhFMDA3RTVCNjEgLyogQ29tcGFjdFJlZlB0clR1cGxlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlERDNEQzkzNTI3QTRCRjhFMDA3RTVCNjEgLyogQ29tcGFjdFVuaXF1ZVB0clR1cGxlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlERDNEQzkwNzI3QTRCRjhFMDA3RTVCNjEgLyogQ29tcGlsYXRpb25U
aHJlYWQuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ01ha2VM
aXN0cy50eHQgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAppbmRleCA3ZWQwYzY1YmY3
MDI1MTAwYjU5MjUwNzU3ZTY3MzYyNmM2Y2JlNGEyLi5kYTYxNTE2MzlhNzA3YmVhZWY4YTNlMzMz
YTJhMDc2MTc3NGY0NjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4
dAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dApAQCAtMzUsNiArMzUsOCBAQCBz
ZXQoV1RGX1BVQkxJQ19IRUFERVJTCiAgICAgQ2xvY2tUeXBlLmgKICAgICBDb21tYVByaW50ZXIu
aAogICAgIENvbXBhY3RQb2ludGVyVHVwbGUuaAorICAgIENvbXBhY3RQdHIuaAorICAgIENvbXBh
Y3RSZWZQdHIuaAogICAgIENvbXBhY3RSZWZQdHJUdXBsZS5oCiAgICAgQ29tcGFjdFVuaXF1ZVB0
clR1cGxlLmgKICAgICBDb21waWxhdGlvblRocmVhZC5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9Db21wYWN0UHRyLmggYi9Tb3VyY2UvV1RGL3d0Zi9Db21wYWN0UHRyLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNjNlYTZlYmE2YzdlZmYxYzhhYzQyNTVhYmM0NjY1OGU1OWY3MDVlYQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XVEYvd3RmL0NvbXBhY3RQdHIuaApAQCAtMCwwICsxLDEyOSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSA8Y3N0ZGludD4KKyNpbmNsdWRlIDx1dGlsaXR5PgorI2luY2x1ZGUgPHd0Zi9D
b21wYWN0UmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorCituYW1lc3Bh
Y2UgV1RGIHsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRyYWl0cyA9IENvbXBh
Y3RQdHJUcmFpdHM8VD4+CitjbGFzcyBDb21wYWN0UHRyIHsKK3B1YmxpYzoKKyAgICBBTFdBWVNf
SU5MSU5FIGNvbnN0ZXhwciBDb21wYWN0UHRyKCkKKyAgICAgICAgOiBtX3B0cihudWxscHRyKQor
ICAgIHsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIGNvbnN0ZXhwciBDb21wYWN0UHRyKHN0
ZDo6bnVsbHB0cl90KQorICAgICAgICA6IG1fcHRyKG51bGxwdHIpCisgICAgeworICAgIH0KKwor
ICAgIEFMV0FZU19JTkxJTkUgQ29tcGFjdFB0cihUKiBwdHIpCisgICAgICAgIDogbV9wdHIocHRy
KQorICAgIHsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIENvbXBhY3RQdHIoY29uc3QgQ29t
cGFjdFB0ciYgbykKKyAgICAgICAgOiBtX3B0cihvLm1fcHRyKQorICAgIHsKKyAgICB9CisKKyAg
ICBBTFdBWVNfSU5MSU5FIENvbXBhY3RQdHIoQ29tcGFjdFB0ciYmIG8pCisgICAgICAgIDogbV9w
dHIoby5tX3B0cikKKyAgICB7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB+Q29tcGFjdFB0
cigpID0gZGVmYXVsdDsKKworICAgIFQmIG9wZXJhdG9yKigpIGNvbnN0CisgICAgeworICAgICAg
ICBUKiBwdHIgPSBUcmFpdHM6OnVud3JhcChtX3B0cik7CisgICAgICAgIEFTU0VSVChwdHIpOwor
ICAgICAgICByZXR1cm4gKnB0cjsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIFQqIG9wZXJh
dG9yLT4oKSBjb25zdCB7IHJldHVybiBUcmFpdHM6OnVud3JhcChtX3B0cik7IH0KKworICAgIGJv
b2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIW1fcHRyOyB9CisKKyAgICBleHBsaWNpdCBv
cGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gISFtX3B0cjsgfQorCisgICAgQ29tcGFjdFB0
ciYgb3BlcmF0b3I9KHN0ZDo6bnVsbHB0cl90KQorICAgIHsKKyAgICAgICAgVHJhaXRzOjpleGNo
YW5nZShtX3B0ciwgbnVsbHB0cik7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKKyAg
ICBDb21wYWN0UHRyJiBvcGVyYXRvcj0oY29uc3QgQ29tcGFjdFB0ciYgbykKKyAgICB7CisgICAg
ICAgIENvbXBhY3RQdHIgcHRyID0gbzsKKyAgICAgICAgVHJhaXRzOjpzd2FwKG1fcHRyLCBwdHIp
OworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAgQ29tcGFjdFB0ciYgb3BlcmF0
b3I9KFQqIG9wdHIpCisgICAgeworICAgICAgICBDb21wYWN0UHRyIHB0ciA9IG9wdHI7CisgICAg
ICAgIFRyYWl0czo6c3dhcChtX3B0ciwgcHRyKTsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAg
IH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBYLCB0eXBlbmFtZSBZPgorICAgIENvbXBhY3RQ
dHImIG9wZXJhdG9yPShjb25zdCBDb21wYWN0UHRyPFg+JiBvKQorICAgIHsKKyAgICAgICAgQ29t
cGFjdFB0ciBwdHIgPSBvOworICAgICAgICBUcmFpdHM6OnN3YXAobV9wdHIsIHB0cik7CisgICAg
ICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKKyAgICBDb21wYWN0UHRyJiBvcGVyYXRvcj0oQ29t
cGFjdFB0ciYmIG8pCisgICAgeworICAgICAgICBDb21wYWN0UHRyIHB0ciA9IFdURk1vdmUobyk7
CisgICAgICAgIFRyYWl0czo6c3dhcChtX3B0ciwgcHRyKTsKKyAgICAgICAgcmV0dXJuICp0aGlz
OworICAgIH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBYLCB0eXBlbmFtZSBZPgorICAgIENv
bXBhY3RQdHImIG9wZXJhdG9yPShDb21wYWN0UHRyPFg+JiYgbykKKyAgICB7CisgICAgICAgIENv
bXBhY3RQdHIgcHRyID0gV1RGTW92ZShvKTsKKyAgICAgICAgVHJhaXRzOjpzd2FwKG1fcHRyLCBw
dHIpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAgVCogZ2V0KCkgY29uc3Qg
eyByZXR1cm4gVHJhaXRzOjp1bndyYXAobV9wdHIpOyB9CisKK3ByaXZhdGU6CisgICAgdHlwZW5h
bWUgVHJhaXRzOjpTdG9yYWdlVHlwZSBtX3B0cjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdURgor
Cit1c2luZyBXVEY6OkNvbXBhY3RQdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Db21w
YWN0UmVmUHRyLmggYi9Tb3VyY2UvV1RGL3d0Zi9Db21wYWN0UmVmUHRyLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NjM0NzEyYTE1NGVkMTNiZTExY2UzNjBkNDMwYTEzN2E3MDZhMmEzYQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XVEYvd3RmL0NvbXBhY3RSZWZQdHIuaApAQCAtMCwwICsxLDE2NiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSA8Y3N0ZGludD4KKyNpbmNsdWRlIDx1dGlsaXR5PgorI2luY2x1ZGUgPHd0Zi9S
YXdQdHJUcmFpdHMuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1N0
ZExpYkV4dHJhcy5oPgorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+
CitjbGFzcyBDb21wYWN0ZWQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworCitwdWJs
aWM6CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBzdGF0aWNfYXNzZXJ0KE1BQ0hfVk1f
TUFYX0FERFJFU1MgPD0gKDF1bGwgPDwgMzYpKTsKKyAgICB1c2luZyBTdG9yYWdlU2l6ZSA9IHVp
bnQzMl90OworI2Vsc2UKKyAgICB1c2luZyBTdG9yYWdlU2l6ZSA9IFQqOworI2VuZGlmCisKKyAg
ICBDb21wYWN0ZWQoKQorICAgIHsKKyAgICAgICAgc2V0KG51bGxwdHIpOworICAgIH0KKworICAg
IENvbXBhY3RlZChudWxscHRyX3QpCisgICAgeworICAgICAgICBzZXQobnVsbHB0cik7CisgICAg
fQorCisgICAgQ29tcGFjdGVkKFQqIHB0cikKKyAgICB7CisgICAgICAgIHNldChwdHIpOworICAg
IH0KKworICAgIENvbXBhY3RlZDxUPiYgb3BlcmF0b3I9KFQqIHB0cikKKyAgICB7CisgICAgICAg
IHNldChwdHIpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAgYm9vbCBvcGVy
YXRvciEoKSBjb25zdCB7IHJldHVybiAhZ2V0KCk7IH0KKworICAgIGV4cGxpY2l0IG9wZXJhdG9y
IGJvb2woKSBjb25zdCB7IHJldHVybiAhIWdldCgpOyB9CisKKyAgICBUKiBnZXQoKSBjb25zdAor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGRlY29kZShtX3B0cik7CisgICAgfQorCisgICAgdm9pZCBz
ZXQoVCogcHRyKQorICAgIHsKKyAgICAgICAgbV9wdHIgPSBlbmNvZGUocHRyKTsKKyAgICB9CisK
KyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVT4KKyAgICBUKiBleGNoYW5nZShVJiYgbmV3VmFsdWUpCisg
ICAgeworICAgICAgICBUKiBvbGRWYWx1ZSA9IGdldCgpOworICAgICAgICBzZXQoc3RkOjpmb3J3
YXJkPFU+KG5ld1ZhbHVlKSk7CisgICAgICAgIHJldHVybiBvbGRWYWx1ZTsKKyAgICB9CisKKyAg
ICB2b2lkIHN3YXAobnVsbHB0cl90KSB7IHNldChudWxscHRyKTsgfQorCisgICAgdm9pZCBzd2Fw
KENvbXBhY3RlZCYgb3RoZXIpCisgICAgeworICAgICAgICBUKiB0MSA9IGdldCgpOworICAgICAg
ICBUKiB0MiA9IG90aGVyLmdldCgpOworICAgICAgICBzZXQodDIpOworICAgICAgICBvdGhlci5z
ZXQodDEpOworICAgIH0KKworICAgIHZvaWQgc3dhcChUKiB0MikKKyAgICB7CisgICAgICAgIFQq
IHQxID0gZ2V0KCk7CisgICAgICAgIHN0ZDo6c3dhcCh0MSwgdDIpOworICAgICAgICBzZXQodDEp
OworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgY29uc3RleHByIFN0b3JhZ2VTaXplIGVuY29k
ZShUKiBwdHIpIGNvbnN0CisgICAgeworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgICAg
IEFTU0VSVCghKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihwdHIpICYgMHhGKSk7CisgICAg
ICAgIHJldHVybiBzdGF0aWNfY2FzdDx1aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDx1aW50cHRy
X3Q+KHB0cikgPj4gNCk7CisjZWxzZQorICAgICAgICByZXR1cm4gcHRyOworI2VuZGlmCisgICAg
fQorCisgICAgQUxXQVlTX0lOTElORSBjb25zdGV4cHIgVCogZGVjb2RlKGNvbnN0IFN0b3JhZ2VT
aXplJiBwdHIpIGNvbnN0CisgICAgeworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgICAg
IHJldHVybiByZWludGVycHJldF9jYXN0PFQqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KHB0cikg
PDwgNCk7CisjZWxzZQorICAgICAgICByZXR1cm4gcHRyOworI2VuZGlmCisgICAgfQorCitwcml2
YXRlOgorICAgIFN0b3JhZ2VTaXplIG1fcHRyOworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+
CitzdHJ1Y3QgR2V0UHRySGVscGVyPENvbXBhY3RlZDxUPj4geworICAgIHVzaW5nIFB0clR5cGUg
PSBUKjsKKyAgICBzdGF0aWMgVCogZ2V0UHRyKGNvbnN0IENvbXBhY3RlZDxUPiYgcCkgeyByZXR1
cm4gY29uc3RfY2FzdDxUKj4ocC5nZXQoKSk7IH0KK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBU
Pgorc3RydWN0IElzU21hcnRQdHI8Q29tcGFjdGVkPFQ+PiB7CisgICAgc3RhdGljIGNvbnN0ZXhw
ciBib29sIHZhbHVlID0gdHJ1ZTsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RydWN0
IENvbXBhY3RQdHJUcmFpdHMgeworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBVPgorICAgIHVzaW5n
IFJlYmluZFRyYWl0cyA9IFJhd1B0clRyYWl0czxVPjsKKworICAgIHVzaW5nIFN0b3JhZ2VUeXBl
ID0gQ29tcGFjdGVkPFQ+OworCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+CisgICAgc3RhdGlj
IEFMV0FZU19JTkxJTkUgVCogZXhjaGFuZ2UoU3RvcmFnZVR5cGUmIHB0ciwgVSYmIG5ld1ZhbHVl
KSB7IHJldHVybiBwdHIuZXhjaGFuZ2UobmV3VmFsdWUpOyB9CisKKyAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgT3RoZXI+CisgICAgc3RhdGljIEFMV0FZU19JTkxJTkUgdm9pZCBzd2FwKFN0b3JhZ2VU
eXBlJiBhLCBPdGhlciYgYikgeyBhLnN3YXAoYik7IH0KKworICAgIHN0YXRpYyBBTFdBWVNfSU5M
SU5FIFQqIHVud3JhcChjb25zdCBTdG9yYWdlVHlwZSYgcHRyKSB7IHJldHVybiBwdHIuZ2V0KCk7
IH0KKworICAgIHN0YXRpYyBTdG9yYWdlVHlwZSBoYXNoVGFibGVEZWxldGVkVmFsdWUoKSB7IHJl
dHVybiBiaXR3aXNlX2Nhc3Q8U3RvcmFnZVR5cGU+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oLTEp
KTsgfQorICAgIHN0YXRpYyBBTFdBWVNfSU5MSU5FIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFs
dWUoY29uc3QgU3RvcmFnZVR5cGUmIHB0cikgeyByZXR1cm4gcHRyID09IGhhc2hUYWJsZURlbGV0
ZWRWYWx1ZSgpOyB9Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3VzaW5nIENvbXBhY3RS
ZWZQdHIgPSBSZWZQdHI8VCwgQ29tcGFjdFB0clRyYWl0czxUPj47CisKK30gLy8gbmFtZXNwYWNl
IFdURgorCit1c2luZyBXVEY6OkNvbXBhY3RSZWZQdHI7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>459467</attachid>
            <date>2022-05-16 17:42:57 -0700</date>
            <delta_ts>2022-05-16 17:51:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-240407-20220516174256.patch</filename>
            <type>text/plain</type>
            <size>77513</size>
            <attacher name="Yijia Huang">yijia_huang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzODY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
MGFmMzcwNWZjNTU3ZDczMjNmNGJmMGVjZjA0ZTIzYzI4NjlkMWM1Li5hMWMwZjQwMWFlZDhlOWU2
ODgzMjRmZWQ3YjkzMjlmMGQwODQ3NTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MiBAQAorMjAyMi0wNS0xNiAgWWlqaWEgSHVhbmcgIDx5aWppYV9odWFuZ0BhcHBsZS5j
b20+CisKKyAgICAgICAgUkVHUkVTU0lPTiAocjI4NTk1NSk6IDIlIHJlZ3Jlc3Npb24gb24gUkFN
aWZpY2F0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yNDA0MDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAg
ICAgICAgKiBmdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oOgorICAgICAgICAqIGZ0bC9G
VExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0Iz
Ojpjb21waWxlQ29tcGFyZVN0cmljdEVxKToKKyAgICAgICAgKiBoZWFwL0NvbXBhY3RCbG9vbUZp
bHRlci5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6Q29tcGFjdEJsb29tRmlsdGVyOjpDb21wYWN0
Qmxvb21GaWx0ZXIpOgorICAgICAgICAoSlNDOjpDb21wYWN0Qmxvb21GaWx0ZXI6OmFkZCk6Cisg
ICAgICAgIChKU0M6OkNvbXBhY3RCbG9vbUZpbHRlcjo6cnVsZU91dCBjb25zdCk6CisgICAgICAg
IChKU0M6OkNvbXBhY3RCbG9vbUZpbHRlcjo6cmVzZXQpOgorICAgICAgICAoSlNDOjpDb21wYWN0
Qmxvb21GaWx0ZXI6OmJpdHMgY29uc3QpOgorICAgICAgICAqIGppdC9Bc3NlbWJseUhlbHBlcnMu
Y3BwOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmVtaXRTdG9yZVN0cnVjdHVyZVdp
dGhUeXBlSW5mbyk6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6ZW1pdEVuY29kZVN0
cnVjdHVyZSk6CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5oOgorICAgICAgICAoSlND
OjpBc3NlbWJseUhlbHBlcnM6OmVtaXRTdG9yZVN0cnVjdHVyZVdpdGhUeXBlSW5mbyk6CisgICAg
ICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6bG9hZENvbXBhY3RQdHIpOgorICAgICAgICAoSlND
OjpBc3NlbWJseUhlbHBlcnM6OmJyYW5jaENvbXBhY3RQdHIpOgorICAgICAgICAqIGppdC9KSVRQ
cm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6Z2VuZXJhdGVPcEdldEZyb21T
Y29wZVRodW5rKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF90b19zY29wZSk6Cisg
ICAgICAgICogcnVudGltZS9DbGFzc0luZm8uaDoKKyAgICAgICAgKEpTQzo6Q2xhc3NJbmZvOjpv
ZmZzZXRPZlBhcmVudENsYXNzKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Q2xhc3NJbmZvOjpp
c1N1YkNsYXNzT2YgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJl
LmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1
bnRpbWUvU3RydWN0dXJlLmg6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6aWQgY29uc3QpOgor
ICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmlkQmxvYiBjb25zdCk6CisgICAgICAgIChKU0M6OlN0
cnVjdHVyZTo6Y2xhc3NJbmZvRm9yQ2VsbHMgY29uc3QpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1
cmU6OnN0cnVjdHVyZUlET2Zmc2V0KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL1N0cnVj
dHVyZUlEQmxvYi5oOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVJREJsb2I6OlN0cnVjdHVyZUlE
QmxvYik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZUlEQmxvYjo6b3BlcmF0b3I9KToKKyAgICAg
ICAgKEpTQzo6U3RydWN0dXJlSURCbG9iOjpibG9iRXhjbHVkaW5nU3RydWN0dXJlSUQgY29uc3Qp
OgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVJREJsb2I6OmJsb2IgY29uc3QpOgorICAgICAgICAo
SlNDOjpTdHJ1Y3R1cmVJREJsb2I6OnN0cnVjdHVyZUlEIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6U3RydWN0dXJlSURCbG9iOjpzdHJ1Y3R1cmVJRE9mZnNldCk6IERlbGV0ZWQuCisg
ICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6
V2ViQXNzZW1ibHlGdW5jdGlvbjo6anNDYWxsRW50cnlwb2ludFNsb3cpOgorCiAyMDIyLTA1LTA1
ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCwgcGFydGlhbCByZXZlcnQgb2YgcjI5MzgxMyBiZWNhdXNlIG9mIHByb3Bvc2FsJ3MgaXNzdWUu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9n
CmluZGV4IDZlMTk4NDZlMGUxOTE2MTAzM2FkYTVkMzAwZDgxMTk0NmM4Yzk5NTAuLjdiNWJhMjQ1
YWU2ZmVlMzIxMTNlNTI1YjYyMzcyNDVmZDYyZGYwNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIw
MjItMDUtMTYgIFlpamlhIEh1YW5nICA8eWlqaWFfaHVhbmdAYXBwbGUuY29tPgorCisgICAgICAg
IFJFR1JFU1NJT04gKHIyODU5NTUpOiAyJSByZWdyZXNzaW9uIG9uIFJBTWlmaWNhdGlvbgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQwNDA3CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXVEYueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3dGYvQ01ha2VMaXN0cy50eHQ6CisgICAg
ICAgICogd3RmL0NvbXBhY3RQdHIuaDogQWRkZWQuCisgICAgICAgIChXVEY6OkNvbXBhY3RQdHI6
OkNvbXBhY3RQdHIpOgorICAgICAgICAoV1RGOjpDb21wYWN0UHRyOjpvcGVyYXRvciogY29uc3Qp
OgorICAgICAgICAoV1RGOjpDb21wYWN0UHRyOjpvcGVyYXRvci0+IGNvbnN0KToKKyAgICAgICAg
KFdURjo6Q29tcGFjdFB0cjo6b3BlcmF0b3IhIGNvbnN0KToKKyAgICAgICAgKFdURjo6Q29tcGFj
dFB0cjo6b3BlcmF0b3IgYm9vbCBjb25zdCk6CisgICAgICAgIChXVEY6OkNvbXBhY3RQdHI6Om9w
ZXJhdG9yPSk6CisgICAgICAgIChXVEY6OkNvbXBhY3RQdHI6OmdldCBjb25zdCk6CisgICAgICAg
ICogd3RmL0NvbXBhY3RSZWZQdHIuaDogQWRkZWQuCisgICAgICAgIChXVEY6OkNvbXBhY3RlZDo6
Q29tcGFjdGVkKToKKyAgICAgICAgKFdURjo6Q29tcGFjdGVkOjpvcGVyYXRvcj0pOgorICAgICAg
ICAoV1RGOjpDb21wYWN0ZWQ6Om9wZXJhdG9yLT4gY29uc3QpOgorICAgICAgICAoV1RGOjpDb21w
YWN0ZWQ6Om9wZXJhdG9yKiBjb25zdCk6CisgICAgICAgIChXVEY6OkNvbXBhY3RlZDo6b3BlcmF0
b3IhIGNvbnN0KToKKyAgICAgICAgKFdURjo6Q29tcGFjdGVkOjpvcGVyYXRvciBib29sIGNvbnN0
KToKKyAgICAgICAgKFdURjo6Q29tcGFjdGVkOjpnZXQgY29uc3QpOgorICAgICAgICAoV1RGOjpD
b21wYWN0ZWQ6OnNldCk6CisgICAgICAgIChXVEY6OkNvbXBhY3RlZDo6ZXhjaGFuZ2UpOgorICAg
ICAgICAoV1RGOjpDb21wYWN0ZWQ6OnN3YXApOgorICAgICAgICAoV1RGOjpDb21wYWN0ZWQ6OmVu
Y29kZSk6CisgICAgICAgIChXVEY6OkNvbXBhY3RlZDo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAg
KFdURjo6Q29tcGFjdGVkOjpkZWNvZGUgY29uc3QpOgorICAgICAgICAoV1RGOjpHZXRQdHJIZWxw
ZXI8Q29tcGFjdGVkPFQ+Pjo6Z2V0UHRyKToKKyAgICAgICAgKFdURjo6Q29tcGFjdFB0clRyYWl0
czo6ZXhjaGFuZ2UpOgorICAgICAgICAoV1RGOjpDb21wYWN0UHRyVHJhaXRzOjpzd2FwKToKKyAg
ICAgICAgKFdURjo6Q29tcGFjdFB0clRyYWl0czo6dW53cmFwKToKKyAgICAgICAgKFdURjo6Q29t
cGFjdFB0clRyYWl0czo6aGFzaFRhYmxlRGVsZXRlZFZhbHVlKToKKyAgICAgICAgKFdURjo6Q29t
cGFjdFB0clRyYWl0czo6aXNIYXNoVGFibGVEZWxldGVkVmFsdWUpOgorCiAyMDIyLTA1LTA1ICBC
cmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBhYmFu
ZG9uZWQgV0tQcmVmZXJlbmNlIGZvciBBbHdheXNVc2VBY2NlbGVyYXRlZE92ZXJmbG93U2Nyb2xs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggYTU3YjFhNzY0YjE3NjZiNWJh
YzEwNTI2ZWFiODZkMjQxYzUxYWQ4OS4uZGUxNzRhZDFlZTBmZDFhMzk3MDZmNTIzZDljMzFlZjZl
OWM5NjgxYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNzA0LDYgKzcw
NCw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAg
aGVhcC9DZWxsU3RhdGUuaAogICAgIGhlYXAvQ29sbGVjdGlvblNjb3BlLmgKICAgICBoZWFwL0Nv
bGxlY3RvclBoYXNlLmgKKyAgICBoZWFwL0NvbXBhY3RCbG9vbUZpbHRlci5oCiAgICAgaGVhcC9D
b21wbGV0ZVN1YnNwYWNlLmgKICAgICBoZWFwL0NvbXBsZXRlU3Vic3BhY2VJbmxpbmVzLmgKICAg
ICBoZWFwL0NvbnN0cmFpbnRDb25jdXJyZW5jeS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IDIyZDA5MTMyMGQxNmU3YzkxZDAzNjhhOGIyMzBmNTkyNzFjZmZkMTcuLmJhNzRhMWUx
ZGQ2MzVkMzdmN2FmMTE2MTU3ODVhNGJmOTVhYjIyMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0yMTI5LDYgKzIxMjksNyBAQAogCQlGRUY1QjQyQzI2MjhDQkM4MDAxNkU3NzYg
LyogVk1UcmFwc0lubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEZFRjVCNDJCMjYyOENCQzgwMDE2RTc3NiAvKiBWTVRyYXBzSW5saW5lcy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFRjVCNDMw
MjYyQTMzOEIwMDE2RTc3NiAvKiBFeGNlcHRpb25FeHBlY3RhdGlvbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVGNUI0MkYyNjJBMzM4QjAwMTZFNzc2
IC8qIEV4Y2VwdGlvbkV4cGVjdGF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkVGRDZGQzYxRDVFNzk5MjAwOEYyRjBCIC8qIEpTU3RyaW5n
SW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RkVGRDZGQzUxRDVFNzk3MDAwOEYyRjBCIC8qIEpTU3RyaW5nSW5saW5lcy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUZGMjVCOTM0MjgzMzA2REIw
MEUwM0Y0RCAvKiBDb21wYWN0Qmxvb21GaWx0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZGMjVCOTMzMjgzMzA2REEwMEUwM0Y0RCAvKiBDb21wYWN0
Qmxvb21GaWx0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWEJ1aWxk
UnVsZSBzZWN0aW9uICovCkBAIC01Nzg0LDYgKzU3ODUsNyBAQAogCQlGRUY1QjQyQjI2MjhDQkM4
MDAxNkU3NzYgLyogVk1UcmFwc0lubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gVk1UcmFwc0lubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVG
NUI0MkYyNjJBMzM4QjAwMTZFNzc2IC8qIEV4Y2VwdGlvbkV4cGVjdGF0aW9uLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4Y2VwdGlvbkV4cGVjdGF0aW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFRkQ2RkM1MUQ1RTc5NzAwMDhGMkYwQiAvKiBKU1N0cmlu
Z0lubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTdHJpbmdJbmxp
bmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZGMjVCOTMzMjgzMzA2REEwMEUw
M0Y0RCAvKiBDb21wYWN0Qmxvb21GaWx0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQ29tcGFjdEJsb29tRmlsdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAv
KiBFbmQgUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWEZyYW1ld29y
a3NCdWlsZFBoYXNlIHNlY3Rpb24gKi8KQEAgLTY3MDAsNiArNjcwMiw3IEBACiAJCQkJMEZBNzYy
MDExREI5MjQyMzAwQjdBMkZEIC8qIENvbGxlY3Rpb25TY29wZS5oICovLAogCQkJCTBGRDBFNUU1
MUU0M0QzNDcwMDA2QUIwOCAvKiBDb2xsZWN0b3JQaGFzZS5jcHAgKi8sCiAJCQkJMEZEMEU1RTYx
RTQzRDM0NzAwMDZBQjA4IC8qIENvbGxlY3RvclBoYXNlLmggKi8sCisJCQkJRkYyNUI5MzMyODMz
MDZEQTAwRTAzRjREIC8qIENvbXBhY3RCbG9vbUZpbHRlci5oICovLAogCQkJCTBGRENFMTI3MUZB
RkE4NTkwMDZGMzkwMSAvKiBDb21wbGV0ZVN1YnNwYWNlLmNwcCAqLywKIAkJCQkwRkRDRTEyODFG
QUZBODU5MDA2RjM5MDEgLyogQ29tcGxldGVTdWJzcGFjZS5oICovLAogCQkJCTBGRDJGRDkzMjBC
NTJCREQwMEYwOTQ0MSAvKiBDb21wbGV0ZVN1YnNwYWNlSW5saW5lcy5oICovLApAQCAtOTk4Niw2
ICs5OTg5LDcgQEAKIAkJCQlCQzE4QzNGMzBFMTZGNUNEMDBCMzQ0NjAgLyogQ29tbW9uSWRlbnRp
ZmllcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMTVGMTVGMTRCN0E3M0UwMDVERTM3RCAvKiBD
b21tb25TbG93UGF0aHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTMzQTkyMEJEMjNEQTJDNkQwMDBF
QkFGMCAvKiBDb21tb25TbG93UGF0aHNJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKKwkJCQlGRjI1
QjkzNDI4MzMwNkRCMDBFMDNGNEQgLyogQ29tcGFjdEJsb29tRmlsdGVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBN0U1QTNBODE3OTc0MzJEMDBFODkzQzAgLyogQ29tcGlsYXRpb25SZXN1bHQuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGNEYxMUU4MjA5QkNEQUIwMDcwOTY1NCAvKiBDb21waWxlclRp
bWluZ1Njb3BlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkRDRTEyQTFGQUZBODVGMDA2RjM5MDEg
LyogQ29tcGxldGVTdWJzcGFjZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMjM4MCw3ICsxMjM4NCw2
IEBACiAJCQkJNTM2QjMxN0ExRjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UxMDcuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNTM2QjMxMjcxRjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRT
b3VyY2UxMDguY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM2QjMxMkMxRjcxQzU5OTAwMzdGQzMz
IC8qIFVuaWZpZWRTb3VyY2UxMDkuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJRTMxMTM1Q0EyODFC
NUIwMzAwQzFBNEE5IC8qIFp5ZGlzRm9ybWF0dGVyQmFzZS5jIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NTM2QjMxNzQxRjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UxMTAuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNTM2QjMxNzcxRjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UxMTEu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM2QjMxODAxRjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZp
ZWRTb3VyY2UxMTIuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xMjQwOSw3ICsxMjQxMiw2IEBACiAJ
CQkJNTM2QjMxOUQxRjczNUU3RDAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UxMzUuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNTM1QzI0NkMxRjdBMTc3ODAwNkVDNDBFIC8qIFVuaWZpZWRTb3VyY2Ux
MzYuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTMwQTY2QkMxRkEzRTc4QjAwMjZBNTQ1IC8qIFVu
aWZpZWRTb3VyY2UxMzcuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJRTMxMTM1Q0IyODFCNUIwNTAw
QzFBNEE5IC8qIFp5ZGlzRm9ybWF0dGVySW50ZWwuYyBpbiBTb3VyY2VzICovLAogCQkJCTUzMEE2
NkJEMUZBM0U3OEIwMDI2QTU0NSAvKiBVbmlmaWVkU291cmNlMTM4LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTUzMEE2NkJFMUZBM0U3OEIwMDI2QTU0NSAvKiBVbmlmaWVkU291cmNlMTM5LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTUzMEE2NkJGMUZBM0U3OEIwMDI2QTU0NSAvKiBVbmlmaWVkU291
cmNlMTQwLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMTI0MjAsNyArMTI0MjIsNiBAQAogCQkJCTUz
MEE2NkM0MUZBM0U3OEIwMDI2QTU0NSAvKiBVbmlmaWVkU291cmNlMTQ1LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTUzOEYxNUYyMjY4RkJDN0IwMEQ2MDFDNCAvKiBVbmlmaWVkU291cmNlMTQ2LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTUzOEYxNUVFMjY4RkJCQjYwMEQ2MDFDNCAvKiBVbmlmaWVk
U291cmNlMTQ3LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUUzMTEzNUM5MjgxQjVCMDAwMEMxQTRB
OSAvKiBaeWRpc0Zvcm1hdHRlckFUVC5jIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM4RjE1RTcyNjhG
QkJCNjAwRDYwMUM0IC8qIFVuaWZpZWRTb3VyY2UxNDguY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NTM4RjE1RjAyNjhGQkJCNjAwRDYwMUM0IC8qIFVuaWZpZWRTb3VyY2UxNDkuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNTM4RjE1RUIyNjhGQkJCNjAwRDYwMUM0IC8qIFVuaWZpZWRTb3VyY2UxNTAu
Y3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xMjQzMCw2ICsxMjQzMSw5IEBACiAJCQkJNTM4RjE1RUEy
NjhGQkJCNjAwRDYwMUM0IC8qIFVuaWZpZWRTb3VyY2UxNTQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNTM4RjE1RUYyNjhGQkJCNjAwRDYwMUM0IC8qIFVuaWZpZWRTb3VyY2UxNTUuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNTI1QzlDREYyMjAyODU4MzAwODJEQkZEIC8qIFdhc21BaXJJUkdlbmVy
YXRvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMzExMzVDOTI4MUI1QjAwMDBDMUE0QTkgLyog
WnlkaXNGb3JtYXR0ZXJBVFQuYyBpbiBTb3VyY2VzICovLAorCQkJCUUzMTEzNUNBMjgxQjVCMDMw
MEMxQTRBOSAvKiBaeWRpc0Zvcm1hdHRlckJhc2UuYyBpbiBTb3VyY2VzICovLAorCQkJCUUzMTEz
NUNCMjgxQjVCMDUwMEMxQTRBOSAvKiBaeWRpc0Zvcm1hdHRlckludGVsLmMgaW4gU291cmNlcyAq
LywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJ
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAK
aW5kZXggOTliOTIzOWI0ZDU0YzZmMTU5YTRkZWRmNDFhNTU0NmRhNWUwZDg3YS4uNDFiM2U0YjZk
NzQ0YjRiNjM4Y2UxMjYxYjNlMzI0ZDhkYzJiMjY2YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTExMDgyLDcgKzExMDgyLDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNoZWNrSlNDYXN0KE5vZGUqIG5vZGUpCiAgICAg
ICAgIEdQUlJlZyBzcGVjaWZpZWRHUFIgPSBzcGVjaWZpZWQuZ3ByKCk7CiAKICAgICAgICAgbV9q
aXQuZW1pdExvYWRTdHJ1Y3R1cmUodm0oKSwgYmFzZUdQUiwgb3RoZXJHUFIpOwotICAgICAgICBt
X2ppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhvdGhlckdQUiwgU3RydWN0dXJlOjpj
bGFzc0luZm9PZmZzZXQoKSksIG90aGVyR1BSKTsKKyAgICAgICAgbV9qaXQubG9hZENvbXBhY3RQ
dHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKG90aGVyR1BSLCBTdHJ1Y3R1cmU6OmNsYXNzSW5mb09m
ZnNldCgpKSwgb3RoZXJHUFIpOwogICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIobm9k
ZS0+Y2xhc3NJbmZvKCkpLCBzcGVjaWZpZWRHUFIpOwogCiAgICAgICAgIENDYWxsSGVscGVyczo6
TGFiZWwgbG9vcCA9IG1faml0LmxhYmVsKCk7CkBAIC0xMTI5Myw3ICsxMTI5Myw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVGdW5jdGlvblRvU3RyaW5nKE5vZGUqIG5vZGUpCiAgICAg
c3BlY3VsYXRlRnVuY3Rpb24obm9kZS0+Y2hpbGQxKCksIGZ1bmN0aW9uLmdwcigpKTsKIAogICAg
IG1faml0LmVtaXRMb2FkU3RydWN0dXJlKHZtKCksIGZ1bmN0aW9uLmdwcigpLCByZXN1bHQuZ3By
KCkpOwotICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0Lmdwcigp
LCBTdHJ1Y3R1cmU6OmNsYXNzSW5mb09mZnNldCgpKSwgcmVzdWx0LmdwcigpKTsKKyAgICBtX2pp
dC5sb2FkQ29tcGFjdFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHQuZ3ByKCksIFN0cnVj
dHVyZTo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCByZXN1bHQuZ3ByKCkpOwogICAgIHN0YXRpY19hc3Nl
cnQoc3RkOjppc19maW5hbF92PEpTQm91bmRGdW5jdGlvbj4sICJXZSBkb24ndCBoYW5kbGUgc3Vi
Y2xhc3NlcyB3aGVuIGNvbXBhcmluZyBjbGFzc0luZm8gYmVsb3ciKTsKICAgICBzbG93Q2FzZXMu
YXBwZW5kKG1faml0LmJyYW5jaFB0cihDQ2FsbEhlbHBlcnM6OkVxdWFsLCByZXN1bHQuZ3ByKCks
IFRydXN0ZWRJbW1QdHIoSlNCb3VuZEZ1bmN0aW9uOjppbmZvKCkpKSk7CiAKQEAgLTE0ODYyLDcg
KzE0ODYyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZVByb21pc2UoTm9k
ZSogbm9kZSkKICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaFRlc3QzMihDQ2FsbEhl
bHBlcnM6Olplcm8sIHN0cnVjdHVyZUdQUikpOwogICAgIG1faml0LmVtaXROb25OdWxsRGVjb2Rl
WmVyb0V4dGVuZGVkU3RydWN0dXJlSUQoc3RydWN0dXJlR1BSLCBzdHJ1Y3R1cmVHUFIpOwogICAg
IG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihub2RlLT5pc0ludGVybmFsUHJvbWlzZSgpID8gSlNJ
bnRlcm5hbFByb21pc2U6OmluZm8oKSA6IEpTUHJvbWlzZTo6aW5mbygpKSwgc2NyYXRjaDFHUFIp
OwotICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoUHRyKENDYWxsSGVscGVyczo6Tm90
RXF1YWwsIHNjcmF0Y2gxR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3RydWN0dXJlR1BSLCBT
dHJ1Y3R1cmU6OmNsYXNzSW5mb09mZnNldCgpKSkpOworICAgIHNsb3dDYXNlcy5hcHBlbmQobV9q
aXQuYnJhbmNoQ29tcGFjdFB0cihDQ2FsbEhlbHBlcnM6Ok5vdEVxdWFsLCBzY3JhdGNoMUdQUiwg
Q0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0cnVjdHVyZUdQUiwgU3RydWN0dXJlOjpjbGFzc0luZm9P
ZmZzZXQoKSksIHNjcmF0Y2gyR1BSKSk7CiAgICAgbV9qaXQubG9hZExpbmthYmxlQ29uc3RhbnQo
SklUQ29tcGlsZXI6OkxpbmthYmxlQ29uc3RhbnQobV9ncmFwaCwgZ2xvYmFsT2JqZWN0KSwgc2Ny
YXRjaDFHUFIpOwogICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoUHRyKENDYWxsSGVs
cGVyczo6Tm90RXF1YWwsIHNjcmF0Y2gxR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3RydWN0
dXJlR1BSLCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSkpOwogCkBAIC0xNDkxMSw3
ICsxNDkxMSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVJbnRlcm5hbEZp
ZWxkT2JqZWN0KE5vZGUqIG5vZGUsIE9wZXJhdGlvbiBvcGVyCiAgICAgc2xvd0Nhc2VzLmFwcGVu
ZChtX2ppdC5icmFuY2hUZXN0MzIoQ0NhbGxIZWxwZXJzOjpaZXJvLCBzdHJ1Y3R1cmVHUFIpKTsK
ICAgICBtX2ppdC5lbWl0Tm9uTnVsbERlY29kZVplcm9FeHRlbmRlZFN0cnVjdHVyZUlEKHN0cnVj
dHVyZUdQUiwgc3RydWN0dXJlR1BSKTsKICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIoSlND
bGFzczo6aW5mbygpKSwgc2NyYXRjaDFHUFIpOwotICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQu
YnJhbmNoUHRyKENDYWxsSGVscGVyczo6Tm90RXF1YWwsIHNjcmF0Y2gxR1BSLCBDQ2FsbEhlbHBl
cnM6OkFkZHJlc3Moc3RydWN0dXJlR1BSLCBTdHJ1Y3R1cmU6OmNsYXNzSW5mb09mZnNldCgpKSkp
OworICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoQ29tcGFjdFB0cihDQ2FsbEhlbHBl
cnM6Ok5vdEVxdWFsLCBzY3JhdGNoMUdQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0cnVjdHVy
ZUdQUiwgU3RydWN0dXJlOjpjbGFzc0luZm9PZmZzZXQoKSksIHNjcmF0Y2gyR1BSKSk7CiAgICAg
bV9qaXQubG9hZExpbmthYmxlQ29uc3RhbnQoSklUQ29tcGlsZXI6OkxpbmthYmxlQ29uc3RhbnQo
bV9ncmFwaCwgZ2xvYmFsT2JqZWN0KSwgc2NyYXRjaDFHUFIpOwogICAgIHNsb3dDYXNlcy5hcHBl
bmQobV9qaXQuYnJhbmNoUHRyKENDYWxsSGVscGVyczo6Tm90RXF1YWwsIHNjcmF0Y2gxR1BSLCBD
Q2FsbEhlbHBlcnM6OkFkZHJlc3Moc3RydWN0dXJlR1BSLCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVj
dE9mZnNldCgpKSkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
QWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCmluZGV4IGZlMjlkZDJiZTdjMjUzZTUxYTg0M2FmMjk3
ZDg1MWJhOWY0NDU2YmEuLmIyOGRlNjIyYjIzMzBlNzFlZmQ3ZDZhNzVlNDA4MTk5ZTk5ODBjYmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVw
b3NpdG9yeS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFw
UmVwb3NpdG9yeS5oCkBAIC0xNDcsNyArMTQ3LDYgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFj
ZSBGVEwgewogICAgIG1hY3JvKFN0cnVjdHVyZV9vdXRPZkxpbmVUeXBlRmxhZ3MsIFN0cnVjdHVy
ZTo6b3V0T2ZMaW5lVHlwZUZsYWdzT2Zmc2V0KCkpIFwKICAgICBtYWNybyhTdHJ1Y3R1cmVfcHJl
dmlvdXNPclJhcmVEYXRhLCBTdHJ1Y3R1cmU6OnByZXZpb3VzT3JSYXJlRGF0YU9mZnNldCgpKSBc
CiAgICAgbWFjcm8oU3RydWN0dXJlX3Byb3RvdHlwZSwgU3RydWN0dXJlOjpwcm90b3R5cGVPZmZz
ZXQoKSkgXAotICAgIG1hY3JvKFN0cnVjdHVyZV9zdHJ1Y3R1cmVJRCwgU3RydWN0dXJlOjpzdHJ1
Y3R1cmVJRE9mZnNldCgpKSBcCiAgICAgbWFjcm8oU3RydWN0dXJlUmFyZURhdGFfY2FjaGVkS2V5
cywgU3RydWN0dXJlUmFyZURhdGE6Om9mZnNldE9mQ2FjaGVkUHJvcGVydHlOYW1lcyhDYWNoZWRQ
cm9wZXJ0eU5hbWVzS2luZDo6S2V5cykpIFwKICAgICBtYWNybyhTdHJ1Y3R1cmVSYXJlRGF0YV9j
YWNoZWRHZXRPd25Qcm9wZXJ0eU5hbWVzLCBTdHJ1Y3R1cmVSYXJlRGF0YTo6b2Zmc2V0T2ZDYWNo
ZWRQcm9wZXJ0eU5hbWVzKENhY2hlZFByb3BlcnR5TmFtZXNLaW5kOjpHZXRPd25Qcm9wZXJ0eU5h
bWVzKSkgXAogICAgIG1hY3JvKFN0cnVjdHVyZVJhcmVEYXRhX2NhY2hlZFByb3BlcnR5TmFtZUVu
dW1lcmF0b3JBbmRGbGFnLCBTdHJ1Y3R1cmVSYXJlRGF0YTo6b2Zmc2V0T2ZDYWNoZWRQcm9wZXJ0
eU5hbWVFbnVtZXJhdG9yQW5kRmxhZygpKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggN2VkMzczNzk0M2I3MzFhNmUzZmQ1YzdmOTMwYzA1
MjY5ZDk4NWU2ZS4uNzMzYzlmOTRlNDZmZGRkMmM5NmI1YzgyZTVjMjY3MzRhODIyMjI5NiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtMTY4
MzIsNiArMTY4MzIsMTYgQEAgSUdOT1JFX0NMQU5HX1dBUk5JTkdTX0VORAogICAgICAgICAgICAg
b2JqZWN0LCBtX2hlYXBzLkpTQ2VsbF91c2VmdWxCeXRlcyk7CiAgICAgfQogCisgICAgTFZhbHVl
IGVuY29kZVN0cnVjdHVyZShMVmFsdWUgc3RydWN0dXJlKQorICAgIHsKKyNpZiBFTkFCTEUoU1RS
VUNUVVJFX0lEX1dJVEhfU0hJRlQpCisgICAgICAgIHJldHVybiBtX291dC5jYXN0VG9JbnQzMiht
X291dC5sU2hyKHN0cnVjdHVyZSwgbV9vdXQuY29uc3RJbnQzMihTdHJ1Y3R1cmVJRDo6ZW5jb2Rl
U2hpZnRBbW91bnQpKSk7CisjZWxpZiBDUFUoQUREUkVTUzY0KQorICAgICAgICByZXR1cm4gbV9v
dXQuY2FzdFRvSW50MzIobV9vdXQuYml0QW5kKHN0cnVjdHVyZSwgbV9vdXQuY29uc3RJbnQ2NChT
dHJ1Y3R1cmVJRDo6c3RydWN0dXJlSURNYXNrKSkpOworI2VuZGlmCisgICAgICAgIHJldHVybiBz
dHJ1Y3R1cmU7CisgICAgfQorCiAgICAgdm9pZCBzdG9yZVN0cnVjdHVyZShMVmFsdWUgb2JqZWN0
LCBMVmFsdWUgc3RydWN0dXJlKQogICAgIHsKICAgICAgICAgaWYgKHN0cnVjdHVyZS0+aGFzSW50
UHRyKCkpIHsKQEAgLTE2ODM5LDcgKzE2ODQ5LDcgQEAgSUdOT1JFX0NMQU5HX1dBUk5JTkdTX0VO
RAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgTFZhbHVlIGlkID0g
bV9vdXQubG9hZDMyKHN0cnVjdHVyZSwgbV9oZWFwcy5TdHJ1Y3R1cmVfc3RydWN0dXJlSUQpOwor
ICAgICAgICBMVmFsdWUgaWQgPSBlbmNvZGVTdHJ1Y3R1cmUoc3RydWN0dXJlKTsKICAgICAgICAg
bV9vdXQuc3RvcmUzMihpZCwgb2JqZWN0LCBtX2hlYXBzLkpTQ2VsbF9zdHJ1Y3R1cmVJRCk7CiAK
ICAgICAgICAgTFZhbHVlIGJsb2IgPSBtX291dC5sb2FkMzIoc3RydWN0dXJlLCBtX2hlYXBzLlN0
cnVjdHVyZV9pbmRleGluZ01vZGVJbmNsdWRpbmdIaXN0b3J5KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbXBhY3RCbG9vbUZpbHRlci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvQ29tcGFjdEJsb29tRmlsdGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDgxNjczYTQz
MTI2ZDMzYzVlZDNkY2E2NTExMTA0Mzk5ZjU2YmNlZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbXBhY3RCbG9vbUZpbHRlci5oCkBAIC0wLDAgKzEsNjgg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9Db21wYWN0UmVm
UHRyLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBDb21wYWN0Qmxvb21GaWx0ZXIgewor
ICAgIHVzaW5nIENvbXBhY3RlZCA9IFdURjo6Q29tcGFjdGVkPG51bGxwdHJfdD47CisgICAgdXNp
bmcgU3RvcmFnZVNpemUgPSBDb21wYWN0ZWQ6OlN0b3JhZ2VTaXplOworCitwdWJsaWM6CisgICAg
Q29tcGFjdEJsb29tRmlsdGVyKCkgPSBkZWZhdWx0OworCisgICAgQ29tcGFjdEJsb29tRmlsdGVy
KFN0b3JhZ2VTaXplIGJpdHMpCisgICAgICAgIDogbV9iaXRzKGJpdHMpCisgICAgeworICAgIH0K
KworICAgIHZvaWQgYWRkKHVpbnRwdHJfdCBwdHIpIHsgbV9iaXRzIHw9IENvbXBhY3RlZDo6ZW5j
b2RlKHB0cik7IH0KKworICAgIHZvaWQgYWRkKENvbXBhY3RCbG9vbUZpbHRlciYgb3RoZXIpIHsg
bV9iaXRzIHw9IG90aGVyLm1fYml0czsgfQorCisgICAgYm9vbCBydWxlT3V0KHVpbnRwdHJfdCBw
dHIpIGNvbnN0CisgICAgeworICAgICAgICBTdG9yYWdlU2l6ZSBiaXRzID0gQ29tcGFjdGVkOjpl
bmNvZGUocHRyKTsKKyAgICAgICAgaWYgKCFiaXRzKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisKKyAgICAgICAgaWYgKChiaXRzICYgbV9iaXRzKSAhPSBiaXRzKQorICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0gLy8gVHJ1ZSBmb3IgMC4K
KworICAgIHZvaWQgcmVzZXQoKSB7IG1fYml0cyA9IDA7IH0KKworICAgIFN0b3JhZ2VTaXplIGJp
dHMoKSBjb25zdCB7IHJldHVybiBtX2JpdHM7IH0KKworcHJpdmF0ZToKKyAgICBTdG9yYWdlU2l6
ZSBtX2JpdHMgeyAwIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAppbmRleCBmZWQ5MTE2ZjZlM2VmZTIz
OWQzZmQyY2M4YWFkNWUzNjg3M2I2NzAxLi4xMDQxNWRmZTA5MTI3YWZlODQ5OTIwY2M2OTU0OTVm
YTgzZjcyOWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5
SGVscGVycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBl
cnMuY3BwCkBAIC0zMzIsNyArMzMyLDggQEAgdm9pZCBBc3NlbWJseUhlbHBlcnM6OmVtaXRTdG9y
ZVN0cnVjdHVyZVdpdGhUeXBlSW5mbyhBc3NlbWJseUhlbHBlcnMmIGppdCwgVHJ1c3QKIHsKICAg
ICBjb25zdCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZVB0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
U3RydWN0dXJlKj4oc3RydWN0dXJlLm1fdmFsdWUpOwogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAg
aml0LnN0b3JlNjQoVHJ1c3RlZEltbTY0KHN0cnVjdHVyZVB0ci0+aWRCbG9iKCkpLCBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhkZXN0LCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpKTsKKyAg
ICBqaXQuc3RvcmUzMihUcnVzdGVkSW1tMzIoU3RydWN0dXJlSUQ6OmVuY29kZShzdHJ1Y3R1cmVQ
dHIpLmJpdHMoKSksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRlc3QsIEpTQ2VsbDo6c3RydWN0
dXJlSURPZmZzZXQoKSkpOworICAgIGppdC5zdG9yZTMyKFRydXN0ZWRJbW0zMihzdHJ1Y3R1cmVQ
dHItPmlkQmxvYigpKSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGVzdCwgSlNDZWxsOjppbmRl
eGluZ1R5cGVBbmRNaXNjT2Zmc2V0KCkpKTsKICAgICBpZiAoQVNTRVJUX0VOQUJMRUQpIHsKICAg
ICAgICAgSnVtcCBjb3JyZWN0U3RydWN0dXJlID0gaml0LmJyYW5jaDMyKEVxdWFsLCBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhkZXN0LCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBUcnVz
dGVkSW1tMzIoc3RydWN0dXJlUHRyLT5pZCgpLmJpdHMoKSkpOwogICAgICAgICBqaXQuYWJvcnRX
aXRoUmVhc29uKEFIU3RydWN0dXJlSURJc1ZhbGlkKTsKQEAgLTQyOCw2ICs0MjksMTUgQEAgdm9p
ZCBBc3NlbWJseUhlbHBlcnM6OmVtaXRMb2FkU3RydWN0dXJlKFZNJiwgUmVnaXN0ZXJJRCBzb3Vy
Y2UsIFJlZ2lzdGVySUQgZGVzdCkKICAgICBlbWl0Tm9uTnVsbERlY29kZVplcm9FeHRlbmRlZFN0
cnVjdHVyZUlEKGRlc3QsIGRlc3QpOwogfQogCit2b2lkIEFzc2VtYmx5SGVscGVyczo6ZW1pdEVu
Y29kZVN0cnVjdHVyZShSZWdpc3RlcklEIHNvdXJjZSwgUmVnaXN0ZXJJRCBkZXN0KQoreworI2lm
IEVOQUJMRShTVFJVQ1RVUkVfSURfV0lUSF9TSElGVCkKKyAgICB1cnNoaWZ0MzIoc291cmNlLCBU
cnVzdGVkSW1tMzIoU3RydWN0dXJlSUQ6OmVuY29kZVNoaWZ0QW1vdW50KSwgZGVzdCk7CisjZWxp
ZiBDUFUoQUREUkVTUzY0KQorICAgIGFuZDMyKFRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDx1aW50
MzJfdD4oU3RydWN0dXJlSUQ6OnN0cnVjdHVyZUlETWFzaykpLCBzb3VyY2UsIGRlc3QpOworI2Vu
ZGlmCit9CisKIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjplbWl0TG9hZFByb3RvdHlwZShWTSYgdm0s
IEdQUlJlZyBvYmplY3RHUFIsIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MsIEp1bXBMaXN0JiBzbG93
UGF0aCkKIHsKICAgICBBU1NFUlQocmVzdWx0UmVncy5wYXlsb2FkR1BSKCkgIT0gb2JqZWN0R1BS
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJz
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCmluZGV4IGZj
NTllYTk0Y2NhM2VhY2IyMTVkM2NkYWMwZDZiZDQ3NzM3OTNiZWEuLmRjMmFiNzhkMDdiMGYwMzQw
NGJkZGNmNTRjNTQ5M2U5YTQzZmY1YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9B
c3NlbWJseUhlbHBlcnMuaApAQCAtMTYxMyw2ICsxNjEzLDcgQEAgcHVibGljOgogICAgIHZvaWQg
ZW1pdE5vbk51bGxEZWNvZGVaZXJvRXh0ZW5kZWRTdHJ1Y3R1cmVJRChSZWdpc3RlcklEIHNvdXJj
ZSwgUmVnaXN0ZXJJRCBkZXN0KTsKICAgICB2b2lkIGVtaXRMb2FkU3RydWN0dXJlKFZNJiwgUmVn
aXN0ZXJJRCBzb3VyY2UsIFJlZ2lzdGVySUQgZGVzdCk7CiAgICAgdm9pZCBlbWl0TG9hZFByb3Rv
dHlwZShWTSYsIEdQUlJlZyBvYmplY3RHUFIsIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MsIEp1bXBM
aXN0JiBzbG93UGF0aCk7CisgICAgdm9pZCBlbWl0RW5jb2RlU3RydWN0dXJlKFJlZ2lzdGVySUQg
c291cmNlLCBSZWdpc3RlcklEIGRlc3QpOwogCiAgICAgdm9pZCBlbWl0U3RvcmVTdHJ1Y3R1cmVX
aXRoVHlwZUluZm8oVHJ1c3RlZEltbVB0ciBzdHJ1Y3R1cmUsIFJlZ2lzdGVySUQgZGVzdCwgUmVn
aXN0ZXJJRCkKICAgICB7CkBAIC0xNjIxLDE3ICsxNjIyLDE2IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgZW1pdFN0b3JlU3RydWN0dXJlV2l0aFR5cGVJbmZvKFJlZ2lzdGVySUQgc3RydWN0dXJlLCBS
ZWdpc3RlcklEIGRlc3QsIFJlZ2lzdGVySUQgc2NyYXRjaCkKICAgICB7CisgICAgICAgIC8vIFN0
b3JlIHRoZSBTdHJ1Y3R1cmVJRAogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIGxvYWQ2NChN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdHJ1Y3R1cmUsIFN0cnVjdHVyZTo6c3RydWN0dXJlSURP
ZmZzZXQoKSksIHNjcmF0Y2gpOwotICAgICAgICBzdG9yZTY0KHNjcmF0Y2gsIE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKGRlc3QsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSkpOworICAgICAg
ICBlbWl0RW5jb2RlU3RydWN0dXJlKHN0cnVjdHVyZSwgc2NyYXRjaCk7CisgICAgICAgIHN0b3Jl
MzIoc2NyYXRjaCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGVzdCwgSlNDZWxsOjpzdHJ1Y3R1
cmVJRE9mZnNldCgpKSk7CiAjZWxzZQorICAgICAgICBzdG9yZVB0cihzdHJ1Y3R1cmUsIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKGRlc3QsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSkpOwor
I2VuZGlmCiAgICAgICAgIC8vIFN0b3JlIGFsbCB0aGUgaW5mbyBmbGFncyB1c2luZyBhIHNpbmds
ZSAzMi1iaXQgd2lkZSBsb2FkIGFuZCBzdG9yZS4KICAgICAgICAgbG9hZDMyKE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKHN0cnVjdHVyZSwgU3RydWN0dXJlOjppbmRleGluZ01vZGVJbmNsdWRpbmdI
aXN0b3J5T2Zmc2V0KCkpLCBzY3JhdGNoKTsKICAgICAgICAgc3RvcmUzMihzY3JhdGNoLCBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhkZXN0LCBKU0NlbGw6OmluZGV4aW5nVHlwZUFuZE1pc2NPZmZz
ZXQoKSkpOwotCi0gICAgICAgIC8vIFN0b3JlIHRoZSBTdHJ1Y3R1cmVJRAotICAgICAgICBzdG9y
ZVB0cihzdHJ1Y3R1cmUsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRlc3QsIEpTQ2VsbDo6c3Ry
dWN0dXJlSURPZmZzZXQoKSkpOwotI2VuZGlmCiAgICAgfQogCiAgICAgc3RhdGljIHZvaWQgZW1p
dFN0b3JlU3RydWN0dXJlV2l0aFR5cGVJbmZvKEFzc2VtYmx5SGVscGVycyYgaml0LCBUcnVzdGVk
SW1tUHRyIHN0cnVjdHVyZSwgUmVnaXN0ZXJJRCBkZXN0KTsKQEAgLTE5MTQsNyArMTkxNCwzMCBA
QCBwdWJsaWM6CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBvdXRPZkxpbmVDYXBh
Y2l0eTsgKytpKQogICAgICAgICAgICAgc3RvcmVUcnVzdGVkVmFsdWUoSlNWYWx1ZSgpLCBBZGRy
ZXNzKGJ1dHRlcmZseUdQUiwgLXNpemVvZihJbmRleGluZ0hlYWRlcikgLSAoaSArIDEpICogc2l6
ZW9mKEVuY29kZWRKU1ZhbHVlKSkpOwogICAgIH0KLSAgICAKKworICAgIHZvaWQgbG9hZENvbXBh
Y3RQdHIoQWRkcmVzcyBhZGRyZXNzLCBHUFJSZWcgZGVzdCkKKyAgICB7CisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKKyAgICAgICAgbG9hZDMyKGFkZHJlc3MsIGRlc3QpOworICAgICAgICBsc2hp
ZnQ2NChUcnVzdGVkSW1tMzIoNCksIGRlc3QpOworI2Vsc2UKKyAgICAgICAgbG9hZFB0cihhZGRy
ZXNzLCBkZXN0KTsKKyNlbmRpZgorICAgIH0KKworICAgIEp1bXAgYnJhbmNoQ29tcGFjdFB0cihS
ZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEdQUlJlZyBsZWZ0LCBBZGRyZXNzIHJpZ2h0LCBHUFJS
ZWcgc2NyYXRjaCkKKyAgICB7CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICAgICAgQVNT
RVJUKGxlZnQgIT0gc2NyYXRjaCk7CisgICAgICAgIGxvYWQzMihyaWdodCwgc2NyYXRjaCk7Cisg
ICAgICAgIGxzaGlmdDY0KFRydXN0ZWRJbW0zMig0KSwgc2NyYXRjaCk7CisgICAgICAgIHJldHVy
biBicmFuY2hQdHIoY29uZCwgbGVmdCwgQWRkcmVzcyhzY3JhdGNoKSk7CisjZWxzZQorICAgICAg
ICAodm9pZClzY3JhdGNoOworICAgICAgICByZXR1cm4gYnJhbmNoUHRyKGNvbmQsIGxlZnQsIHJp
Z2h0KTsKKyNlbmRpZgorICAgIH0gICAKKwogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgdm9pZCB3
YW5nc0ludDY0SGFzaChHUFJSZWcgaW5wdXRBbmRSZXN1bHQsIEdQUlJlZyBzY3JhdGNoKTsKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFj
Y2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNw
cAppbmRleCA3NGY0OTlkYzdhNWYyOTE3OTU2YjA5YWE0ZjQ5NGM5ZmVhYzkxYThjLi4zYjA2YjVl
OTVhNmY2ZjIwNzU5YWRhNWVlMjBhZTcyODQwZDE0N2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcApAQCAtMTgwOSw3ICsxODA5LDcgQEAg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OmdlbmVyYXRlT3BHZXRG
cm9tU2NvcGVUaHVuayhWTSYgdm0pCiAgICAgICAgICAgICAvLyBTdHJ1Y3R1cmUgY2hlY2sgY292
ZXJzIHZhciBpbmplY3Rpb24gc2luY2Ugd2UgZG9uJ3QgY2FjaGUgc3RydWN0dXJlcyBmb3IgYW55
dGhpbmcgYnV0IHRoZSBHbG9iYWxPYmplY3QuIEFkZGl0aW9uYWxseSwgcmVzb2x2ZV9zY29wZSBo
YW5kbGVzIGNoZWNraW5nIGZvciB0aGUgdmFyIGluamVjdGlvbi4KICAgICAgICAgICAgIGppdC5s
b2FkUHRyKEFkZHJlc3MobWV0YWRhdGFHUFIsIE9wR2V0RnJvbVNjb3BlOjpNZXRhZGF0YTo6b2Zm
c2V0T2ZTdHJ1Y3R1cmUoKSksIHNjcmF0Y2hHUFIpOwogICAgICAgICAgICAgc2xvd0Nhc2UuYXBw
ZW5kKGppdC5icmFuY2hUZXN0UHRyKFplcm8sIHNjcmF0Y2hHUFIpKTsKLSAgICAgICAgICAgIGpp
dC5sb2FkMzIoQWRkcmVzcyhzY3JhdGNoR1BSLCBTdHJ1Y3R1cmU6OnN0cnVjdHVyZUlET2Zmc2V0
KCkpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgICAgIGppdC5lbWl0RW5jb2RlU3RydWN0dXJlKHNj
cmF0Y2hHUFIsIHNjcmF0Y2hHUFIpOwogICAgICAgICAgICAgc2xvd0Nhc2UuYXBwZW5kKGppdC5i
cmFuY2gzMihOb3RFcXVhbCwgQWRkcmVzcyhzY29wZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9m
ZnNldCgpKSwgc2NyYXRjaEdQUikpOwogCiAgICAgICAgICAgICBqaXQuaml0QXNzZXJ0KHNjb3Bl
ZExhbWJkYTxKdW1wKHZvaWQpPihbJl0gKCkgLT4gSnVtcCB7CkBAIC0xOTgyLDcgKzE5ODIsNyBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfdG9fc2NvcGUoY29uc3QgSlNJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogICAgICAgICAgICAgbG9hZFB0ckZyb21NZXRhZGF0YShieXRlY29k
ZSwgT3BQdXRUb1Njb3BlOjpNZXRhZGF0YTo6b2Zmc2V0T2ZTdHJ1Y3R1cmUoKSwgc2NyYXRjaEdQ
UjEpOwogICAgICAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlclBheWxvYWQoc2NvcGUsIHNj
b3BlR1BSKTsKICAgICAgICAgICAgIGFkZFNsb3dDYXNlKGJyYW5jaFRlc3RQdHIoWmVybywgc2Ny
YXRjaEdQUjEpKTsKLSAgICAgICAgICAgIGxvYWQzMihBZGRyZXNzKHNjcmF0Y2hHUFIxLCBTdHJ1
Y3R1cmU6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBzY3JhdGNoR1BSMSk7CisgICAgICAgICAgICBl
bWl0RW5jb2RlU3RydWN0dXJlKHNjcmF0Y2hHUFIxLCBzY3JhdGNoR1BSMSk7CiAgICAgICAgICAg
ICBhZGRTbG93Q2FzZShicmFuY2gzMihOb3RFcXVhbCwgQWRkcmVzcyhzY29wZUdQUiwgSlNDZWxs
OjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgc2NyYXRjaEdQUjEpKTsKIAogICAgICAgICAgICAgZW1p
dEdldFZpcnR1YWxSZWdpc3Rlcih2YWx1ZSwgdmFsdWVKU1IpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9DbGFzc0luZm8uaAppbmRleCBhNTc2OTI4ZWQ4YWJjMTI1ZDk1ODU0OGRhZDBk
OWQwZDQ5NTA3NzkxLi41ODRlZDIxYWY5Mjc0MWRkNmQ1Mzk2M2Q0ZjU0MGJkOWMyMzVhOWRhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaApAQCAtMTcyLDcgKzE3
Miw3IEBAIHN0cnVjdCBNZXRob2RUYWJsZSB7CiAgICAgQ2xhc3NOYW1lOjpUeXBlZEFycmF5U3Rv
cmFnZVR5cGUsIFwKICAgICBzaXplb2YoQ2xhc3NOYW1lKSwKIAotc3RydWN0IENsYXNzSW5mbyB7
CitzdHJ1Y3QgYWxpZ25hcygxNikgQ2xhc3NJbmZvIHsKICAgICB1c2luZyBDaGVja0pTQ2FzdFNu
aXBwZXRGdW5jdGlvblB0ciA9IFJlZjxTbmlwcGV0PiAoKikodm9pZCk7CiAKICAgICAvLyBBIHN0
cmluZyBkZW5vdGluZyB0aGUgY2xhc3MgbmFtZS4gRXhhbXBsZTogIldpbmRvdyIuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAppbmRleCBhY2ZkODZjNDU2ZDdk
MDViMTliZGQyMDI0YjUwZjRlODhhOTM5MjY2Li4xMjcwZjY1NDVjZDEzMWI1MTI5OTY5M2VlYzJk
NDNiMzY0YjdkMWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVy
ZS5jcHAKQEAgLTE5Nyw3ICsxOTcsNyBAQCBpbmxpbmUgdm9pZCBTdHJ1Y3R1cmU6OnZhbGlkYXRl
RmxhZ3MoKSB7IH0KIAogU3RydWN0dXJlOjpTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSwgY29uc3QgVHlwZUluZm8mIHR5cGVJ
bmZvLCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbywgSW5kZXhpbmdUeXBlIGluZGV4aW5nVHlw
ZSwgdW5zaWduZWQgaW5saW5lQ2FwYWNpdHkpCiAgICAgOiBKU0NlbGwodm0sIHZtLnN0cnVjdHVy
ZVN0cnVjdHVyZS5nZXQoKSkKLSAgICAsIG1fYmxvYihTdHJ1Y3R1cmVJRDo6ZW5jb2RlKHRoaXMp
LCBpbmRleGluZ1R5cGUsIHR5cGVJbmZvKQorICAgICwgbV9ibG9iKGluZGV4aW5nVHlwZSwgdHlw
ZUluZm8pCiAgICAgLCBtX291dE9mTGluZVR5cGVGbGFncyh0eXBlSW5mby5vdXRPZkxpbmVUeXBl
RmxhZ3MoKSkKICAgICAsIG1faW5saW5lQ2FwYWNpdHkoaW5saW5lQ2FwYWNpdHkpCiAgICAgLCBt
X2JpdEZpZWxkKDApCkBAIC0yNjgsNyArMjY4LDcgQEAgU3RydWN0dXJlOjpTdHJ1Y3R1cmUoVk0m
IHZtLCBDcmVhdGluZ0Vhcmx5Q2VsbFRhZykKICAgICBzZXRNYXhPZmZzZXQodm0sIGludmFsaWRP
ZmZzZXQpOwogIAogICAgIFR5cGVJbmZvIHR5cGVJbmZvID0gVHlwZUluZm8oU3RydWN0dXJlVHlw
ZSwgU3RydWN0dXJlRmxhZ3MpOwotICAgIG1fYmxvYiA9IFN0cnVjdHVyZUlEQmxvYihTdHJ1Y3R1
cmVJRDo6ZW5jb2RlKHRoaXMpLCAwLCB0eXBlSW5mbyk7CisgICAgbV9ibG9iID0gU3RydWN0dXJl
SURCbG9iKDAsIHR5cGVJbmZvKTsKICAgICBtX291dE9mTGluZVR5cGVGbGFncyA9IHR5cGVJbmZv
Lm91dE9mTGluZVR5cGVGbGFncygpOwogCiAgICAgQVNTRVJUKGhhc1JlYWRPbmx5T3JHZXR0ZXJT
ZXR0ZXJQcm9wZXJ0aWVzRXhjbHVkaW5nUHJvdG8oKSB8fCAhbV9jbGFzc0luZm8tPmhhc1N0YXRp
Y1NldHRlck9yUmVhZG9ubHlQcm9wZXJ0aWVzKCkpOwpAQCAtMzA5LDcgKzMwOSw3IEBAIFN0cnVj
dHVyZTo6U3RydWN0dXJlKFZNJiB2bSwgU3RydWN0dXJlKiBwcmV2aW91cykKICAgICBzZXRNYXhP
ZmZzZXQodm0sIGludmFsaWRPZmZzZXQpOwogIAogICAgIFR5cGVJbmZvIHR5cGVJbmZvID0gcHJl
dmlvdXMtPnR5cGVJbmZvKCk7Ci0gICAgbV9ibG9iID0gU3RydWN0dXJlSURCbG9iKFN0cnVjdHVy
ZUlEOjplbmNvZGUodGhpcyksIHByZXZpb3VzLT5pbmRleGluZ01vZGVJbmNsdWRpbmdIaXN0b3J5
KCksIHR5cGVJbmZvKTsKKyAgICBtX2Jsb2IgPSBTdHJ1Y3R1cmVJREJsb2IocHJldmlvdXMtPmlu
ZGV4aW5nTW9kZUluY2x1ZGluZ0hpc3RvcnkoKSwgdHlwZUluZm8pOwogICAgIG1fb3V0T2ZMaW5l
VHlwZUZsYWdzID0gdHlwZUluZm8ub3V0T2ZMaW5lVHlwZUZsYWdzKCk7CiAKICAgICBBU1NFUlQo
IXByZXZpb3VzLT50eXBlSW5mbygpLnN0cnVjdHVyZUlzSW1tb3J0YWwoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCmluZGV4IDlkYTQxZjExMGI0ODY2MzZhZWQw
NDEwOWM5OTExNGQwMGY1OTU0MDguLmJhNGY3MzQwN2JhOWY0Y2U2OTQ0MTBkZDQxODY3ODY5MDFj
ZDZlMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVy
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCkBAIC0y
Niw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNsYXNzSW5mby5oIgorI2lu
Y2x1ZGUgIkNvbXBhY3RCbG9vbUZpbHRlci5oIgogI2luY2x1ZGUgIkNvbmN1cnJlbmN5LmgiCiAj
aW5jbHVkZSAiQ29uY3VycmVudEpTTG9jay5oIgogI2luY2x1ZGUgIkRlbGV0ZVByb3BlcnR5U2xv
dC5oIgpAQCAtNDEsMTEgKzQyLDEyIEBACiAjaW5jbHVkZSAiU3RydWN0dXJlSURCbG9iLmgiCiAj
aW5jbHVkZSAiU3RydWN0dXJlUmFyZURhdGEuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVUcmFuc2l0
aW9uVGFibGUuaCIKLSNpbmNsdWRlICJUaW55Qmxvb21GaWx0ZXIuaCIKICNpbmNsdWRlICJXYXRj
aHBvaW50LmgiCiAjaW5jbHVkZSAiV3JpdGVCYXJyaWVySW5saW5lcy5oIgogI2luY2x1ZGUgPHd0
Zi9BdG9taWNzLmg+CiAjaW5jbHVkZSA8d3RmL0NvbXBhY3RQb2ludGVyVHVwbGUuaD4KKyNpbmNs
dWRlIDx3dGYvQ29tcGFjdFB0ci5oPgorI2luY2x1ZGUgPHd0Zi9Db21wYWN0UmVmUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CiAKIG5hbWVzcGFjZSBXVEYgewpAQCAtMjI2LDkg
KzIyOCwxNiBAQCBwcml2YXRlOgogICAgIHZvaWQgdmFsaWRhdGVGbGFncygpOwogCiBwdWJsaWM6
Ci0gICAgU3RydWN0dXJlSUQgaWQoKSBjb25zdCB7IEFTU0VSVChtX2Jsb2Iuc3RydWN0dXJlSUQo
KSA9PSBTdHJ1Y3R1cmVJRDo6ZW5jb2RlKHRoaXMpKTsgcmV0dXJuIG1fYmxvYi5zdHJ1Y3R1cmVJ
RCgpOyB9CisgICAgU3RydWN0dXJlSUQgaWQoKSBjb25zdCAKKyAgICB7CisvLyAjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKKy8vICAgICAgICAgc3RhdGljX2Fzc2VydChzaXplb2YoKnRoaXMpID09
IDk2KTsKKy8vICNlbmRpZgorICAgICAgICByZXR1cm4gU3RydWN0dXJlSUQ6OmVuY29kZSh0aGlz
KTsKKyAgICB9CisKICAgICBpbnQzMl90IG9iamVjdEluaXRpYWxpemF0aW9uQmxvYigpIGNvbnN0
IHsgcmV0dXJuIG1fYmxvYi5ibG9iRXhjbHVkaW5nU3RydWN0dXJlSUQoKTsgfQotICAgIGludDY0
X3QgaWRCbG9iKCkgY29uc3QgeyByZXR1cm4gbV9ibG9iLmJsb2IoKTsgfQorICAgIGludDMyX3Qg
aWRCbG9iKCkgY29uc3QgeyByZXR1cm4gbV9ibG9iLmJsb2IoKTsgfQogCiAgICAgYm9vbCBpc1By
b3h5KCkgY29uc3QKICAgICB7CkBAIC0zMjYsNyArMzM1LDcgQEAgcHVibGljOgogICAgIC8vIFR5
cGUgYWNjZXNzb3JzLgogICAgIFR5cGVJbmZvIHR5cGVJbmZvKCkgY29uc3QgeyByZXR1cm4gbV9i
bG9iLnR5cGVJbmZvKG1fb3V0T2ZMaW5lVHlwZUZsYWdzKTsgfQogICAgIGJvb2wgaXNPYmplY3Qo
KSBjb25zdCB7IHJldHVybiB0eXBlSW5mbygpLmlzT2JqZWN0KCk7IH0KLSAgICBjb25zdCBDbGFz
c0luZm8qIGNsYXNzSW5mb0ZvckNlbGxzKCkgY29uc3QgeyByZXR1cm4gbV9jbGFzc0luZm87IH0K
KyAgICBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mb0ZvckNlbGxzKCkgY29uc3QgeyByZXR1cm4g
bV9jbGFzc0luZm8uZ2V0KCk7IH0KIHByb3RlY3RlZDoKICAgICAvLyBZb3UgcHJvYmFibHkgd2Fu
dCB0eXBlSW5mbygpLnR5cGUoKQogICAgIEpTVHlwZSB0eXBlKCkgeyByZXR1cm4gSlNDZWxsOjp0
eXBlKCk7IH0KQEAgLTY0NSwxMSArNjU0LDYgQEAgcHVibGljOgogICAgIH0KICAgICB2b2lkIGNh
Y2hlU3BlY2lhbFByb3BlcnR5KEpTR2xvYmFsT2JqZWN0KiwgVk0mLCBKU1ZhbHVlLCBDYWNoZWRT
cGVjaWFsUHJvcGVydHlLZXksIGNvbnN0IFByb3BlcnR5U2xvdCYpOwogCi0gICAgc3RhdGljIHB0
cmRpZmZfdCBzdHJ1Y3R1cmVJRE9mZnNldCgpCi0gICAgewotICAgICAgICByZXR1cm4gT0JKRUNU
X09GRlNFVE9GKFN0cnVjdHVyZSwgbV9ibG9iKSArIFN0cnVjdHVyZUlEQmxvYjo6c3RydWN0dXJl
SURPZmZzZXQoKTsKLSAgICB9Ci0KICAgICBzdGF0aWMgcHRyZGlmZl90IHByb3RvdHlwZU9mZnNl
dCgpCiAgICAgewogICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFN0cnVjdHVyZSwgbV9w
cm90b3R5cGUpOwpAQCAtOTUzLDQwICs5NTcsNDAgQEAgcHJpdmF0ZToKIAogICAgIC8vIFRoZXNl
IG5lZWQgdG8gYmUgcHJvcGVybHkgYWxpZ25lZCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSAnU3Ry
dWN0dXJlJwogICAgIC8vIHBhcnQgb2YgdGhlIG9iamVjdC4KLSAgICBTdHJ1Y3R1cmVJREJsb2Ig
bV9ibG9iOwotICAgIFR5cGVJbmZvOjpPdXRPZkxpbmVUeXBlRmxhZ3MgbV9vdXRPZkxpbmVUeXBl
RmxhZ3M7CisgICAgU3RydWN0dXJlSURCbG9iIG1fYmxvYjsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIG1hY09TfGlPUzogNCBieXRlcworICAgIFR5cGVJbmZvOjpPdXRP
ZkxpbmVUeXBlRmxhZ3MgbV9vdXRPZkxpbmVUeXBlRmxhZ3M7ICAgICAgICAgICAvLyBtYWNPU3xp
T1M6IDIgYnl0ZXMKIAotICAgIHVpbnQ4X3QgbV9pbmxpbmVDYXBhY2l0eTsKKyAgICB1aW50OF90
IG1faW5saW5lQ2FwYWNpdHk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
bWFjT1N8aU9TOiAxIGJ5dGUKIAotICAgIENvbmN1cnJlbnRKU0xvY2sgbV9sb2NrOworICAgIENv
bmN1cnJlbnRKU0xvY2sgbV9sb2NrOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBtYWNPU3xpT1M6IDEgYnl0ZQogCi0gICAgdWludDMyX3QgbV9iaXRGaWVsZDsKKyAgICB1
aW50MzJfdCBtX2JpdEZpZWxkOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gbWFjT1N8aU9TOiA0IGJ5dGVzCiAKLSAgICBXcml0ZUJhcnJpZXI8SlNHbG9iYWxPYmpl
Y3Q+IG1fZ2xvYmFsT2JqZWN0OwotICAgIFdyaXRlQmFycmllcjxVbmtub3duPiBtX3Byb3RvdHlw
ZTsKLSAgICBtdXRhYmxlIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmVDaGFpbj4gbV9jYWNoZWRQcm90
b3R5cGVDaGFpbjsKKyAgICB1aW50MTZfdCBtX3RyYW5zaXRpb25PZmZzZXQ7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gbWFjT1N8aU9TOiAyIGJ5dGVzCisgICAgdWludDE2X3Qg
bV9tYXhPZmZzZXQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1h
Y09TfGlPUzogMiBieXRlcwogCi0gICAgV3JpdGVCYXJyaWVyPEpTQ2VsbD4gbV9wcmV2aW91c09y
UmFyZURhdGE7CisgICAgV3JpdGVCYXJyaWVyPEpTR2xvYmFsT2JqZWN0PiBtX2dsb2JhbE9iamVj
dDsgICAgICAgICAgICAgICAgIC8vIG1hY09TfGlPUzogOCBieXRlcworICAgIFdyaXRlQmFycmll
cjxVbmtub3duPiBtX3Byb3RvdHlwZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBtYWNP
U3xpT1M6IDggYnl0ZXMKKyAgICBtdXRhYmxlIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmVDaGFpbj4g
bV9jYWNoZWRQcm90b3R5cGVDaGFpbjsgLy8gbWFjT1N8aU9TOiA4IGJ5dGVzCiAKLSAgICBSZWZQ
dHI8VW5pcXVlZFN0cmluZ0ltcGw+IG1fdHJhbnNpdGlvblByb3BlcnR5TmFtZTsKKyAgICBXcml0
ZUJhcnJpZXI8SlNDZWxsPiBtX3ByZXZpb3VzT3JSYXJlRGF0YTsgICAgICAgICAgICAgICAgICAg
Ly8gbWFjT1N8aU9TOiA4IGJ5dGVzCiAKLSAgICBjb25zdCBDbGFzc0luZm8qIG1fY2xhc3NJbmZv
OworICAgIENvbXBhY3RSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+IG1fdHJhbnNpdGlvblByb3Bl
cnR5TmFtZTsgICAvLyBtYWNPUzogOCBieXRlcywgaU9TOiA0IGJ5dGVzCiAKLSAgICBTdHJ1Y3R1
cmVUcmFuc2l0aW9uVGFibGUgbV90cmFuc2l0aW9uVGFibGU7CisgICAgQ29tcGFjdFB0cjxjb25z
dCBDbGFzc0luZm8+IG1fY2xhc3NJbmZvOyAgICAgICAgICAgICAgICAgICAgIC8vIG1hY09TOiA4
IGJ5dGVzLCBpT1M6IDQgYnl0ZXMKKworICAgIFN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZSBtX3Ry
YW5zaXRpb25UYWJsZTsgICAgICAgICAgICAgICAgICAvLyBtYWNPU3xpT1M6IDggYnl0ZXMKIAog
ICAgIC8vIFNob3VsZCBiZSBhY2Nlc3NlZCB0aHJvdWdoIGVuc3VyZVByb3BlcnR5VGFibGUoKS4g
RHVyaW5nIEdDLCBpdCBtYXkgYmUgc2V0IHRvIDAgYnkgYW5vdGhlciB0aHJlYWQuCiAgICAgLy8g
RHVyaW5nIGEgSGVhcCBTbmFwc2hvdCBHQyB3ZSBhdm9pZCBjbGVhcmluZyB0aGUgdGFibGUgc28g
aXQgaXMgc2FmZSB0byB1c2UuCi0gICAgV3JpdGVCYXJyaWVyPFByb3BlcnR5VGFibGU+IG1fcHJv
cGVydHlUYWJsZVVuc2FmZTsKKyAgICBXcml0ZUJhcnJpZXI8UHJvcGVydHlUYWJsZT4gbV9wcm9w
ZXJ0eVRhYmxlVW5zYWZlOyAgICAgICAgICAgLy8gbWFjT1N8aU9TOiA4IGJ5dGVzCiAKLSAgICBt
dXRhYmxlIElubGluZVdhdGNocG9pbnRTZXQgbV90cmFuc2l0aW9uV2F0Y2hwb2ludFNldDsKKyAg
ICBtdXRhYmxlIElubGluZVdhdGNocG9pbnRTZXQgbV90cmFuc2l0aW9uV2F0Y2hwb2ludFNldDsg
ICAgICAgLy8gbWFjT1N8aU9TOiA4IGJ5dGVzCiAKICAgICBzdGF0aWNfYXNzZXJ0KGZpcnN0T3V0
T2ZMaW5lT2Zmc2V0IDwgMjU2KTsKIAotICAgIHVpbnQxNl90IG1fdHJhbnNpdGlvbk9mZnNldDsK
LSAgICB1aW50MTZfdCBtX21heE9mZnNldDsKLQotICAgIHVpbnQzMl90IG1fcHJvcGVydHlIYXNo
OwotICAgIFRpbnlCbG9vbUZpbHRlciBtX3NlZW5Qcm9wZXJ0aWVzOworICAgIHVpbnQzMl90IG1f
cHJvcGVydHlIYXNoOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBtYWNP
U3xpT1M6IDQgYnl0ZXMKKyAgICBDb21wYWN0Qmxvb21GaWx0ZXIgbV9zZWVuUHJvcGVydGllczsg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gbWFjT1M6IDggYnl0ZXMsIGlPUzogNCBieXRlcwog
CiAgICAgZnJpZW5kIGNsYXNzIFZNSW5zcGVjdG9yOwogICAgIGZyaWVuZCBjbGFzcyBKU0RvbGxh
clZNSGVscGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
dWN0dXJlSURCbG9iLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJ
REJsb2IuaAppbmRleCBkNGFjMTUyOTE4NTRmNGM3OTcwODBlYjkxYzlhZGYzOWJiOGM3ZDViLi5i
ZjY3MDU4ZGE1NWE0YzllNDE0ODJhYzBhNzc3MDVkODVmYTMxNTQ1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJREJsb2IuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJREJsb2IuaApAQCAtMzcsMTggKzM3LDE2
IEBAIGNsYXNzIFN0cnVjdHVyZUlEQmxvYiB7CiBwdWJsaWM6CiAgICAgU3RydWN0dXJlSURCbG9i
KCkgPSBkZWZhdWx0OwogCi0gICAgU3RydWN0dXJlSURCbG9iKFN0cnVjdHVyZUlEIHN0cnVjdHVy
ZUlELCBJbmRleGluZ1R5cGUgaW5kZXhpbmdNb2RlSW5jbHVkaW5nSGlzdG9yeSwgY29uc3QgVHlw
ZUluZm8mIHR5cGVJbmZvKQorICAgIFN0cnVjdHVyZUlEQmxvYihJbmRleGluZ1R5cGUgaW5kZXhp
bmdNb2RlSW5jbHVkaW5nSGlzdG9yeSwgY29uc3QgVHlwZUluZm8mIHR5cGVJbmZvKQogICAgIHsK
LSAgICAgICAgdS5maWVsZHMuc3RydWN0dXJlSUQgPSBzdHJ1Y3R1cmVJRDsKICAgICAgICAgdS5m
aWVsZHMuaW5kZXhpbmdNb2RlSW5jbHVkaW5nSGlzdG9yeSA9IGluZGV4aW5nTW9kZUluY2x1ZGlu
Z0hpc3Rvcnk7CiAgICAgICAgIHUuZmllbGRzLnR5cGUgPSB0eXBlSW5mby50eXBlKCk7CiAgICAg
ICAgIHUuZmllbGRzLmlubGluZVR5cGVGbGFncyA9IHR5cGVJbmZvLmlubGluZVR5cGVGbGFncygp
OwogICAgICAgICB1LmZpZWxkcy5kZWZhdWx0Q2VsbFN0YXRlID0gQ2VsbFN0YXRlOjpEZWZpbml0
ZWx5V2hpdGU7CiAgICAgfQogCi0gICAgdm9pZCBvcGVyYXRvcj0oY29uc3QgU3RydWN0dXJlSURC
bG9iJiBvdGhlcikgeyB1LmRvdWJsZVdvcmQgPSBvdGhlci51LmRvdWJsZVdvcmQ7IH0KLSAgICAK
LSAgICBTdHJ1Y3R1cmVJRCBzdHJ1Y3R1cmVJRCgpIGNvbnN0IHsgcmV0dXJuIHUuZmllbGRzLnN0
cnVjdHVyZUlEOyB9CisgICAgdm9pZCBvcGVyYXRvcj0oY29uc3QgU3RydWN0dXJlSURCbG9iJiBv
dGhlcikgeyB1LndvcmQyID0gb3RoZXIudS53b3JkMjsgfQorCiAgICAgSW5kZXhpbmdUeXBlIGlu
ZGV4aW5nTW9kZUluY2x1ZGluZ0hpc3RvcnkoKSBjb25zdCB7IHJldHVybiB1LmZpZWxkcy5pbmRl
eGluZ01vZGVJbmNsdWRpbmdIaXN0b3J5OyB9CiAgICAgRGVwZW5kZW5jeSBmZW5jZWRJbmRleGlu
Z01vZGVJbmNsdWRpbmdIaXN0b3J5KEluZGV4aW5nVHlwZSYgaW5kZXhpbmdUeXBlKQogICAgIHsK
QEAgLTYwLDEzICs1OCw4IEBAIHB1YmxpYzoKICAgICAKICAgICBUeXBlSW5mbyB0eXBlSW5mbyhU
eXBlSW5mbzo6T3V0T2ZMaW5lVHlwZUZsYWdzIG91dE9mTGluZVR5cGVGbGFncykgY29uc3QgeyBy
ZXR1cm4gVHlwZUluZm8odHlwZSgpLCBpbmxpbmVUeXBlRmxhZ3MoKSwgb3V0T2ZMaW5lVHlwZUZs
YWdzKTsgfQogICAgIAotICAgIGludDMyX3QgYmxvYkV4Y2x1ZGluZ1N0cnVjdHVyZUlEKCkgY29u
c3QgeyByZXR1cm4gdS53b3Jkcy53b3JkMjsgfQotICAgIGludDY0X3QgYmxvYigpIGNvbnN0IHsg
cmV0dXJuIHUuZG91YmxlV29yZDsgfQotICAgIAotICAgIHN0YXRpYyBwdHJkaWZmX3Qgc3RydWN0
dXJlSURPZmZzZXQoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihTdHJ1
Y3R1cmVJREJsb2IsIHUuZmllbGRzLnN0cnVjdHVyZUlEKTsKLSAgICB9CisgICAgaW50MzJfdCBi
bG9iRXhjbHVkaW5nU3RydWN0dXJlSUQoKSBjb25zdCB7IHJldHVybiB1LndvcmQxOyB9CisgICAg
aW50MzJfdCBibG9iKCkgY29uc3QgeyByZXR1cm4gdS53b3JkMjsgfQogCiAgICAgc3RhdGljIHB0
cmRpZmZfdCBpbmRleGluZ01vZGVJbmNsdWRpbmdIaXN0b3J5T2Zmc2V0KCkKICAgICB7CkBAIC03
NiwyMCArNjksMTUgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB1bmlvbiBEYXRhIHsKICAgICAg
ICAgc3RydWN0IHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgcmVtb3ZlIHRoaXMg
c2luY2UgdGhlIHN0cnVjdHVyZUlEIGNhbiBiZSBkaXJlY3RseSBjb21wdXRlZCBmcm9tIHRoZSBT
dHJ1Y3R1cmUqCi0gICAgICAgICAgICBTdHJ1Y3R1cmVJRCBzdHJ1Y3R1cmVJRDsKICAgICAgICAg
ICAgIEluZGV4aW5nVHlwZSBpbmRleGluZ01vZGVJbmNsdWRpbmdIaXN0b3J5OwogICAgICAgICAg
ICAgSlNUeXBlIHR5cGU7CiAgICAgICAgICAgICBUeXBlSW5mbzo6SW5saW5lVHlwZUZsYWdzIGlu
bGluZVR5cGVGbGFnczsKICAgICAgICAgICAgIENlbGxTdGF0ZSBkZWZhdWx0Q2VsbFN0YXRlOwog
ICAgICAgICB9IGZpZWxkczsKLSAgICAgICAgc3RydWN0IHsKLSAgICAgICAgICAgIGludDMyX3Qg
d29yZDE7Ci0gICAgICAgICAgICBpbnQzMl90IHdvcmQyOwotICAgICAgICB9IHdvcmRzOwotICAg
ICAgICBpbnQ2NF90IGRvdWJsZVdvcmQ7CisgICAgICAgIGludDMyX3Qgd29yZDE7CisgICAgICAg
IGludDMyX3Qgd29yZDI7CiAKLSAgICAgICAgRGF0YSgpIHsgZG91YmxlV29yZCA9IDB4YmJhZGJl
ZWY7IH0KKyAgICAgICAgRGF0YSgpIHsgd29yZDIgPSAweGJiYWRiZWVmOyB9CiAgICAgfTsKIAog
ICAgIERhdGEgdTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dl
YkFzc2VtYmx5RnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2Vi
QXNzZW1ibHlGdW5jdGlvbi5jcHAKaW5kZXggYzRkMmI5NmMyOTMwNzE1NTFmOTZiOGZhNGRjZWFm
NTA5NWEwOWI5NS4uNDRiNjkyYjdlZTUyOWYzOTFkY2QyNWVkOThmYzdkMjZkZjcxNWQxNiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlv
bi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5j
dGlvbi5jcHAKQEAgLTI2OCw3ICsyNjgsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRy
eVB0clRhZz4gV2ViQXNzZW1ibHlGdW5jdGlvbjo6anNDYWxsRW50cnlwb2ludFNsb3coKQogCiAg
ICAgICAgICAgICAgICAgc3RhY2tMaW1pdEdQUklzQ2xvYmJlcmVkID0gdHJ1ZTsKICAgICAgICAg
ICAgICAgICBqaXQuZW1pdExvYWRTdHJ1Y3R1cmUodm0sIHNjcmF0Y2hHUFIsIHNjcmF0Y2hHUFIp
OwotICAgICAgICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhzY3Jh
dGNoR1BSLCBTdHJ1Y3R1cmU6OmNsYXNzSW5mb09mZnNldCgpKSwgc2NyYXRjaEdQUik7CisgICAg
ICAgICAgICAgICAgaml0LmxvYWRDb21wYWN0UHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhzY3Jh
dGNoR1BSLCBTdHJ1Y3R1cmU6OmNsYXNzSW5mb09mZnNldCgpKSwgc2NyYXRjaEdQUik7CiAKICAg
ICAgICAgICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfZmluYWw8V2ViQXNzZW1ibHlGdW5j
dGlvbj46OnZhbHVlLCAiV2UgZG8gbm90IGNoZWNrIGZvciBzdWJ0eXBlcyBiZWxvdyIpOwogICAg
ICAgICAgICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19maW5hbDxXZWJBc3NlbWJseVdyYXBw
ZXJGdW5jdGlvbj46OnZhbHVlLCAiV2UgZG8gbm90IGNoZWNrIGZvciBzdWJ0eXBlcyBiZWxvdyIp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggODgxOTIwZGMy
ZWZiNTA0NDEwNmQ1YWE1NDljNTI3ZDA0MDcwYWQxMy4uNTExNzIzM2YwMjI5ZDQ3OWNiOTlhZmYz
MjgwODBhMjJkYmQ1NGFiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC04MTEsNiArODExLDggQEAKIAkJRkUzNUQwOTIyN0RDNUVDQzAwOURGQTVCIC8qIFN0
YWNrQ2hlY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRkUzNUQwOTEyN0RDNUVDQzAwOURGQTVCIC8qIFN0YWNrQ2hlY2suY3BwICovOyB9OwogCQlG
RURBQ0QzRDE2MzBGODNGMDBDNjk2MzQgLyogU3RhY2tTdGF0cy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRURBQ0QzQjE2MzBGODNGMDBDNjk2MzQg
LyogU3RhY2tTdGF0cy5jcHAgKi87IH07CiAJCUZFRUE0REY5MjE2RDdCRTQwMEFDMDYwMiAvKiBT
dGFja1BvaW50ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRkVFQTRERjgyMTZEN0JFNDAwQUMwNjAyIC8qIFN0YWNrUG9pbnRlci5jcHAgKi87IH07
CisJCUZGODk1RjExMjgyQUI5NjQwMEU3QkFFOCAvKiBDb21wYWN0UmVmUHRyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRjg5NUYxMDI4MkFCOTY0MDBF
N0JBRTggLyogQ29tcGFjdFJlZlB0ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCUZGRUU0NkY0MjgyNURGODAwMDNCQzk4MSAvKiBDb21wYWN0UHRy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRkVFNDZG
MzI4MjVERjgwMDAzQkM5ODEgLyogQ29tcGFjdFB0ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8K
IAogLyogQmVnaW4gUEJYQnVpbGRSdWxlIHNlY3Rpb24gKi8KQEAgLTE3MTQsNiArMTcxNiw4IEBA
CiAJCUZFRUE0REY4MjE2RDdCRTQwMEFDMDYwMiAvKiBTdGFja1BvaW50ZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RhY2tQb2ludGVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVGMjk1QkYyMEI0OURDQjAwQ0YyODNBIC8qIFVURjhDb252
ZXJzaW9uRXJyb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVVRGOENvbnZl
cnNpb25FcnJvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRjBBNDM2NTg4OTU0
RjNDQjA3REJFQ0EgLyogU3RkTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTdGRMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZGODk1RjEwMjgyQUI5
NjQwMEU3QkFFOCAvKiBDb21wYWN0UmVmUHRyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IENvbXBhY3RSZWZQdHIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkZF
RTQ2RjMyODI1REY4MDAwM0JDOTgxIC8qIENvbXBhY3RQdHIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQ29tcGFjdFB0ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
LyogRW5kIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhGcmFtZXdv
cmtzQnVpbGRQaGFzZSBzZWN0aW9uICovCkBAIC0xOTMwLDYgKzE5MzQsOCBAQAogCQkJCTBGNjZC
MjgxMURDOTdCQUIwMDRBMUQzRiAvKiBDbG9ja1R5cGUuaCAqLywKIAkJCQkwRkM0RURFNTE2OTYx
NDk2MDBGNjUwNDEgLyogQ29tbWFQcmludGVyLmggKi8sCiAJCQkJRTNDRjc2OTAyMTE1RDZCQTAw
OTFERTQ4IC8qIENvbXBhY3RQb2ludGVyVHVwbGUuaCAqLywKKwkJCQlGRkVFNDZGMzI4MjVERjgw
MDAzQkM5ODEgLyogQ29tcGFjdFB0ci5oICovLAorCQkJCUZGODk1RjEwMjgyQUI5NjQwMEU3QkFF
OCAvKiBDb21wYWN0UmVmUHRyLmggKi8sCiAJCQkJRTM4MDIwREIyNDAxQzA5MzAwMzdDQTlFIC8q
IENvbXBhY3RSZWZQdHJUdXBsZS5oICovLAogCQkJCTlCOTZFOUIzMjRGRjc3QjgwMDE3NTZDMyAv
KiBDb21wYWN0VW5pcXVlUHRyVHVwbGUuaCAqLywKIAkJCQkwRjhGMkI4RjE3MkUwMEYwMDA3REJE
QTUgLyogQ29tcGlsYXRpb25UaHJlYWQuY3BwICovLApAQCAtMjg2MSw2ICsyODY3LDggQEAKIAkJ
CQlEREYzMDdGNDI3QzA4NkVBMDA2QTUyNkYgLyogQ29sbGF0b3IuaCBpbiBIZWFkZXJzICovLAog
CQkJCUREM0RDOTE2MjdBNEJGOEUwMDdFNUI2MSAvKiBDb21tYVByaW50ZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUREM0RDOEY2MjdBNEJGOEUwMDdFNUI2MSAvKiBDb21wYWN0UG9pbnRlclR1cGxl
LmggaW4gSGVhZGVycyAqLywKKwkJCQlGRkVFNDZGNDI4MjVERjgwMDAzQkM5ODEgLyogQ29tcGFj
dFB0ci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkY4OTVGMTEyODJBQjk2NDAwRTdCQUU4IC8qIENv
bXBhY3RSZWZQdHIuaCBpbiBIZWFkZXJzICovLAogCQkJCUREM0RDOTM5MjdBNEJGOEUwMDdFNUI2
MSAvKiBDb21wYWN0UmVmUHRyVHVwbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUREM0RDOTM1MjdB
NEJGOEUwMDdFNUI2MSAvKiBDb21wYWN0VW5pcXVlUHRyVHVwbGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCUREM0RDOTA3MjdBNEJGOEUwMDdFNUI2MSAvKiBDb21waWxhdGlvblRocmVhZC5oIGluIEhl
YWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dCBiL1Nv
dXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CmluZGV4IDdlZDBjNjViZjcwMjUxMDBiNTkyNTA3
NTdlNjczNjI2YzZjYmU0YTIuLmRhNjE1MTYzOWE3MDdiZWFlZjhhM2UzMzNhMmEwNzYxNzc0ZjQ2
N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJj
ZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CkBAIC0zNSw2ICszNSw4IEBAIHNldChXVEZfUFVCTElD
X0hFQURFUlMKICAgICBDbG9ja1R5cGUuaAogICAgIENvbW1hUHJpbnRlci5oCiAgICAgQ29tcGFj
dFBvaW50ZXJUdXBsZS5oCisgICAgQ29tcGFjdFB0ci5oCisgICAgQ29tcGFjdFJlZlB0ci5oCiAg
ICAgQ29tcGFjdFJlZlB0clR1cGxlLmgKICAgICBDb21wYWN0VW5pcXVlUHRyVHVwbGUuaAogICAg
IENvbXBpbGF0aW9uVGhyZWFkLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0NvbXBhY3RQ
dHIuaCBiL1NvdXJjZS9XVEYvd3RmL0NvbXBhY3RQdHIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45OWJlM2YxOTlk
YmMxNDViYTgxYWNlODM0ZmJmYmYxOTczYjNmYWEyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dURi93dGYvQ29tcGFjdFB0ci5oCkBAIC0wLDAgKzEsMTQxIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3
dGYvQ29tcGFjdFJlZlB0ci5oPgorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGUgPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIFRyYWl0cyA9IENvbXBhY3RQdHJUcmFpdHM8VD4+CitjbGFzcyBDb21w
YWN0UHRyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKworcHVibGljOgorICAgIEFM
V0FZU19JTkxJTkUgY29uc3RleHByIENvbXBhY3RQdHIoKQorICAgICAgICA6IG1fcHRyKG51bGxw
dHIpCisgICAgeworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgY29uc3RleHByIENvbXBhY3RQ
dHIoc3RkOjpudWxscHRyX3QpCisgICAgICAgIDogbV9wdHIobnVsbHB0cikKKyAgICB7CisgICAg
fQorCisgICAgQUxXQVlTX0lOTElORSBDb21wYWN0UHRyKFQqIHB0cikKKyAgICAgICAgOiBtX3B0
cihwdHIpCisgICAgeworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgQ29tcGFjdFB0cihjb25z
dCBDb21wYWN0UHRyJiBvKQorICAgICAgICA6IG1fcHRyKG8ubV9wdHIpCisgICAgeworICAgIH0K
KworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBYLCB0eXBlbmFtZSBZPgorICAgIEFMV0FZU19JTkxJ
TkUgQ29tcGFjdFB0cihjb25zdCBDb21wYWN0UHRyPFgsIFk+JiBvKQorICAgICAgICA6IG1fcHRy
KG8uZ2V0KCkpCisgICAgeworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgQ29tcGFjdFB0cihD
b21wYWN0UHRyJiYgbykKKyAgICAgICAgOiBtX3B0cihvLm1fcHRyKQorICAgIHsKKyAgICB9CisK
KyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgWCwgdHlwZW5hbWUgWT4KKyAgICBBTFdBWVNfSU5MSU5F
IENvbXBhY3RQdHIoQ29tcGFjdFB0cjxYLCBZPiYmIG8pCisgICAgICAgIDogbV9wdHIoby5nZXQo
KSkKKyAgICB7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB+Q29tcGFjdFB0cigpID0gZGVm
YXVsdDsKKworICAgIFQmIG9wZXJhdG9yKigpIGNvbnN0CisgICAgeworICAgICAgICBUKiBwdHIg
PSBUcmFpdHM6OnVud3JhcChtX3B0cik7CisgICAgICAgIEFTU0VSVChwdHIpOworICAgICAgICBy
ZXR1cm4gKnB0cjsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIFQqIG9wZXJhdG9yLT4oKSBj
b25zdCB7IHJldHVybiBUcmFpdHM6OnVud3JhcChtX3B0cik7IH0KKworICAgIGJvb2wgb3BlcmF0
b3IhKCkgY29uc3QgeyByZXR1cm4gIW1fcHRyOyB9CisKKyAgICBleHBsaWNpdCBvcGVyYXRvciBi
b29sKCkgY29uc3QgeyByZXR1cm4gISFtX3B0cjsgfQorCisgICAgQ29tcGFjdFB0cjxUPiYgb3Bl
cmF0b3I9KHN0ZDo6bnVsbHB0cl90KQorICAgIHsKKyAgICAgICAgVHJhaXRzOjpleGNoYW5nZSht
X3B0ciwgbnVsbHB0cik7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKKyAgICBDb21w
YWN0UHRyPFQ+JiBvcGVyYXRvcj0oY29uc3QgQ29tcGFjdFB0ciYgbykKKyAgICB7CisgICAgICAg
IG1fcHRyID0gby5tX3B0cjsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKworICAgIENv
bXBhY3RQdHI8VD4mIG9wZXJhdG9yPShUKiBvcHRyKQorICAgIHsKKyAgICAgICAgQ29tcGFjdFB0
ciBjb3B5ID0gb3B0cjsKKyAgICAgICAgVHJhaXRzOjpzd2FwKG1fcHRyLCBjb3B5Lm1fcHRyKTsK
KyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBY
LCB0eXBlbmFtZSBZPgorICAgIENvbXBhY3RQdHI8VD4mIG9wZXJhdG9yPShjb25zdCBDb21wYWN0
UHRyPFgsIFk+JiBvKQorICAgIHsKKyAgICAgICAgQ29tcGFjdFB0ciBjb3B5ID0gbzsKKyAgICAg
ICAgVHJhaXRzOjpzd2FwKG1fcHRyLCBjb3B5Lm1fcHRyKTsKKyAgICAgICAgcmV0dXJuICp0aGlz
OworICAgIH0KKworICAgIENvbXBhY3RQdHI8VD4mIG9wZXJhdG9yPShDb21wYWN0UHRyJiYgbykK
KyAgICB7CisgICAgICAgIG1fcHRyID0gby5tX3B0cjsKKyAgICAgICAgcmV0dXJuICp0aGlzOwor
ICAgIH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBYLCB0eXBlbmFtZSBZPgorICAgIENvbXBh
Y3RQdHI8VD4mIG9wZXJhdG9yPShDb21wYWN0UHRyPFgsIFk+JiYgbykKKyAgICB7CisgICAgICAg
IENvbXBhY3RQdHIgY29weSA9IG87CisgICAgICAgIFRyYWl0czo6c3dhcChtX3B0ciwgY29weS5t
X3B0cik7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKKyAgICBUKiBnZXQoKSBjb25z
dCB7IHJldHVybiBUcmFpdHM6OnVud3JhcChtX3B0cik7IH0KKworcHJpdmF0ZToKKyAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgWCwgdHlwZW5hbWUgWT4KKyAgICBmcmllbmQgY2xhc3MgQ29tcGFjdFB0
cjsKKworICAgIHR5cGVuYW1lIFRyYWl0czo6U3RvcmFnZVR5cGUgbV9wdHI7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXVEYKKwordXNpbmcgV1RGOjpDb21wYWN0UHRyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvQ29tcGFjdFJlZlB0ci5oIGIvU291cmNlL1dURi93dGYvQ29tcGFjdFJlZlB0
ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmY2NzVlMjg2ZjEzMDc2MDE2NjcwOTlmOTZiNWY3MjViMzdmNTYwZGEK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Db21wYWN0UmVmUHRyLmgKQEAgLTAs
MCArMSwxODUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPGNzdGRpbnQ+CisjaW5jbHVkZSA8dXRpbGl0eT4K
KyNpbmNsdWRlIDx3dGYvUmF3UHRyVHJhaXRzLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgor
I2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBs
YXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgQ29tcGFjdGVkIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKKworcHVibGljOgorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgLy8gc3Rh
dGljX2Fzc2VydChNQUNIX1ZNX01BWF9BRERSRVNTIDw9ICgxdWxsIDw8IDM2KSk7CisgICAgdXNp
bmcgU3RvcmFnZVNpemUgPSB1aW50MzJfdDsKKyNlbHNlCisgICAgdXNpbmcgU3RvcmFnZVNpemUg
PSB1aW50cHRyX3Q7CisjZW5kaWYKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNDb21wYWN0
ZWRUeXBlID0gdHJ1ZTsKKworICAgIENvbXBhY3RlZCgpCisgICAgeworICAgICAgICBzZXQobnVs
bHB0cik7CisgICAgfQorCisgICAgQ29tcGFjdGVkKG51bGxwdHJfdCkKKyAgICB7CisgICAgICAg
IHNldChudWxscHRyKTsKKyAgICB9CisKKyAgICBDb21wYWN0ZWQoVCogcHRyKQorICAgIHsKKyAg
ICAgICAgc2V0KHB0cik7CisgICAgfQorCisgICAgQ29tcGFjdGVkPFQ+JiBvcGVyYXRvcj0oVCog
cHRyKQorICAgIHsKKyAgICAgICAgc2V0KHB0cik7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAg
ICB9CisKKyAgICBUKiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gZ2V0KCk7IH0KKworICAg
IFQmIG9wZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuICpnZXQoKTsgfQorCisgICAgYm9vbCBvcGVy
YXRvciEoKSBjb25zdCB7IHJldHVybiAhZ2V0KCk7IH0KKworICAgIGV4cGxpY2l0IG9wZXJhdG9y
IGJvb2woKSBjb25zdCB7IHJldHVybiAhIWdldCgpOyB9CisKKyAgICBUKiBnZXQoKSBjb25zdAor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGRlY29kZShtX3B0cik7CisgICAgfQorCisgICAgdm9pZCBz
ZXQoVCogcHRyKQorICAgIHsKKyAgICAgICAgbV9wdHIgPSBlbmNvZGUocHRyKTsKKyAgICB9CisK
KyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVT4KKyAgICBUKiBleGNoYW5nZShVJiYgbmV3VmFsdWUpCisg
ICAgeworICAgICAgICBUKiBvbGRWYWx1ZSA9IGdldCgpOworICAgICAgICBzZXQoc3RkOjpmb3J3
YXJkPFU+KG5ld1ZhbHVlKSk7CisgICAgICAgIHJldHVybiBvbGRWYWx1ZTsKKyAgICB9CisKKyAg
ICB2b2lkIHN3YXAobnVsbHB0cl90KSB7IHNldChudWxscHRyKTsgfQorCisgICAgdm9pZCBzd2Fw
KENvbXBhY3RlZCYgb3RoZXIpCisgICAgeworICAgICAgICBUKiB0MSA9IGdldCgpOworICAgICAg
ICBUKiB0MiA9IG90aGVyLmdldCgpOworICAgICAgICBzZXQodDIpOworICAgICAgICBvdGhlci5z
ZXQodDEpOworICAgIH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBPdGhlciwgdHlwZW5hbWUg
PSBzdGQ6OmVuYWJsZV9pZl90PE90aGVyOjppc0NvbXBhY3RlZFR5cGU+PgorICAgIHZvaWQgc3dh
cChPdGhlciYgb3RoZXIpCisgICAgeworICAgICAgICBUKiB0MSA9IGdldCgpOworICAgICAgICBU
KiB0MiA9IG90aGVyLmdldCgpOworICAgICAgICBzZXQodDIpOworICAgICAgICBvdGhlci5zZXQo
dDEpOworICAgIH0KKworICAgIHZvaWQgc3dhcChUKiB0MikKKyAgICB7CisgICAgICAgIFQqIHQx
ID0gZ2V0KCk7CisgICAgICAgIHN0ZDo6c3dhcCh0MSwgdDIpOworICAgICAgICBzZXQodDEpOwor
ICAgIH0KKworICAgIHN0YXRpYyBBTFdBWVNfSU5MSU5FIGNvbnN0ZXhwciBTdG9yYWdlU2l6ZSBl
bmNvZGUodWludHB0cl90IHB0cikKKyAgICB7CisgICAgICAgIEFTU0VSVCghcHRyICYgMHhGKTsK
KyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U3Rv
cmFnZVNpemU+KHB0ciA+PiA0KTsKKyNlbHNlCisgICAgICAgIHJldHVybiBwdHI7CisjZW5kaWYK
KyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIGNvbnN0ZXhwciBTdG9yYWdlU2l6ZSBlbmNvZGUo
VCogcHRyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGVuY29kZShyZWludGVycHJldF9j
YXN0PHVpbnRwdHJfdD4ocHRyKSk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSBjb25zdGV4
cHIgVCogZGVjb2RlKGNvbnN0IFN0b3JhZ2VTaXplJiBwdHIpIGNvbnN0CisgICAgeworI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFQqPihz
dGF0aWNfY2FzdDx1aW50cHRyX3Q+KHB0cikgPDwgNCk7CisjZWxzZQorICAgICAgICByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDxUKj4ocHRyKTsKKyNlbmRpZgorICAgIH0KKworcHJpdmF0ZToKKyAg
ICBTdG9yYWdlU2l6ZSBtX3B0cjsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RydWN0
IEdldFB0ckhlbHBlcjxDb21wYWN0ZWQ8VD4+IHsKKyAgICB1c2luZyBQdHJUeXBlID0gVCo7Cisg
ICAgc3RhdGljIFQqIGdldFB0cihjb25zdCBDb21wYWN0ZWQ8VD4mIHApIHsgcmV0dXJuIGNvbnN0
X2Nhc3Q8VCo+KHAuZ2V0KCkpOyB9Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVj
dCBJc1NtYXJ0UHRyPENvbXBhY3RlZDxUPj4geworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCB2
YWx1ZSA9IHRydWU7Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBDb21wYWN0
UHRyVHJhaXRzIHsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4KKyAgICB1c2luZyBSZWJpbmRU
cmFpdHMgPSBSYXdQdHJUcmFpdHM8VT47CisKKyAgICB1c2luZyBTdG9yYWdlVHlwZSA9IENvbXBh
Y3RlZDxUPjsKKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBVPgorICAgIHN0YXRpYyBBTFdBWVNf
SU5MSU5FIFQqIGV4Y2hhbmdlKFN0b3JhZ2VUeXBlJiBwdHIsIFUmJiBuZXdWYWx1ZSkgeyByZXR1
cm4gcHRyLmV4Y2hhbmdlKG5ld1ZhbHVlKTsgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIE90
aGVyPgorICAgIHN0YXRpYyBBTFdBWVNfSU5MSU5FIHZvaWQgc3dhcChTdG9yYWdlVHlwZSYgYSwg
T3RoZXImIGIpIHsgYS5zd2FwKGIpOyB9CisKKyAgICBzdGF0aWMgQUxXQVlTX0lOTElORSBUKiB1
bndyYXAoY29uc3QgU3RvcmFnZVR5cGUmIHB0cikgeyByZXR1cm4gcHRyLmdldCgpOyB9CisKKyAg
ICBzdGF0aWMgU3RvcmFnZVR5cGUgaGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgeyByZXR1cm4gYml0
d2lzZV9jYXN0PFN0b3JhZ2VUeXBlPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KC0xKSk7IH0KKyAg
ICBzdGF0aWMgQUxXQVlTX0lOTElORSBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKGNvbnN0
IFN0b3JhZ2VUeXBlJiBwdHIpIHsgcmV0dXJuIHB0ciA9PSBoYXNoVGFibGVEZWxldGVkVmFsdWUo
KTsgfQorfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cit1c2luZyBDb21wYWN0UmVmUHRyID0g
UmVmUHRyPFQsIENvbXBhY3RQdHJUcmFpdHM8VD4+OworCit9IC8vIG5hbWVzcGFjZSBXVEYKKwor
dXNpbmcgV1RGOjpDb21wYWN0UmVmUHRyOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIv
VG9vbHMvQ2hhbmdlTG9nCmluZGV4IDMxMWQ2ZDFmMWZkY2FlYTkyZGNjZmNiNjIwZDE1NWI4Yjcy
Nzk3ZGMuLjk1NWM1ZjkzM2JjYjY3ODJiNzc5ZDIzYzBiZGE3ZDBlODFjODJjNTEgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBA
QAorMjAyMi0wNS0xNiAgWWlqaWEgSHVhbmcgIDx5aWppYV9odWFuZ0BhcHBsZS5jb20+CisKKyAg
ICAgICAgUkVHUkVTU0lPTiAocjI4NTk1NSk6IDIlIHJlZ3Jlc3Npb24gb24gUkFNaWZpY2F0aW9u
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDA0MDcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2Vi
S2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvQ29tcGFjdFB0ci5jcHA6IEFkZGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ29tcGFjdFJlZlB0
ci5jcHA6IEFkZGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpmMSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpDb25zdFJlZkNvdW50
ZWQ6OmNyZWF0ZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpyZXR1cm5Db25zdFJlZkNvdW50
ZWRSZWYpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6cmV0dXJuUmVmQ291bnRlZFJlZik6Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpDb21wYWN0UmVmUHRyQ2hlY2tpbmdSZWZMb2dnZXI6OkNv
bXBhY3RSZWZQdHJDaGVja2luZ1JlZkxvZ2dlcik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjps
b2dnZXJOYW1lKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkNvbXBhY3RSZWZQdHJDaGVja2lu
Z1JlZkxvZ2dlcjo6cmVmKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkNvbXBhY3RSZWZQdHJD
aGVja2luZ1JlZkxvZ2dlcjo6ZGVyZWYpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VGhyZWFk
U2FmZVJlZkNvdW50ZWRPYmplY3Q6OmNyZWF0ZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpU
aHJlYWRTYWZlUmVmQ291bnRlZE9iamVjdDo6flRocmVhZFNhZmVSZWZDb3VudGVkT2JqZWN0KToK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Ok1haW5UaHJlYWRTYWZlUmVmQ291bnRlZE9iamVjdDo6
Y3JlYXRlKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Ok1haW5UaHJlYWRTYWZlUmVmQ291bnRl
ZE9iamVjdDo6fk1haW5UaHJlYWRTYWZlUmVmQ291bnRlZE9iamVjdCk6CisKIDIwMjItMDUtMDUg
IFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CiAKICAgICAgICAgU3VzcGVuZGFibGVX
b3JrUXVldWU6OnN1c3BlbmQgc2hvdWxkIGludm9rZSBjYWxsYmFjayBpbW1lZGlhdGVseSB3aGVu
IHF1ZXVlIGlzIHN1c3BlbmRlZApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFr
ZUxpc3RzLnR4dCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKaW5kZXggM2Uz
OWE0MDZiNTUzOWRkNTdiZmJhMWEwMWQ3ZWVjNzJlOWQ4ZDFhOS4uMzQyOWZkMDkzNzI1Y2U1NDBi
OWM2MmNmYjFhYmM5NmNiMzRhNTIxMiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9D
TWFrZUxpc3RzLnR4dAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CkBA
IC0yOSw2ICsyOSw4IEBAIHNldChUZXN0V1RGX1NPVVJDRVMKICAgICBUZXN0cy9XVEYvQnVtcFBv
aW50ZXJBbGxvY2F0b3IuY3BwCiAgICAgVGVzdHMvV1RGL0NTdHJpbmcuY3BwCiAgICAgVGVzdHMv
V1RGL0NoZWNrZWRBcml0aG1ldGljT3BlcmF0aW9ucy5jcHAKKyAgICBUZXN0cy9XVEYvQ29tcGFj
dFB0ci5jcHAKKyAgICBUZXN0cy9XVEYvQ29tcGFjdFJlZlB0ci5jcHAKICAgICBUZXN0cy9XVEYv
Q29tcGFjdFJlZlB0clR1cGxlLmNwcAogICAgIFRlc3RzL1dURi9Db21wYWN0VW5pcXVlUHRyVHVw
bGUuY3BwCiAgICAgVGVzdHMvV1RGL0NvbmN1cnJlbnRQdHJIYXNoU2V0LmNwcApkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCBkYWRkZWIyOThjZDBiOGZlNzM4MTFiMGIyMjc5ZWNlMDczZDlmMTZk
Li42OGM4Nzg3YWNlMjY3MWVkMDRhMWNhZDVmM2EyMWRjMzE4NmU2YzVkIDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtMTE2NSw2ICsxMTY1LDggQEAKIAkJRkUyRDk0NzQyNDVFQjJGNDAwRTQ4
MTM1IC8qIEJpdG1hcC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGRTJEOTQ3MzI0NUVCMkRGMDBFNDgxMzUgLyogQml0bWFwLmNwcCAqLzsgfTsKIAkJ
RkVDMkE4NTQyNENFOTc1RjAwQURCQzM1IC8qIERpc2FsbG93Vk1FbnRyeS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUMyQTg1MzI0Q0U5NzRFMDBB
REJDMzUgLyogRGlzYWxsb3dWTUVudHJ5LmNwcCAqLzsgfTsKIAkJRkVDMkE4NTYyNENFQjY1RjAw
QURCQzM1IC8qIFByb3BlcnR5U2xvdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGRUMyQTg1NTI0Q0VCNjVGMDBBREJDMzUgLyogUHJvcGVydHlTbG90
LmNwcCAqLzsgfTsKKwkJRkYxMEFBRjkyODMxQjFFNjAwQjk4NzVCIC8qIENvbXBhY3RQdHIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkYxMEFBRjgy
ODMxQjFFNjAwQjk4NzVCIC8qIENvbXBhY3RQdHIuY3BwICovOyB9OworCQlGRjVEMENCNDI4MzIy
MUFEMDBGMzI3OEEgLyogQ29tcGFjdFJlZlB0ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRjVEMENCMzI4MzIyMUFEMDBGMzI3OEEgLyogQ29tcGFj
dFJlZlB0ci5jcHAgKi87IH07CiAvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KIAogLyog
QmVnaW4gUEJYQ29udGFpbmVySXRlbVByb3h5IHNlY3Rpb24gKi8KQEAgLTMyMjksNiArMzIzMSw4
IEBACiAJCUZFQjZGNzRFMUIyQkE0NEUwMDlFNDkyMiAvKiBOYWtlZFB0ci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOYWtlZFB0ci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUZFQzJBODUzMjRDRTk3NEUwMEFEQkMzNSAvKiBEaXNhbGxvd1ZNRW50
cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGlzYWxsb3dWTUVu
dHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVDMkE4NTUyNENFQjY1RjAw
QURCQzM1IC8qIFByb3BlcnR5U2xvdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBQcm9wZXJ0eVNsb3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlG
RjEwQUFGODI4MzFCMUU2MDBCOTg3NUIgLyogQ29tcGFjdFB0ci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb21wYWN0UHRyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJRkY1RDBDQjMyODMyMjFBRDAwRjMyNzhBIC8qIENvbXBhY3RSZWZQdHIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29tcGFjdFJlZlB0ci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAvKiBFbmQgUEJYRmlsZVJlZmVyZW5jZSBzZWN0
aW9uICovCiAKIC8qIEJlZ2luIFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlIHNlY3Rpb24gKi8KQEAg
LTQ2NDcsNiArNDY1MSw4IEBACiAJCQkJQTdBOTY2REExNDBFQ0NDODAwNUVGOUI0IC8qIENoZWNr
ZWRBcml0aG1ldGljT3BlcmF0aW9ucy5jcHAgKi8sCiAJCQkJOUJCQ0E0REUyNjVBQ0E1QjAwREZF
NzIzIC8qIENoZWNrZWRQdHIuY3BwICovLAogCQkJCTlCRjAwMTMyMjY3QzRDNTkwMERDRkIzRiAv
KiBDaGVja2VkUmVmLmNwcCAqLywKKwkJCQlGRjEwQUFGODI4MzFCMUU2MDBCOTg3NUIgLyogQ29t
cGFjdFB0ci5jcHAgKi8sCisJCQkJRkY1RDBDQjMyODMyMjFBRDAwRjMyNzhBIC8qIENvbXBhY3RS
ZWZQdHIuY3BwICovLAogCQkJCUUzMDJCREE5MjQwNEI5MjMwMDg2NTI3NyAvKiBDb21wYWN0UmVm
UHRyVHVwbGUuY3BwICovLAogCQkJCTlCMEMwNTE4MjRGREZCNzAwMEYyRkUzMSAvKiBDb21wYWN0
VW5pcXVlUHRyVHVwbGUuY3BwICovLAogCQkJCTBGMzBDQjVCMUZDRTE3OTIwMDRCNTMyMyAvKiBD
b25jdXJyZW50UHRySGFzaFNldC5jcHAgKi8sCkBAIC01NDQ2LDYgKzU0NTIsOCBAQAogCQkJCTdD
ODNERUEwMUQwQTU5MEMwMEZFQkNGMyAvKiBDaGVja2VkQXJpdGhtZXRpY09wZXJhdGlvbnMuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJOUJCQ0E0REYyNjVBQ0E1QjAwREZFNzIzIC8qIENoZWNrZWRQ
dHIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOUJGMDAxMzMyNjdDNEM1OTAwRENGQjNGIC8qIENo
ZWNrZWRSZWYuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRkYxMEFBRjkyODMxQjFFNjAwQjk4NzVC
IC8qIENvbXBhY3RQdHIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRkY1RDBDQjQyODMyMjFBRDAw
RjMyNzhBIC8qIENvbXBhY3RSZWZQdHIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTMwMkJEQUEy
NDA0QjkyNDAwODY1Mjc3IC8qIENvbXBhY3RSZWZQdHJUdXBsZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk5QjBDMDUxOTI0RkRGQjdEMDBGMkZFMzEgLyogQ29tcGFjdFVuaXF1ZVB0clR1cGxlLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGMzBDQjVDMUZDRTE3OTYwMDRCNTMyMyAvKiBDb25jdXJy
ZW50UHRySGFzaFNldC5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL0NvbXBhY3RQdHIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvQ29tcGFjdFB0ci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDliZjJkMjg4ZjIyZGNiMjhkZWI2
NzZmNjQzMmFlY2ZjZGRkOTg2ZgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL0NvbXBhY3RQdHIuY3BwCkBAIC0wLDAgKzEsMTg3IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiUmVmTG9nZ2VyLmgiCisjaW5jbHVk
ZSAiVXRpbGl0aWVzLmgiCisjaW5jbHVkZSA8d3RmL0NvbXBhY3RQdHIuaD4KKyNpbmNsdWRlIDx3
dGYvTWFpblRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKyNpbmNsdWRl
IDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+
CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworVEVTVChXVEZfQ29tcGFjdFB0ciwgQmFz
aWMpCit7CisgICAgRGVyaXZlZFJlZkxvZ2dlciBhKCJhIik7CisKKyAgICBDb21wYWN0UHRyPFJl
ZkxvZ2dlcj4gZW1wdHk7CisgICAgRVhQRUNUX0VRKG51bGxwdHIsIGVtcHR5LmdldCgpKTsKKwor
ICAgIHsKKyAgICAgICAgQ29tcGFjdFB0cjxSZWZMb2dnZXI+IHB0cigmYSk7CisgICAgICAgIEVY
UEVDVF9FUSgmYSwgcHRyLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCAmKnB0cik7Cisg
ICAgICAgIEVYUEVDVF9FUSgmYS5uYW1lLCAmcHRyLT5uYW1lKTsKKyAgICB9CisKKyAgICB7Cisg
ICAgICAgIENvbXBhY3RQdHI8UmVmTG9nZ2VyPiBwdHIgPSAmYTsKKyAgICAgICAgRVhQRUNUX0VR
KCZhLCBwdHIuZ2V0KCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgQ29tcGFjdFB0cjxSZWZM
b2dnZXI+IHAxID0gJmE7CisgICAgICAgIENvbXBhY3RQdHI8UmVmTG9nZ2VyPiBwMihwMSk7Cisg
ICAgICAgIEVYUEVDVF9FUSgmYSwgcDEuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHAy
LmdldCgpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIENvbXBhY3RQdHI8UmVmTG9nZ2VyPiBw
MSA9ICZhOworICAgICAgICBDb21wYWN0UHRyPFJlZkxvZ2dlcj4gcDIgPSBwMTsKKyAgICAgICAg
RVhQRUNUX0VRKCZhLCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcDIuZ2V0KCkp
OworICAgIH0KKworICAgIHsKKyAgICAgICAgQ29tcGFjdFB0cjxSZWZMb2dnZXI+IHAxID0gJmE7
CisgICAgICAgIENvbXBhY3RQdHI8UmVmTG9nZ2VyPiBwMiA9IFdURk1vdmUocDEpOworICAgICAg
ICBFWFBFQ1RfRVEoJmEsIHAxLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwMi5nZXQo
KSk7CisgICAgfQorCisgICAgeworICAgICAgICBDb21wYWN0UHRyPFJlZkxvZ2dlcj4gcDEgPSAm
YTsKKyAgICAgICAgQ29tcGFjdFB0cjxSZWZMb2dnZXI+IHAyKFdURk1vdmUocDEpKTsKKyAgICAg
ICAgRVhQRUNUX0VRKCZhLCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcDIuZ2V0
KCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgQ29tcGFjdFB0cjxEZXJpdmVkUmVmTG9nZ2Vy
PiBwMSA9ICZhOworICAgICAgICBDb21wYWN0UHRyPFJlZkxvZ2dlcj4gcDIgPSBwMTsKKyAgICAg
ICAgRVhQRUNUX0VRKCZhLCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcDIuZ2V0
KCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgQ29tcGFjdFB0cjxEZXJpdmVkUmVmTG9nZ2Vy
PiBwMSA9ICZhOworICAgICAgICBDb21wYWN0UHRyPFJlZkxvZ2dlcj4gcDIgPSBXVEZNb3ZlKHAx
KTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUSgm
YSwgcDIuZ2V0KCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgQ29tcGFjdFB0cjxSZWZMb2dn
ZXI+IHB0cigmYSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcHRyLmdldCgpKTsKKyAgICAgICAg
cHRyID0gbnVsbHB0cjsKKyAgICAgICAgRVhQRUNUX0VRKG51bGxwdHIsIHB0ci5nZXQoKSk7Cisg
ICAgfQorCisgICAgeworICAgICAgICBDb21wYWN0UHRyPFJlZkxvZ2dlcj4gcHRyKG51bGxwdHIp
OworICAgICAgICBFWFBFQ1RfRVEobnVsbHB0ciwgcHRyLmdldCgpKTsKKyAgICB9CisKKyAgICB7
CisgICAgICAgIENvbXBhY3RQdHI8UmVmTG9nZ2VyPiBwdHIgPSBudWxscHRyOworICAgICAgICBF
WFBFQ1RfRVEobnVsbHB0ciwgcHRyLmdldCgpKTsKKyAgICB9Cit9CisKK1RFU1QoV1RGX0NvbXBh
Y3RQdHIsIEFzc2lnbm1lbnQpCit7CisgICAgRGVyaXZlZFJlZkxvZ2dlciBhKCJhIik7CisgICAg
UmVmTG9nZ2VyIGIoImIiKTsKKyAgICBEZXJpdmVkUmVmTG9nZ2VyIGMoImMiKTsKKworICAgIHsK
KyAgICAgICAgQ29tcGFjdFB0cjxSZWZMb2dnZXI+IHAxID0gJmE7CisgICAgICAgIENvbXBhY3RQ
dHI8UmVmTG9nZ2VyPiBwMiA9ICZiOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHAxLmdldCgpKTsK
KyAgICAgICAgRVhQRUNUX0VRKCZiLCBwMi5nZXQoKSk7CisgICAgICAgIHAxID0gcDI7CisgICAg
ICAgIEVYUEVDVF9FUSgmYiwgcDEuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEoJmIsIHAyLmdl
dCgpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIENvbXBhY3RQdHI8UmVmTG9nZ2VyPiBwdHIo
JmEpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHB0ci5nZXQoKSk7CisgICAgICAgIHB0ciA9ICZi
OworICAgICAgICBFWFBFQ1RfRVEoJmIsIHB0ci5nZXQoKSk7CisgICAgfQorCisgICAgeworICAg
ICAgICBDb21wYWN0UHRyPFJlZkxvZ2dlcj4gcHRyKCZhKTsKKyAgICAgICAgRVhQRUNUX0VRKCZh
LCBwdHIuZ2V0KCkpOworICAgICAgICBwdHIgPSBudWxscHRyOworICAgICAgICBFWFBFQ1RfRVEo
bnVsbHB0ciwgcHRyLmdldCgpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIENvbXBhY3RQdHI8
UmVmTG9nZ2VyPiBwMSA9ICZhOworICAgICAgICBDb21wYWN0UHRyPFJlZkxvZ2dlcj4gcDIgPSAm
YjsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUSgm
YiwgcDIuZ2V0KCkpOworICAgICAgICBwMSA9IFdURk1vdmUocDIpOworICAgICAgICBFWFBFQ1Rf
RVEoJmIsIHAxLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZiLCBwMi5nZXQoKSk7CisgICAg
fQorCisgICAgeworICAgICAgICBDb21wYWN0UHRyPFJlZkxvZ2dlcj4gcDEgPSAmYTsKKyAgICAg
ICAgQ29tcGFjdFB0cjxEZXJpdmVkUmVmTG9nZ2VyPiBwMiA9ICZjOworICAgICAgICBFWFBFQ1Rf
RVEoJmEsIHAxLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZjLCBwMi5nZXQoKSk7CisgICAg
ICAgIHAxID0gcDI7CisgICAgICAgIEVYUEVDVF9FUSgmYywgcDEuZ2V0KCkpOworICAgICAgICBF
WFBFQ1RfRVEoJmMsIHAyLmdldCgpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIENvbXBhY3RQ
dHI8UmVmTG9nZ2VyPiBwMSA9ICZhOworICAgICAgICBDb21wYWN0UHRyPERlcml2ZWRSZWZMb2dn
ZXI+IHAyID0gJmM7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcDEuZ2V0KCkpOworICAgICAgICBF
WFBFQ1RfRVEoJmMsIHAyLmdldCgpKTsKKyAgICAgICAgcDEgPSBXVEZNb3ZlKHAyKTsKKyAgICAg
ICAgRVhQRUNUX0VRKCZjLCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYywgcDIuZ2V0
KCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgQ29tcGFjdFB0cjxSZWZMb2dnZXI+IHB0cigm
YSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcHRyLmdldCgpKTsKKyAgICAgICAgcHRyID0gJmM7
CisgICAgICAgIEVYUEVDVF9FUSgmYywgcHRyLmdldCgpKTsKKyAgICB9Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFRlc3RXZWJLaXRBUEkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL0NvbXBhY3RSZWZQdHIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
Q29tcGFjdFJlZlB0ci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjIwY2Y4Zjc1ZDlmMTIzMjQ4NWU5Yjk1ZThl
ZGQ2YzJjMjg1ZDk1NQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL0NvbXBhY3RSZWZQdHIuY3BwCkBAIC0wLDAgKzEsNTk4IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEzLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJSZWZMb2dnZXIuaCIKKyNpbmNs
dWRlICJVdGlsaXRpZXMuaCIKKyNpbmNsdWRlIDx3dGYvQ29tcGFjdFJlZlB0ci5oPgorI2luY2x1
ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+Cisj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorI2lu
Y2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRp
bmcuaD4KKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitURVNUKFdURl9Db21wYWN0UmVm
UHRyLCBCYXNpYykKK3sKKyAgICBEZXJpdmVkUmVmTG9nZ2VyIGEoImEiKTsKKworICAgIENvbXBh
Y3RSZWZQdHI8UmVmTG9nZ2VyPiBlbXB0eTsKKyAgICBFWFBFQ1RfRVEobnVsbHB0ciwgZW1wdHku
Z2V0KCkpOworCisgICAgeworICAgICAgICBDb21wYWN0UmVmUHRyPFJlZkxvZ2dlcj4gcHRyKCZh
KTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwdHIuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEo
JmEsICYqcHRyKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLm5hbWUsICZwdHItPm5hbWUpOworICAg
IH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19z
dHIoKSk7CisKKyAgICB7CisgICAgICAgIENvbXBhY3RSZWZQdHI8UmVmTG9nZ2VyPiBwdHIgPSAm
YTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwdHIuZ2V0KCkpOworICAgIH0KKyAgICBFWFBFQ1Rf
U1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7
CisgICAgICAgIENvbXBhY3RSZWZQdHI8UmVmTG9nZ2VyPiBwMSA9ICZhOworICAgICAgICBDb21w
YWN0UmVmUHRyPFJlZkxvZ2dlcj4gcDIocDEpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHAxLmdl
dCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwMi5nZXQoKSk7CisgICAgfQorICAgIEVYUEVD
VF9TVFJFUSgicmVmKGEpIHJlZihhKSBkZXJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCku
Y19zdHIoKSk7CisKKyAgICB7CisgICAgICAgIENvbXBhY3RSZWZQdHI8UmVmTG9nZ2VyPiBwMSA9
ICZhOworICAgICAgICBDb21wYWN0UmVmUHRyPFJlZkxvZ2dlcj4gcDIgPSBwMTsKKyAgICAgICAg
RVhQRUNUX0VRKCZhLCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcDIuZ2V0KCkp
OworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSByZWYoYSkgZGVyZWYoYSkgZGVyZWYo
YSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAgeworICAgICAgICBDb21wYWN0UmVm
UHRyPFJlZkxvZ2dlcj4gcDEgPSAmYTsKKyAgICAgICAgQ29tcGFjdFJlZlB0cjxSZWZMb2dnZXI+
IHAyID0gV1RGTW92ZShwMSk7CisgICAgICAgIEVYUEVDVF9FUShudWxscHRyLCBwMS5nZXQoKSk7
CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcDIuZ2V0KCkpOworICAgIH0KKyAgICBFWFBFQ1RfU1RS
RVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7Cisg
ICAgICAgIENvbXBhY3RSZWZQdHI8UmVmTG9nZ2VyPiBwMSA9ICZhOworICAgICAgICBDb21wYWN0
UmVmUHRyPFJlZkxvZ2dlcj4gcDIoV1RGTW92ZShwMSkpOworICAgICAgICBFWFBFQ1RfRVEobnVs
bHB0ciwgcDEuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHAyLmdldCgpKTsKKyAgICB9
CisgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3Ry
KCkpOworCisgICAgeworICAgICAgICBDb21wYWN0UmVmUHRyPERlcml2ZWRSZWZMb2dnZXI+IHAx
ID0gJmE7CisgICAgICAgIENvbXBhY3RSZWZQdHI8UmVmTG9nZ2VyPiBwMiA9IHAxOworICAgICAg
ICBFWFBFQ1RfRVEoJmEsIHAxLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwMi5nZXQo
KSk7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHJlZihhKSBkZXJlZihhKSBkZXJl
ZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7CisgICAgICAgIENvbXBhY3RS
ZWZQdHI8RGVyaXZlZFJlZkxvZ2dlcj4gcDEgPSAmYTsKKyAgICAgICAgQ29tcGFjdFJlZlB0cjxS
ZWZMb2dnZXI+IHAyID0gV1RGTW92ZShwMSk7CisgICAgICAgIEVYUEVDVF9FUShudWxscHRyLCBw
MS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcDIuZ2V0KCkpOworICAgIH0KKyAgICBF
WFBFQ1RfU1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisK
KyAgICB7CisgICAgICAgIENvbXBhY3RSZWZQdHI8UmVmTG9nZ2VyPiBwdHIoJmEpOworICAgICAg
ICBFWFBFQ1RfRVEoJmEsIHB0ci5nZXQoKSk7CisgICAgICAgIHB0ciA9IG51bGxwdHI7CisgICAg
ICAgIEVYUEVDVF9FUShudWxscHRyLCBwdHIuZ2V0KCkpOworICAgIH0KKyAgICBFWFBFQ1RfU1RS
RVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7Cit9CisKK1RFU1Qo
V1RGX0NvbXBhY3RSZWZQdHIsIEFzc2lnblBhc3NSZWZUb0NvbXBhY3RSZWZQdHIpCit7CisgICAg
RGVyaXZlZFJlZkxvZ2dlciBhKCJhIik7CisgICAgeworICAgICAgICBSZWY8UmVmTG9nZ2VyPiBw
YXNzUmVmKGEpOworICAgICAgICBDb21wYWN0UmVmUHRyPFJlZkxvZ2dlcj4gcHRyID0gV1RGTW92
ZShwYXNzUmVmKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwdHIuZ2V0KCkpOworICAgIH0KKyAg
ICBFWFBFQ1RfU1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7
Cit9CisKK1RFU1QoV1RGX0NvbXBhY3RSZWZQdHIsIEFkb3B0KQoreworICAgIERlcml2ZWRSZWZM
b2dnZXIgYSgiYSIpOworCisgICAgQ29tcGFjdFJlZlB0cjxSZWZMb2dnZXI+IGVtcHR5OworICAg
IEVYUEVDVF9FUShudWxscHRyLCBlbXB0eS5nZXQoKSk7CisKKyAgICB7CisgICAgICAgIENvbXBh
Y3RSZWZQdHI8UmVmTG9nZ2VyPiBwdHIoYWRvcHRSZWYoJmEpKTsKKyAgICAgICAgRVhQRUNUX0VR
KCZhLCBwdHIuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEoJmEsICYqcHRyKTsKKyAgICAgICAg
RVhQRUNUX0VRKCZhLm5hbWUsICZwdHItPm5hbWUpOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEo
ImRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKworICAgIHsKKyAgICAgICAgQ29t
cGFjdFJlZlB0cjxSZWZMb2dnZXI+IHB0ciA9IGFkb3B0UmVmKCZhKTsKKyAgICAgICAgRVhQRUNU
X0VRKCZhLCBwdHIuZ2V0KCkpOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoImRlcmVmKGEpICIs
IHRha2VMb2dTdHIoKS5jX3N0cigpKTsKK30KKworVEVTVChXVEZfQ29tcGFjdFJlZlB0ciwgQXNz
aWdubWVudCkKK3sKKyAgICBEZXJpdmVkUmVmTG9nZ2VyIGEoImEiKTsKKyAgICBSZWZMb2dnZXIg
YigiYiIpOworICAgIERlcml2ZWRSZWZMb2dnZXIgYygiYyIpOworCisgICAgeworICAgICAgICBD
b21wYWN0UmVmUHRyPFJlZkxvZ2dlcj4gcDEoJmEpOworICAgICAgICBDb21wYWN0UmVmUHRyPFJl
ZkxvZ2dlcj4gcDIoJmIpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHAxLmdldCgpKTsKKyAgICAg
ICAgRVhQRUNUX0VRKCZiLCBwMi5nZXQoKSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAg
ICAgIHAxID0gcDI7CisgICAgICAgIEVYUEVDVF9FUSgmYiwgcDEuZ2V0KCkpOworICAgICAgICBF
WFBFQ1RfRVEoJmIsIHAyLmdldCgpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICB9Cisg
ICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgcmVmKGIpIHwgcmVmKGIpIGRlcmVmKGEpIHwgZGVyZWYo
YikgZGVyZWYoYikgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAgeworICAgICAgICBD
b21wYWN0UmVmUHRyPFJlZkxvZ2dlcj4gcHRyKCZhKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBw
dHIuZ2V0KCkpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAgICAgICBwdHIgPSAmYjsKKyAg
ICAgICAgRVhQRUNUX0VRKCZiLCBwdHIuZ2V0KCkpOworICAgICAgICBsb2coKSA8PCAifCAiOwor
ICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSB8IHJlZihiKSBkZXJlZihhKSB8IGRlcmVm
KGIpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKworICAgIHsKKyAgICAgICAgQ29tcGFjdFJl
ZlB0cjxSZWZMb2dnZXI+IHB0cigmYSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcHRyLmdldCgp
KTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICAgICAgcHRyID0gYWRvcHRSZWYoJmIpOwor
ICAgICAgICBFWFBFQ1RfRVEoJmIsIHB0ci5nZXQoKSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7
CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHwgZGVyZWYoYSkgfCBkZXJlZihiKSAi
LCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7CisgICAgICAgIENvbXBhY3RSZWZQdHI8
UmVmTG9nZ2VyPiBwdHIoJmEpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHB0ci5nZXQoKSk7Cisg
ICAgICAgIHB0ciA9IG51bGxwdHI7CisgICAgICAgIEVYUEVDVF9FUShudWxscHRyLCBwdHIuZ2V0
KCkpOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9n
U3RyKCkuY19zdHIoKSk7CisKKyAgICB7CisgICAgICAgIENvbXBhY3RSZWZQdHI8UmVmTG9nZ2Vy
PiBwMSgmYSk7CisgICAgICAgIENvbXBhY3RSZWZQdHI8UmVmTG9nZ2VyPiBwMigmYik7CisgICAg
ICAgIEVYUEVDVF9FUSgmYSwgcDEuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEoJmIsIHAyLmdl
dCgpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICAgICAgcDEgPSBXVEZNb3ZlKHAyKTsK
KyAgICAgICAgRVhQRUNUX0VRKCZiLCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUShudWxs
cHRyLCBwMi5nZXQoKSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAgfQorICAgIEVYUEVD
VF9TVFJFUSgicmVmKGEpIHJlZihiKSB8IGRlcmVmKGEpIHwgZGVyZWYoYikgIiwgdGFrZUxvZ1N0
cigpLmNfc3RyKCkpOworCisgICAgeworICAgICAgICBDb21wYWN0UmVmUHRyPFJlZkxvZ2dlcj4g
cDEoJmEpOworICAgICAgICBDb21wYWN0UmVmUHRyPERlcml2ZWRSZWZMb2dnZXI+IHAyKCZjKTsK
KyAgICAgICAgRVhQRUNUX0VRKCZhLCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYywg
cDIuZ2V0KCkpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAgICAgICBwMSA9IHAyOworICAg
ICAgICBFWFBFQ1RfRVEoJmMsIHAxLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZjLCBwMi5n
ZXQoKSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgi
cmVmKGEpIHJlZihjKSB8IHJlZihjKSBkZXJlZihhKSB8IGRlcmVmKGMpIGRlcmVmKGMpICIsIHRh
a2VMb2dTdHIoKS5jX3N0cigpKTsKKworICAgIHsKKyAgICAgICAgQ29tcGFjdFJlZlB0cjxSZWZM
b2dnZXI+IHB0cigmYSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcHRyLmdldCgpKTsKKyAgICAg
ICAgbG9nKCkgPDwgInwgIjsKKyAgICAgICAgcHRyID0gJmM7CisgICAgICAgIEVYUEVDVF9FUSgm
YywgcHRyLmdldCgpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICB9CisgICAgRVhQRUNU
X1NUUkVRKCJyZWYoYSkgfCByZWYoYykgZGVyZWYoYSkgfCBkZXJlZihjKSAiLCB0YWtlTG9nU3Ry
KCkuY19zdHIoKSk7CisKKyAgICB7CisgICAgICAgIENvbXBhY3RSZWZQdHI8UmVmTG9nZ2VyPiBw
dHIoJmEpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHB0ci5nZXQoKSk7CisgICAgICAgIGxvZygp
IDw8ICJ8ICI7CisgICAgICAgIHB0ciA9IGFkb3B0UmVmKCZjKTsKKyAgICAgICAgRVhQRUNUX0VR
KCZjLCBwdHIuZ2V0KCkpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAgIH0KKyAgICBFWFBF
Q1RfU1RSRVEoInJlZihhKSB8IGRlcmVmKGEpIHwgZGVyZWYoYykgIiwgdGFrZUxvZ1N0cigpLmNf
c3RyKCkpOworCisgICAgeworICAgICAgICBDb21wYWN0UmVmUHRyPFJlZkxvZ2dlcj4gcDEoJmEp
OworICAgICAgICBDb21wYWN0UmVmUHRyPERlcml2ZWRSZWZMb2dnZXI+IHAyKCZjKTsKKyAgICAg
ICAgRVhQRUNUX0VRKCZhLCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYywgcDIuZ2V0
KCkpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAgICAgICBwMSA9IFdURk1vdmUocDIpOwor
ICAgICAgICBFWFBFQ1RfRVEoJmMsIHAxLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKG51bGxw
dHIsIHAyLmdldCgpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICB9CisgICAgRVhQRUNU
X1NUUkVRKCJyZWYoYSkgcmVmKGMpIHwgZGVyZWYoYSkgfCBkZXJlZihjKSAiLCB0YWtlTG9nU3Ry
KCkuY19zdHIoKSk7CisKKyAgICB7CisgICAgICAgIENvbXBhY3RSZWZQdHI8UmVmTG9nZ2VyPiBw
dHIoJmEpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHB0ci5nZXQoKSk7CisgICAgICAgIGxvZygp
IDw8ICJ8ICI7CisjaWYgQ09NUElMRVIoQ0xBTkcpCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMg
cHVzaAorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XdW5rbm93bi1wcmFnbWFz
IgorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XdW5rbm93bi13YXJuaW5nLW9w
dGlvbiIKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV3NlbGYtYXNzaWduLW92
ZXJsb2FkZWQiCisjZW5kaWYKKyAgICAgICAgcHRyID0gcHRyOworI2lmIENPTVBJTEVSKENMQU5H
KQorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAorI2VuZGlmCisgICAgICAgIEVYUEVDVF9F
USgmYSwgcHRyLmdldCgpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICB9CisgICAgRVhQ
RUNUX1NUUkVRKCJyZWYoYSkgfCByZWYoYSkgZGVyZWYoYSkgfCBkZXJlZihhKSAiLCB0YWtlTG9n
U3RyKCkuY19zdHIoKSk7CisKKyAgICB7CisgICAgICAgIENvbXBhY3RSZWZQdHI8UmVmTG9nZ2Vy
PiBwdHIoJmEpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHB0ci5nZXQoKSk7CisjaWYgQ09NUElM
RVIoQ0xBTkcpCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAorI3ByYWdtYSBjbGFuZyBk
aWFnbm9zdGljIGlnbm9yZWQgIi1XdW5rbm93bi1wcmFnbWFzIgorI3ByYWdtYSBjbGFuZyBkaWFn
bm9zdGljIGlnbm9yZWQgIi1Xc2VsZi1tb3ZlIgorI2VuZGlmCisgICAgICAgIHB0ciA9IFdURk1v
dmUocHRyKTsKKyNpZiBDT01QSUxFUihDTEFORykKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBw
b3AKKyNlbmRpZgorICAgICAgICBFWFBFQ1RfRVEoJmEsIHB0ci5nZXQoKSk7CisgICAgfQorICAg
IEVYUEVDVF9TVFJFUSgicmVmKGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsK
K30KKworVEVTVChXVEZfQ29tcGFjdFJlZlB0ciwgU3dhcCkKK3sKKyAgICBSZWZMb2dnZXIgYSgi
YSIpOworICAgIFJlZkxvZ2dlciBiKCJiIik7CisKKyAgICB7CisgICAgICAgIENvbXBhY3RSZWZQ
dHI8UmVmTG9nZ2VyPiBwMSgmYSk7CisgICAgICAgIENvbXBhY3RSZWZQdHI8UmVmTG9nZ2VyPiBw
MigmYik7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcDEu
Z2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEoJmIsIHAyLmdldCgpKTsKKyAgICAgICAgcDEuc3dh
cChwMik7CisgICAgICAgIEVYUEVDVF9FUSgmYiwgcDEuZ2V0KCkpOworICAgICAgICBFWFBFQ1Rf
RVEoJmEsIHAyLmdldCgpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICB9CisgICAgRVhQ
RUNUX1NUUkVRKCJyZWYoYSkgcmVmKGIpIHwgfCBkZXJlZihhKSBkZXJlZihiKSAiLCB0YWtlTG9n
U3RyKCkuY19zdHIoKSk7CisKKyAgICB7CisgICAgICAgIENvbXBhY3RSZWZQdHI8UmVmTG9nZ2Vy
PiBwMSgmYSk7CisgICAgICAgIENvbXBhY3RSZWZQdHI8UmVmTG9nZ2VyPiBwMigmYik7CisgICAg
ICAgIGxvZygpIDw8ICJ8ICI7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcDEuZ2V0KCkpOworICAg
ICAgICBFWFBFQ1RfRVEoJmIsIHAyLmdldCgpKTsKKyAgICAgICAgc3RkOjpzd2FwKHAxLCBwMik7
CisgICAgICAgIEVYUEVDVF9FUSgmYiwgcDEuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEoJmEs
IHAyLmdldCgpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICB9CisgICAgRVhQRUNUX1NU
UkVRKCJyZWYoYSkgcmVmKGIpIHwgfCBkZXJlZihhKSBkZXJlZihiKSAiLCB0YWtlTG9nU3RyKCku
Y19zdHIoKSk7Cit9CisKK1RFU1QoV1RGX0NvbXBhY3RSZWZQdHIsIFJlbGVhc2VOb25OdWxsKQor
eworICAgIFJlZkxvZ2dlciBhKCJhIik7CisKKyAgICB7CisgICAgICAgIENvbXBhY3RSZWZQdHI8
UmVmTG9nZ2VyPiByZWZQdHIgPSAmYTsKKyAgICAgICAgQ29tcGFjdFJlZlB0cjxSZWZMb2dnZXI+
IHJlZiA9IHJlZlB0ci5yZWxlYXNlTm9uTnVsbCgpOworICAgIH0KKworICAgIEVYUEVDVF9TVFJF
USgicmVmKGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKK30KKworVEVTVChX
VEZfQ29tcGFjdFJlZlB0ciwgUmVsZWFzZSkKK3sKKyAgICBEZXJpdmVkUmVmTG9nZ2VyIGEoImEi
KTsKKyAgICBSZWZMb2dnZXIgYigiYiIpOworICAgIERlcml2ZWRSZWZMb2dnZXIgYygiYyIpOwor
CisgICAgeworICAgICAgICBDb21wYWN0UmVmUHRyPFJlZkxvZ2dlcj4gcDEgPSAmYTsKKyAgICAg
ICAgQ29tcGFjdFJlZlB0cjxSZWZMb2dnZXI+IHAyID0gV1RGTW92ZShwMSk7CisgICAgICAgIEVY
UEVDVF9FUShudWxscHRyLCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcDIuZ2V0
KCkpOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9n
U3RyKCkuY19zdHIoKSk7CisKKyAgICB7CisgICAgICAgIENvbXBhY3RSZWZQdHI8UmVmTG9nZ2Vy
PiBwMSA9ICZhOworICAgICAgICBDb21wYWN0UmVmUHRyPFJlZkxvZ2dlcj4gcDIoV1RGTW92ZShw
MSkpOworICAgICAgICBFWFBFQ1RfRVEobnVsbHB0ciwgcDEuZ2V0KCkpOworICAgICAgICBFWFBF
Q1RfRVEoJmEsIHAyLmdldCgpKTsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgZGVy
ZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAgeworICAgICAgICBDb21wYWN0
UmVmUHRyPERlcml2ZWRSZWZMb2dnZXI+IHAxID0gJmE7CisgICAgICAgIENvbXBhY3RSZWZQdHI8
UmVmTG9nZ2VyPiBwMiA9IFdURk1vdmUocDEpOworICAgICAgICBFWFBFQ1RfRVEobnVsbHB0ciwg
cDEuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHAyLmdldCgpKTsKKyAgICB9CisgICAg
RVhQRUNUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwor
CisgICAgeworICAgICAgICBDb21wYWN0UmVmUHRyPFJlZkxvZ2dlcj4gcDEoJmEpOworICAgICAg
ICBDb21wYWN0UmVmUHRyPFJlZkxvZ2dlcj4gcDIoJmIpOworICAgICAgICBFWFBFQ1RfRVEoJmEs
IHAxLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZiLCBwMi5nZXQoKSk7CisgICAgICAgIGxv
ZygpIDw8ICJ8ICI7CisgICAgICAgIHAxID0gV1RGTW92ZShwMik7CisgICAgICAgIEVYUEVDVF9F
USgmYiwgcDEuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEobnVsbHB0ciwgcDIuZ2V0KCkpOwor
ICAgICAgICBsb2coKSA8PCAifCAiOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSBy
ZWYoYikgfCBkZXJlZihhKSB8IGRlcmVmKGIpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKwor
ICAgIHsKKyAgICAgICAgQ29tcGFjdFJlZlB0cjxSZWZMb2dnZXI+IHAxKCZhKTsKKyAgICAgICAg
Q29tcGFjdFJlZlB0cjxEZXJpdmVkUmVmTG9nZ2VyPiBwMigmYyk7CisgICAgICAgIEVYUEVDVF9F
USgmYSwgcDEuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEoJmMsIHAyLmdldCgpKTsKKyAgICAg
ICAgbG9nKCkgPDwgInwgIjsKKyAgICAgICAgcDEgPSBXVEZNb3ZlKHAyKTsKKyAgICAgICAgRVhQ
RUNUX0VRKCZjLCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUShudWxscHRyLCBwMi5nZXQo
KSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgicmVm
KGEpIHJlZihjKSB8IGRlcmVmKGEpIHwgZGVyZWYoYykgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkp
OworfQorCitzdGF0aWMgQ29tcGFjdFJlZlB0cjxSZWZMb2dnZXI+IGYxKFJlZkxvZ2dlciYgbG9n
Z2VyKQoreworICAgIHJldHVybiBDb21wYWN0UmVmUHRyPFJlZkxvZ2dlcj4oJmxvZ2dlcik7Cit9
CisKK1RFU1QoV1RGX0NvbXBhY3RSZWZQdHIsIFJldHVyblZhbHVlKQoreworICAgIERlcml2ZWRS
ZWZMb2dnZXIgYSgiYSIpOworCisgICAgeworICAgICAgICBmMShhKTsKKyAgICB9CisgICAgRVhQ
RUNUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisg
ICAgeworICAgICAgICBhdXRvIHB0ciA9IGYxKGEpOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEo
InJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7Cit9CisKK3N0cnVjdCBD
b25zdFJlZkNvdW50ZWQgOiBSZWZDb3VudGVkPENvbnN0UmVmQ291bnRlZD4geworICAgIHN0YXRp
YyBSZWY8Q29uc3RSZWZDb3VudGVkPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IENv
bnN0UmVmQ291bnRlZCk7IH0KK307CisKK3N0YXRpYyBjb25zdCBDb25zdFJlZkNvdW50ZWQmIHJl
dHVybkNvbnN0UmVmQ291bnRlZFJlZigpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPENv
bnN0UmVmQ291bnRlZD4gaW5zdGFuY2U7CisgICAgcmV0dXJuIGluc3RhbmNlLmdldCgpOworfQor
c3RhdGljIENvbnN0UmVmQ291bnRlZCYgcmV0dXJuUmVmQ291bnRlZFJlZigpCit7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPENvbnN0UmVmQ291bnRlZD4gaW5zdGFuY2U7CisgICAgcmV0dXJu
IGluc3RhbmNlLmdldCgpOworfQorCitURVNUKFdURl9Db21wYWN0UmVmUHRyLCBDb25zdCkKK3sK
KyAgICAvLyBUaGlzIHRlc3QgcGFzc2VzIGlmIGl0IGNvbXBpbGVzIHdpdGhvdXQgYW4gZXJyb3Iu
CisgICAgYXV0byBhID0gQ29uc3RSZWZDb3VudGVkOjpjcmVhdGUoKTsKKyAgICBSZWY8Y29uc3Qg
Q29uc3RSZWZDb3VudGVkPiBiID0gV1RGTW92ZShhKTsKKyAgICBDb21wYWN0UmVmUHRyPGNvbnN0
IENvbnN0UmVmQ291bnRlZD4gYyA9IGIucHRyKCk7CisgICAgUmVmPGNvbnN0IENvbnN0UmVmQ291
bnRlZD4gZCA9IHJldHVybkNvbnN0UmVmQ291bnRlZFJlZigpOworICAgIENvbXBhY3RSZWZQdHI8
Y29uc3QgQ29uc3RSZWZDb3VudGVkPiBlID0gJnJldHVybkNvbnN0UmVmQ291bnRlZFJlZigpOwor
ICAgIENvbXBhY3RSZWZQdHI8Q29uc3RSZWZDb3VudGVkPiBmID0gQ29uc3RSZWZDb3VudGVkOjpj
cmVhdGUoKTsKKyAgICBDb21wYWN0UmVmUHRyPGNvbnN0IENvbnN0UmVmQ291bnRlZD4gZyA9IGY7
CisgICAgQ29tcGFjdFJlZlB0cjxjb25zdCBDb25zdFJlZkNvdW50ZWQ+IGgoZik7CisgICAgUmVm
PGNvbnN0IENvbnN0UmVmQ291bnRlZD4gaShyZXR1cm5SZWZDb3VudGVkUmVmKCkpOworfQorCitz
dHJ1Y3QgQ29tcGFjdFJlZlB0ckNoZWNraW5nUmVmTG9nZ2VyIDogUmVmTG9nZ2VyIHsKKyAgICBD
b21wYWN0UmVmUHRyQ2hlY2tpbmdSZWZMb2dnZXIoY29uc3QgY2hhciogbmFtZSk7CisgICAgdm9p
ZCByZWYoKTsKKyAgICB2b2lkIGRlcmVmKCk7CisgICAgY29uc3QgQ29tcGFjdFJlZlB0cjxDb21w
YWN0UmVmUHRyQ2hlY2tpbmdSZWZMb2dnZXI+KiBzbG90VG9DaGVjayB7IG51bGxwdHIgfTsKK307
CisKK0NvbXBhY3RSZWZQdHJDaGVja2luZ1JlZkxvZ2dlcjo6Q29tcGFjdFJlZlB0ckNoZWNraW5n
UmVmTG9nZ2VyKGNvbnN0IGNoYXIqIG5hbWUpCisgICAgOiBSZWZMb2dnZXIgeyBuYW1lIH0KK3sK
K30KKworc3RhdGljIGNvbnN0IGNoYXIqIGxvZ2dlck5hbWUoY29uc3QgQ29tcGFjdFJlZlB0cjxD
b21wYWN0UmVmUHRyQ2hlY2tpbmdSZWZMb2dnZXI+JiBwb2ludGVyKQoreworICAgIHJldHVybiBw
b2ludGVyID8gJnBvaW50ZXItPm5hbWUgOiAibnVsbCI7Cit9CisKK3ZvaWQgQ29tcGFjdFJlZlB0
ckNoZWNraW5nUmVmTG9nZ2VyOjpyZWYoKQoreworICAgIGlmIChzbG90VG9DaGVjaykKKyAgICAg
ICAgbG9nKCkgPDwgInNsb3Q9IiA8PCBsb2dnZXJOYW1lKCpzbG90VG9DaGVjaykgPDwgIiAiOwor
ICAgIFJlZkxvZ2dlcjo6cmVmKCk7Cit9CisKK3ZvaWQgQ29tcGFjdFJlZlB0ckNoZWNraW5nUmVm
TG9nZ2VyOjpkZXJlZigpCit7CisgICAgaWYgKHNsb3RUb0NoZWNrKQorICAgICAgICBsb2coKSA8
PCAic2xvdD0iIDw8IGxvZ2dlck5hbWUoKnNsb3RUb0NoZWNrKSA8PCAiICI7CisgICAgUmVmTG9n
Z2VyOjpkZXJlZigpOworfQorCitURVNUKFdURl9Db21wYWN0UmVmUHRyLCBBc3NpZ25CZWZvcmVE
ZXJlZikKK3sKKyAgICBDb21wYWN0UmVmUHRyQ2hlY2tpbmdSZWZMb2dnZXIgYSgiYSIpOworICAg
IENvbXBhY3RSZWZQdHJDaGVja2luZ1JlZkxvZ2dlciBiKCJiIik7CisKKyAgICB7CisgICAgICAg
IENvbXBhY3RSZWZQdHI8Q29tcGFjdFJlZlB0ckNoZWNraW5nUmVmTG9nZ2VyPiBwMSgmYSk7Cisg
ICAgICAgIENvbXBhY3RSZWZQdHI8Q29tcGFjdFJlZlB0ckNoZWNraW5nUmVmTG9nZ2VyPiBwMigm
Yik7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcDEuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEo
JmIsIHAyLmdldCgpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICAgICAgYS5zbG90VG9D
aGVjayA9ICZwMTsKKyAgICAgICAgYi5zbG90VG9DaGVjayA9ICZwMTsKKyAgICAgICAgcDEgPSBw
MjsKKyAgICAgICAgYS5zbG90VG9DaGVjayA9IG51bGxwdHI7CisgICAgICAgIGIuc2xvdFRvQ2hl
Y2sgPSBudWxscHRyOworICAgICAgICBFWFBFQ1RfRVEoJmIsIHAxLmdldCgpKTsKKyAgICAgICAg
RVhQRUNUX0VRKCZiLCBwMi5nZXQoKSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAgfQor
ICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHJlZihiKSB8IHNsb3Q9YSByZWYoYikgc2xvdD1iIGRl
cmVmKGEpIHwgZGVyZWYoYikgZGVyZWYoYikgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisg
ICAgeworICAgICAgICBDb21wYWN0UmVmUHRyPENvbXBhY3RSZWZQdHJDaGVja2luZ1JlZkxvZ2dl
cj4gcHRyKCZhKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwdHIuZ2V0KCkpOworICAgICAgICBs
b2coKSA8PCAifCAiOworICAgICAgICBhLnNsb3RUb0NoZWNrID0gJnB0cjsKKyAgICAgICAgYi5z
bG90VG9DaGVjayA9ICZwdHI7CisgICAgICAgIHB0ciA9ICZiOworICAgICAgICBhLnNsb3RUb0No
ZWNrID0gbnVsbHB0cjsKKyAgICAgICAgYi5zbG90VG9DaGVjayA9IG51bGxwdHI7CisgICAgICAg
IEVYUEVDVF9FUSgmYiwgcHRyLmdldCgpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICB9
CisgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgfCBzbG90PWEgcmVmKGIpIHNsb3Q9YiBkZXJlZihh
KSB8IGRlcmVmKGIpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKworICAgIHsKKyAgICAgICAg
Q29tcGFjdFJlZlB0cjxDb21wYWN0UmVmUHRyQ2hlY2tpbmdSZWZMb2dnZXI+IHB0cigmYSk7Cisg
ICAgICAgIEVYUEVDVF9FUSgmYSwgcHRyLmdldCgpKTsKKyAgICAgICAgYS5zbG90VG9DaGVjayA9
ICZwdHI7CisgICAgICAgIHB0ciA9IG51bGxwdHI7CisgICAgICAgIGEuc2xvdFRvQ2hlY2sgPSBu
dWxscHRyOworICAgICAgICBFWFBFQ1RfRVEobnVsbHB0ciwgcHRyLmdldCgpKTsKKyAgICB9Cisg
ICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgc2xvdD1udWxsIGRlcmVmKGEpICIsIHRha2VMb2dTdHIo
KS5jX3N0cigpKTsKKworICAgIHsKKyAgICAgICAgQ29tcGFjdFJlZlB0cjxDb21wYWN0UmVmUHRy
Q2hlY2tpbmdSZWZMb2dnZXI+IHAxKCZhKTsKKyAgICAgICAgQ29tcGFjdFJlZlB0cjxDb21wYWN0
UmVmUHRyQ2hlY2tpbmdSZWZMb2dnZXI+IHAyKCZiKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBw
MS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYiwgcDIuZ2V0KCkpOworICAgICAgICBsb2co
KSA8PCAifCAiOworICAgICAgICBhLnNsb3RUb0NoZWNrID0gJnAxOworICAgICAgICBiLnNsb3RU
b0NoZWNrID0gJnAxOworICAgICAgICBwMSA9IFdURk1vdmUocDIpOworICAgICAgICBhLnNsb3RU
b0NoZWNrID0gbnVsbHB0cjsKKyAgICAgICAgYi5zbG90VG9DaGVjayA9IG51bGxwdHI7CisgICAg
ICAgIEVYUEVDVF9FUSgmYiwgcDEuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEobnVsbHB0ciwg
cDIuZ2V0KCkpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAgIH0KKyAgICBFWFBFQ1RfU1RS
RVEoInJlZihhKSByZWYoYikgfCBzbG90PWIgZGVyZWYoYSkgfCBkZXJlZihiKSAiLCB0YWtlTG9n
U3RyKCkuY19zdHIoKSk7Cit9CisKK1RFU1QoV1RGX0NvbXBhY3RSZWZQdHIsIFJlbGVhc2VOb25O
dWxsQmVmb3JlRGVyZWYpCit7CisgICAgQ29tcGFjdFJlZlB0ckNoZWNraW5nUmVmTG9nZ2VyIGEo
ImEiKTsKKworICAgIHsKKyAgICAgICAgQ29tcGFjdFJlZlB0cjxDb21wYWN0UmVmUHRyQ2hlY2tp
bmdSZWZMb2dnZXI+IHJlZlB0ciA9ICZhOworICAgICAgICBhLnNsb3RUb0NoZWNrID0gJnJlZlB0
cjsKKyAgICAgICAgcmVmUHRyLnJlbGVhc2VOb25OdWxsKCk7CisgICAgICAgIGEuc2xvdFRvQ2hl
Y2sgPSBudWxscHRyOworICAgIH0KKworICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHNsb3Q9bnVs
bCBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7Cit9CisKKy8vIEZJWE1FOiBFbmFi
bGUgdGhlc2UgdGVzdHMgb25jZSBXaW4gcGxhdGZvcm0gc3VwcG9ydHMgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuCisjaWYgIVBMQVRGT1JNKFdJTikKKworc3RhdGljIGJvb2wgZG9uZTsKK3N0YXRp
YyBib29sIGlzRGVzdHJveWVkSW5NYWluVGhyZWFkOworc3RydWN0IFRocmVhZFNhZmVSZWZDb3Vu
dGVkT2JqZWN0IDogVGhyZWFkU2FmZVJlZkNvdW50ZWQ8VGhyZWFkU2FmZVJlZkNvdW50ZWRPYmpl
Y3Q+IHsKKyAgICBzdGF0aWMgUmVmPFRocmVhZFNhZmVSZWZDb3VudGVkT2JqZWN0PiBjcmVhdGUo
KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFRocmVhZFNhZmVSZWZDb3VudGVkT2JqZWN0KTsgfQor
CisgICAgflRocmVhZFNhZmVSZWZDb3VudGVkT2JqZWN0KCkKKyAgICB7CisgICAgICAgIGlzRGVz
dHJveWVkSW5NYWluVGhyZWFkID0gaXNNYWluVGhyZWFkKCk7CisgICAgICAgIGRvbmUgPSB0cnVl
OworICAgIH0KK307CisKK3N0cnVjdCBNYWluVGhyZWFkU2FmZVJlZkNvdW50ZWRPYmplY3QgOiBU
aHJlYWRTYWZlUmVmQ291bnRlZDxNYWluVGhyZWFkU2FmZVJlZkNvdW50ZWRPYmplY3QsIFdURjo6
RGVzdHJ1Y3Rpb25UaHJlYWQ6Ok1haW4+IHsKKyAgICBzdGF0aWMgUmVmPE1haW5UaHJlYWRTYWZl
UmVmQ291bnRlZE9iamVjdD4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBNYWluVGhy
ZWFkU2FmZVJlZkNvdW50ZWRPYmplY3QpOyB9CisKKyAgICB+TWFpblRocmVhZFNhZmVSZWZDb3Vu
dGVkT2JqZWN0KCkKKyAgICB7CisgICAgICAgIGlzRGVzdHJveWVkSW5NYWluVGhyZWFkID0gaXNN
YWluVGhyZWFkKCk7CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH0KK307CisKK1RFU1QoV1RG
X0NvbXBhY3RSZWZQdHIsIFJlbGVhc2VJbk5vbk1haW5UaHJlYWQpCit7CisgICAgZG9uZSA9IGZh
bHNlOworICAgIFRocmVhZDo6Y3JlYXRlKCIiLCBbb2JqZWN0ID0gVGhyZWFkU2FmZVJlZkNvdW50
ZWRPYmplY3Q6OmNyZWF0ZSgpXSB7IH0pOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigm
ZG9uZSk7CisKKyAgICBFWFBFQ1RfRkFMU0UoaXNEZXN0cm95ZWRJbk1haW5UaHJlYWQpOworfQor
CitURVNUKFdURl9Db21wYWN0UmVmUHRyLCBSZWxlYXNlSW5Ob25NYWluVGhyZWFkRGVzdHJveUlu
TWFpblRocmVhZCkKK3sKKyAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkKCk7CisgICAgZG9u
ZSA9IGZhbHNlOworICAgIFRocmVhZDo6Y3JlYXRlKCIiLCBbb2JqZWN0ID0gTWFpblRocmVhZFNh
ZmVSZWZDb3VudGVkT2JqZWN0OjpjcmVhdGUoKV0geyB9KTsKKyAgICBUZXN0V2ViS2l0QVBJOjpV
dGlsOjpydW4oJmRvbmUpOworCisgICAgRVhQRUNUX1RSVUUoaXNEZXN0cm95ZWRJbk1haW5UaHJl
YWQpOworfQorCisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>459469</attachid>
            <date>2022-05-16 17:51:58 -0700</date>
            <delta_ts>2022-05-16 18:04:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-240407-20220516175157.patch</filename>
            <type>text/plain</type>
            <size>77513</size>
            <attacher name="Yijia Huang">yijia_huang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzODY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
MGFmMzcwNWZjNTU3ZDczMjNmNGJmMGVjZjA0ZTIzYzI4NjlkMWM1Li5hMWMwZjQwMWFlZDhlOWU2
ODgzMjRmZWQ3YjkzMjlmMGQwODQ3NTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MiBAQAorMjAyMi0wNS0xNiAgWWlqaWEgSHVhbmcgIDx5aWppYV9odWFuZ0BhcHBsZS5j
b20+CisKKyAgICAgICAgUkVHUkVTU0lPTiAocjI4NTk1NSk6IDIlIHJlZ3Jlc3Npb24gb24gUkFN
aWZpY2F0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yNDA0MDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAg
ICAgICAgKiBmdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oOgorICAgICAgICAqIGZ0bC9G
VExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0Iz
Ojpjb21waWxlQ29tcGFyZVN0cmljdEVxKToKKyAgICAgICAgKiBoZWFwL0NvbXBhY3RCbG9vbUZp
bHRlci5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6Q29tcGFjdEJsb29tRmlsdGVyOjpDb21wYWN0
Qmxvb21GaWx0ZXIpOgorICAgICAgICAoSlNDOjpDb21wYWN0Qmxvb21GaWx0ZXI6OmFkZCk6Cisg
ICAgICAgIChKU0M6OkNvbXBhY3RCbG9vbUZpbHRlcjo6cnVsZU91dCBjb25zdCk6CisgICAgICAg
IChKU0M6OkNvbXBhY3RCbG9vbUZpbHRlcjo6cmVzZXQpOgorICAgICAgICAoSlNDOjpDb21wYWN0
Qmxvb21GaWx0ZXI6OmJpdHMgY29uc3QpOgorICAgICAgICAqIGppdC9Bc3NlbWJseUhlbHBlcnMu
Y3BwOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmVtaXRTdG9yZVN0cnVjdHVyZVdp
dGhUeXBlSW5mbyk6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6ZW1pdEVuY29kZVN0
cnVjdHVyZSk6CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5oOgorICAgICAgICAoSlND
OjpBc3NlbWJseUhlbHBlcnM6OmVtaXRTdG9yZVN0cnVjdHVyZVdpdGhUeXBlSW5mbyk6CisgICAg
ICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6bG9hZENvbXBhY3RQdHIpOgorICAgICAgICAoSlND
OjpBc3NlbWJseUhlbHBlcnM6OmJyYW5jaENvbXBhY3RQdHIpOgorICAgICAgICAqIGppdC9KSVRQ
cm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6Z2VuZXJhdGVPcEdldEZyb21T
Y29wZVRodW5rKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF90b19zY29wZSk6Cisg
ICAgICAgICogcnVudGltZS9DbGFzc0luZm8uaDoKKyAgICAgICAgKEpTQzo6Q2xhc3NJbmZvOjpv
ZmZzZXRPZlBhcmVudENsYXNzKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Q2xhc3NJbmZvOjpp
c1N1YkNsYXNzT2YgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJl
LmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1
bnRpbWUvU3RydWN0dXJlLmg6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6aWQgY29uc3QpOgor
ICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmlkQmxvYiBjb25zdCk6CisgICAgICAgIChKU0M6OlN0
cnVjdHVyZTo6Y2xhc3NJbmZvRm9yQ2VsbHMgY29uc3QpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1
cmU6OnN0cnVjdHVyZUlET2Zmc2V0KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL1N0cnVj
dHVyZUlEQmxvYi5oOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVJREJsb2I6OlN0cnVjdHVyZUlE
QmxvYik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZUlEQmxvYjo6b3BlcmF0b3I9KToKKyAgICAg
ICAgKEpTQzo6U3RydWN0dXJlSURCbG9iOjpibG9iRXhjbHVkaW5nU3RydWN0dXJlSUQgY29uc3Qp
OgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVJREJsb2I6OmJsb2IgY29uc3QpOgorICAgICAgICAo
SlNDOjpTdHJ1Y3R1cmVJREJsb2I6OnN0cnVjdHVyZUlEIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6U3RydWN0dXJlSURCbG9iOjpzdHJ1Y3R1cmVJRE9mZnNldCk6IERlbGV0ZWQuCisg
ICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6
V2ViQXNzZW1ibHlGdW5jdGlvbjo6anNDYWxsRW50cnlwb2ludFNsb3cpOgorCiAyMDIyLTA1LTA1
ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCwgcGFydGlhbCByZXZlcnQgb2YgcjI5MzgxMyBiZWNhdXNlIG9mIHByb3Bvc2FsJ3MgaXNzdWUu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9n
CmluZGV4IDZlMTk4NDZlMGUxOTE2MTAzM2FkYTVkMzAwZDgxMTk0NmM4Yzk5NTAuLjdiNWJhMjQ1
YWU2ZmVlMzIxMTNlNTI1YjYyMzcyNDVmZDYyZGYwNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIw
MjItMDUtMTYgIFlpamlhIEh1YW5nICA8eWlqaWFfaHVhbmdAYXBwbGUuY29tPgorCisgICAgICAg
IFJFR1JFU1NJT04gKHIyODU5NTUpOiAyJSByZWdyZXNzaW9uIG9uIFJBTWlmaWNhdGlvbgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQwNDA3CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXVEYueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3dGYvQ01ha2VMaXN0cy50eHQ6CisgICAg
ICAgICogd3RmL0NvbXBhY3RQdHIuaDogQWRkZWQuCisgICAgICAgIChXVEY6OkNvbXBhY3RQdHI6
OkNvbXBhY3RQdHIpOgorICAgICAgICAoV1RGOjpDb21wYWN0UHRyOjpvcGVyYXRvciogY29uc3Qp
OgorICAgICAgICAoV1RGOjpDb21wYWN0UHRyOjpvcGVyYXRvci0+IGNvbnN0KToKKyAgICAgICAg
KFdURjo6Q29tcGFjdFB0cjo6b3BlcmF0b3IhIGNvbnN0KToKKyAgICAgICAgKFdURjo6Q29tcGFj
dFB0cjo6b3BlcmF0b3IgYm9vbCBjb25zdCk6CisgICAgICAgIChXVEY6OkNvbXBhY3RQdHI6Om9w
ZXJhdG9yPSk6CisgICAgICAgIChXVEY6OkNvbXBhY3RQdHI6OmdldCBjb25zdCk6CisgICAgICAg
ICogd3RmL0NvbXBhY3RSZWZQdHIuaDogQWRkZWQuCisgICAgICAgIChXVEY6OkNvbXBhY3RlZDo6
Q29tcGFjdGVkKToKKyAgICAgICAgKFdURjo6Q29tcGFjdGVkOjpvcGVyYXRvcj0pOgorICAgICAg
ICAoV1RGOjpDb21wYWN0ZWQ6Om9wZXJhdG9yLT4gY29uc3QpOgorICAgICAgICAoV1RGOjpDb21w
YWN0ZWQ6Om9wZXJhdG9yKiBjb25zdCk6CisgICAgICAgIChXVEY6OkNvbXBhY3RlZDo6b3BlcmF0
b3IhIGNvbnN0KToKKyAgICAgICAgKFdURjo6Q29tcGFjdGVkOjpvcGVyYXRvciBib29sIGNvbnN0
KToKKyAgICAgICAgKFdURjo6Q29tcGFjdGVkOjpnZXQgY29uc3QpOgorICAgICAgICAoV1RGOjpD
b21wYWN0ZWQ6OnNldCk6CisgICAgICAgIChXVEY6OkNvbXBhY3RlZDo6ZXhjaGFuZ2UpOgorICAg
ICAgICAoV1RGOjpDb21wYWN0ZWQ6OnN3YXApOgorICAgICAgICAoV1RGOjpDb21wYWN0ZWQ6OmVu
Y29kZSk6CisgICAgICAgIChXVEY6OkNvbXBhY3RlZDo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAg
KFdURjo6Q29tcGFjdGVkOjpkZWNvZGUgY29uc3QpOgorICAgICAgICAoV1RGOjpHZXRQdHJIZWxw
ZXI8Q29tcGFjdGVkPFQ+Pjo6Z2V0UHRyKToKKyAgICAgICAgKFdURjo6Q29tcGFjdFB0clRyYWl0
czo6ZXhjaGFuZ2UpOgorICAgICAgICAoV1RGOjpDb21wYWN0UHRyVHJhaXRzOjpzd2FwKToKKyAg
ICAgICAgKFdURjo6Q29tcGFjdFB0clRyYWl0czo6dW53cmFwKToKKyAgICAgICAgKFdURjo6Q29t
cGFjdFB0clRyYWl0czo6aGFzaFRhYmxlRGVsZXRlZFZhbHVlKToKKyAgICAgICAgKFdURjo6Q29t
cGFjdFB0clRyYWl0czo6aXNIYXNoVGFibGVEZWxldGVkVmFsdWUpOgorCiAyMDIyLTA1LTA1ICBC
cmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBhYmFu
ZG9uZWQgV0tQcmVmZXJlbmNlIGZvciBBbHdheXNVc2VBY2NlbGVyYXRlZE92ZXJmbG93U2Nyb2xs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggYTU3YjFhNzY0YjE3NjZiNWJh
YzEwNTI2ZWFiODZkMjQxYzUxYWQ4OS4uZGUxNzRhZDFlZTBmZDFhMzk3MDZmNTIzZDljMzFlZjZl
OWM5NjgxYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNzA0LDYgKzcw
NCw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAg
aGVhcC9DZWxsU3RhdGUuaAogICAgIGhlYXAvQ29sbGVjdGlvblNjb3BlLmgKICAgICBoZWFwL0Nv
bGxlY3RvclBoYXNlLmgKKyAgICBoZWFwL0NvbXBhY3RCbG9vbUZpbHRlci5oCiAgICAgaGVhcC9D
b21wbGV0ZVN1YnNwYWNlLmgKICAgICBoZWFwL0NvbXBsZXRlU3Vic3BhY2VJbmxpbmVzLmgKICAg
ICBoZWFwL0NvbnN0cmFpbnRDb25jdXJyZW5jeS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IDIyZDA5MTMyMGQxNmU3YzkxZDAzNjhhOGIyMzBmNTkyNzFjZmZkMTcuLmJhNzRhMWUx
ZGQ2MzVkMzdmN2FmMTE2MTU3ODVhNGJmOTVhYjIyMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0yMTI5LDYgKzIxMjksNyBAQAogCQlGRUY1QjQyQzI2MjhDQkM4MDAxNkU3NzYg
LyogVk1UcmFwc0lubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEZFRjVCNDJCMjYyOENCQzgwMDE2RTc3NiAvKiBWTVRyYXBzSW5saW5lcy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFRjVCNDMw
MjYyQTMzOEIwMDE2RTc3NiAvKiBFeGNlcHRpb25FeHBlY3RhdGlvbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVGNUI0MkYyNjJBMzM4QjAwMTZFNzc2
IC8qIEV4Y2VwdGlvbkV4cGVjdGF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkVGRDZGQzYxRDVFNzk5MjAwOEYyRjBCIC8qIEpTU3RyaW5n
SW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RkVGRDZGQzUxRDVFNzk3MDAwOEYyRjBCIC8qIEpTU3RyaW5nSW5saW5lcy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUZGMjVCOTM0MjgzMzA2REIw
MEUwM0Y0RCAvKiBDb21wYWN0Qmxvb21GaWx0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZGMjVCOTMzMjgzMzA2REEwMEUwM0Y0RCAvKiBDb21wYWN0
Qmxvb21GaWx0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWEJ1aWxk
UnVsZSBzZWN0aW9uICovCkBAIC01Nzg0LDYgKzU3ODUsNyBAQAogCQlGRUY1QjQyQjI2MjhDQkM4
MDAxNkU3NzYgLyogVk1UcmFwc0lubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gVk1UcmFwc0lubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVG
NUI0MkYyNjJBMzM4QjAwMTZFNzc2IC8qIEV4Y2VwdGlvbkV4cGVjdGF0aW9uLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4Y2VwdGlvbkV4cGVjdGF0aW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFRkQ2RkM1MUQ1RTc5NzAwMDhGMkYwQiAvKiBKU1N0cmlu
Z0lubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTdHJpbmdJbmxp
bmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZGMjVCOTMzMjgzMzA2REEwMEUw
M0Y0RCAvKiBDb21wYWN0Qmxvb21GaWx0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQ29tcGFjdEJsb29tRmlsdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAv
KiBFbmQgUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWEZyYW1ld29y
a3NCdWlsZFBoYXNlIHNlY3Rpb24gKi8KQEAgLTY3MDAsNiArNjcwMiw3IEBACiAJCQkJMEZBNzYy
MDExREI5MjQyMzAwQjdBMkZEIC8qIENvbGxlY3Rpb25TY29wZS5oICovLAogCQkJCTBGRDBFNUU1
MUU0M0QzNDcwMDA2QUIwOCAvKiBDb2xsZWN0b3JQaGFzZS5jcHAgKi8sCiAJCQkJMEZEMEU1RTYx
RTQzRDM0NzAwMDZBQjA4IC8qIENvbGxlY3RvclBoYXNlLmggKi8sCisJCQkJRkYyNUI5MzMyODMz
MDZEQTAwRTAzRjREIC8qIENvbXBhY3RCbG9vbUZpbHRlci5oICovLAogCQkJCTBGRENFMTI3MUZB
RkE4NTkwMDZGMzkwMSAvKiBDb21wbGV0ZVN1YnNwYWNlLmNwcCAqLywKIAkJCQkwRkRDRTEyODFG
QUZBODU5MDA2RjM5MDEgLyogQ29tcGxldGVTdWJzcGFjZS5oICovLAogCQkJCTBGRDJGRDkzMjBC
NTJCREQwMEYwOTQ0MSAvKiBDb21wbGV0ZVN1YnNwYWNlSW5saW5lcy5oICovLApAQCAtOTk4Niw2
ICs5OTg5LDcgQEAKIAkJCQlCQzE4QzNGMzBFMTZGNUNEMDBCMzQ0NjAgLyogQ29tbW9uSWRlbnRp
ZmllcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMTVGMTVGMTRCN0E3M0UwMDVERTM3RCAvKiBD
b21tb25TbG93UGF0aHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTMzQTkyMEJEMjNEQTJDNkQwMDBF
QkFGMCAvKiBDb21tb25TbG93UGF0aHNJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKKwkJCQlGRjI1
QjkzNDI4MzMwNkRCMDBFMDNGNEQgLyogQ29tcGFjdEJsb29tRmlsdGVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBN0U1QTNBODE3OTc0MzJEMDBFODkzQzAgLyogQ29tcGlsYXRpb25SZXN1bHQuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGNEYxMUU4MjA5QkNEQUIwMDcwOTY1NCAvKiBDb21waWxlclRp
bWluZ1Njb3BlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkRDRTEyQTFGQUZBODVGMDA2RjM5MDEg
LyogQ29tcGxldGVTdWJzcGFjZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMjM4MCw3ICsxMjM4NCw2
IEBACiAJCQkJNTM2QjMxN0ExRjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UxMDcuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNTM2QjMxMjcxRjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRT
b3VyY2UxMDguY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM2QjMxMkMxRjcxQzU5OTAwMzdGQzMz
IC8qIFVuaWZpZWRTb3VyY2UxMDkuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJRTMxMTM1Q0EyODFC
NUIwMzAwQzFBNEE5IC8qIFp5ZGlzRm9ybWF0dGVyQmFzZS5jIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NTM2QjMxNzQxRjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UxMTAuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNTM2QjMxNzcxRjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UxMTEu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM2QjMxODAxRjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZp
ZWRTb3VyY2UxMTIuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xMjQwOSw3ICsxMjQxMiw2IEBACiAJ
CQkJNTM2QjMxOUQxRjczNUU3RDAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UxMzUuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNTM1QzI0NkMxRjdBMTc3ODAwNkVDNDBFIC8qIFVuaWZpZWRTb3VyY2Ux
MzYuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTMwQTY2QkMxRkEzRTc4QjAwMjZBNTQ1IC8qIFVu
aWZpZWRTb3VyY2UxMzcuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJRTMxMTM1Q0IyODFCNUIwNTAw
QzFBNEE5IC8qIFp5ZGlzRm9ybWF0dGVySW50ZWwuYyBpbiBTb3VyY2VzICovLAogCQkJCTUzMEE2
NkJEMUZBM0U3OEIwMDI2QTU0NSAvKiBVbmlmaWVkU291cmNlMTM4LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTUzMEE2NkJFMUZBM0U3OEIwMDI2QTU0NSAvKiBVbmlmaWVkU291cmNlMTM5LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTUzMEE2NkJGMUZBM0U3OEIwMDI2QTU0NSAvKiBVbmlmaWVkU291
cmNlMTQwLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMTI0MjAsNyArMTI0MjIsNiBAQAogCQkJCTUz
MEE2NkM0MUZBM0U3OEIwMDI2QTU0NSAvKiBVbmlmaWVkU291cmNlMTQ1LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTUzOEYxNUYyMjY4RkJDN0IwMEQ2MDFDNCAvKiBVbmlmaWVkU291cmNlMTQ2LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTUzOEYxNUVFMjY4RkJCQjYwMEQ2MDFDNCAvKiBVbmlmaWVk
U291cmNlMTQ3LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUUzMTEzNUM5MjgxQjVCMDAwMEMxQTRB
OSAvKiBaeWRpc0Zvcm1hdHRlckFUVC5jIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM4RjE1RTcyNjhG
QkJCNjAwRDYwMUM0IC8qIFVuaWZpZWRTb3VyY2UxNDguY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NTM4RjE1RjAyNjhGQkJCNjAwRDYwMUM0IC8qIFVuaWZpZWRTb3VyY2UxNDkuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNTM4RjE1RUIyNjhGQkJCNjAwRDYwMUM0IC8qIFVuaWZpZWRTb3VyY2UxNTAu
Y3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xMjQzMCw2ICsxMjQzMSw5IEBACiAJCQkJNTM4RjE1RUEy
NjhGQkJCNjAwRDYwMUM0IC8qIFVuaWZpZWRTb3VyY2UxNTQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNTM4RjE1RUYyNjhGQkJCNjAwRDYwMUM0IC8qIFVuaWZpZWRTb3VyY2UxNTUuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNTI1QzlDREYyMjAyODU4MzAwODJEQkZEIC8qIFdhc21BaXJJUkdlbmVy
YXRvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMzExMzVDOTI4MUI1QjAwMDBDMUE0QTkgLyog
WnlkaXNGb3JtYXR0ZXJBVFQuYyBpbiBTb3VyY2VzICovLAorCQkJCUUzMTEzNUNBMjgxQjVCMDMw
MEMxQTRBOSAvKiBaeWRpc0Zvcm1hdHRlckJhc2UuYyBpbiBTb3VyY2VzICovLAorCQkJCUUzMTEz
NUNCMjgxQjVCMDUwMEMxQTRBOSAvKiBaeWRpc0Zvcm1hdHRlckludGVsLmMgaW4gU291cmNlcyAq
LywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJ
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAK
aW5kZXggOTliOTIzOWI0ZDU0YzZmMTU5YTRkZWRmNDFhNTU0NmRhNWUwZDg3YS4uNDFiM2U0YjZk
NzQ0YjRiNjM4Y2UxMjYxYjNlMzI0ZDhkYzJiMjY2YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTExMDgyLDcgKzExMDgyLDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNoZWNrSlNDYXN0KE5vZGUqIG5vZGUpCiAgICAg
ICAgIEdQUlJlZyBzcGVjaWZpZWRHUFIgPSBzcGVjaWZpZWQuZ3ByKCk7CiAKICAgICAgICAgbV9q
aXQuZW1pdExvYWRTdHJ1Y3R1cmUodm0oKSwgYmFzZUdQUiwgb3RoZXJHUFIpOwotICAgICAgICBt
X2ppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhvdGhlckdQUiwgU3RydWN0dXJlOjpj
bGFzc0luZm9PZmZzZXQoKSksIG90aGVyR1BSKTsKKyAgICAgICAgbV9qaXQubG9hZENvbXBhY3RQ
dHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKG90aGVyR1BSLCBTdHJ1Y3R1cmU6OmNsYXNzSW5mb09m
ZnNldCgpKSwgb3RoZXJHUFIpOwogICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIobm9k
ZS0+Y2xhc3NJbmZvKCkpLCBzcGVjaWZpZWRHUFIpOwogCiAgICAgICAgIENDYWxsSGVscGVyczo6
TGFiZWwgbG9vcCA9IG1faml0LmxhYmVsKCk7CkBAIC0xMTI5Myw3ICsxMTI5Myw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVGdW5jdGlvblRvU3RyaW5nKE5vZGUqIG5vZGUpCiAgICAg
c3BlY3VsYXRlRnVuY3Rpb24obm9kZS0+Y2hpbGQxKCksIGZ1bmN0aW9uLmdwcigpKTsKIAogICAg
IG1faml0LmVtaXRMb2FkU3RydWN0dXJlKHZtKCksIGZ1bmN0aW9uLmdwcigpLCByZXN1bHQuZ3By
KCkpOwotICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0Lmdwcigp
LCBTdHJ1Y3R1cmU6OmNsYXNzSW5mb09mZnNldCgpKSwgcmVzdWx0LmdwcigpKTsKKyAgICBtX2pp
dC5sb2FkQ29tcGFjdFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHQuZ3ByKCksIFN0cnVj
dHVyZTo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCByZXN1bHQuZ3ByKCkpOwogICAgIHN0YXRpY19hc3Nl
cnQoc3RkOjppc19maW5hbF92PEpTQm91bmRGdW5jdGlvbj4sICJXZSBkb24ndCBoYW5kbGUgc3Vi
Y2xhc3NlcyB3aGVuIGNvbXBhcmluZyBjbGFzc0luZm8gYmVsb3ciKTsKICAgICBzbG93Q2FzZXMu
YXBwZW5kKG1faml0LmJyYW5jaFB0cihDQ2FsbEhlbHBlcnM6OkVxdWFsLCByZXN1bHQuZ3ByKCks
IFRydXN0ZWRJbW1QdHIoSlNCb3VuZEZ1bmN0aW9uOjppbmZvKCkpKSk7CiAKQEAgLTE0ODYyLDcg
KzE0ODYyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZVByb21pc2UoTm9k
ZSogbm9kZSkKICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaFRlc3QzMihDQ2FsbEhl
bHBlcnM6Olplcm8sIHN0cnVjdHVyZUdQUikpOwogICAgIG1faml0LmVtaXROb25OdWxsRGVjb2Rl
WmVyb0V4dGVuZGVkU3RydWN0dXJlSUQoc3RydWN0dXJlR1BSLCBzdHJ1Y3R1cmVHUFIpOwogICAg
IG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihub2RlLT5pc0ludGVybmFsUHJvbWlzZSgpID8gSlNJ
bnRlcm5hbFByb21pc2U6OmluZm8oKSA6IEpTUHJvbWlzZTo6aW5mbygpKSwgc2NyYXRjaDFHUFIp
OwotICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoUHRyKENDYWxsSGVscGVyczo6Tm90
RXF1YWwsIHNjcmF0Y2gxR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3RydWN0dXJlR1BSLCBT
dHJ1Y3R1cmU6OmNsYXNzSW5mb09mZnNldCgpKSkpOworICAgIHNsb3dDYXNlcy5hcHBlbmQobV9q
aXQuYnJhbmNoQ29tcGFjdFB0cihDQ2FsbEhlbHBlcnM6Ok5vdEVxdWFsLCBzY3JhdGNoMUdQUiwg
Q0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0cnVjdHVyZUdQUiwgU3RydWN0dXJlOjpjbGFzc0luZm9P
ZmZzZXQoKSksIHNjcmF0Y2gyR1BSKSk7CiAgICAgbV9qaXQubG9hZExpbmthYmxlQ29uc3RhbnQo
SklUQ29tcGlsZXI6OkxpbmthYmxlQ29uc3RhbnQobV9ncmFwaCwgZ2xvYmFsT2JqZWN0KSwgc2Ny
YXRjaDFHUFIpOwogICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoUHRyKENDYWxsSGVs
cGVyczo6Tm90RXF1YWwsIHNjcmF0Y2gxR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3RydWN0
dXJlR1BSLCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSkpOwogCkBAIC0xNDkxMSw3
ICsxNDkxMSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVJbnRlcm5hbEZp
ZWxkT2JqZWN0KE5vZGUqIG5vZGUsIE9wZXJhdGlvbiBvcGVyCiAgICAgc2xvd0Nhc2VzLmFwcGVu
ZChtX2ppdC5icmFuY2hUZXN0MzIoQ0NhbGxIZWxwZXJzOjpaZXJvLCBzdHJ1Y3R1cmVHUFIpKTsK
ICAgICBtX2ppdC5lbWl0Tm9uTnVsbERlY29kZVplcm9FeHRlbmRlZFN0cnVjdHVyZUlEKHN0cnVj
dHVyZUdQUiwgc3RydWN0dXJlR1BSKTsKICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIoSlND
bGFzczo6aW5mbygpKSwgc2NyYXRjaDFHUFIpOwotICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQu
YnJhbmNoUHRyKENDYWxsSGVscGVyczo6Tm90RXF1YWwsIHNjcmF0Y2gxR1BSLCBDQ2FsbEhlbHBl
cnM6OkFkZHJlc3Moc3RydWN0dXJlR1BSLCBTdHJ1Y3R1cmU6OmNsYXNzSW5mb09mZnNldCgpKSkp
OworICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoQ29tcGFjdFB0cihDQ2FsbEhlbHBl
cnM6Ok5vdEVxdWFsLCBzY3JhdGNoMUdQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0cnVjdHVy
ZUdQUiwgU3RydWN0dXJlOjpjbGFzc0luZm9PZmZzZXQoKSksIHNjcmF0Y2gyR1BSKSk7CiAgICAg
bV9qaXQubG9hZExpbmthYmxlQ29uc3RhbnQoSklUQ29tcGlsZXI6OkxpbmthYmxlQ29uc3RhbnQo
bV9ncmFwaCwgZ2xvYmFsT2JqZWN0KSwgc2NyYXRjaDFHUFIpOwogICAgIHNsb3dDYXNlcy5hcHBl
bmQobV9qaXQuYnJhbmNoUHRyKENDYWxsSGVscGVyczo6Tm90RXF1YWwsIHNjcmF0Y2gxR1BSLCBD
Q2FsbEhlbHBlcnM6OkFkZHJlc3Moc3RydWN0dXJlR1BSLCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVj
dE9mZnNldCgpKSkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
QWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCmluZGV4IGZlMjlkZDJiZTdjMjUzZTUxYTg0M2FmMjk3
ZDg1MWJhOWY0NDU2YmEuLmIyOGRlNjIyYjIzMzBlNzFlZmQ3ZDZhNzVlNDA4MTk5ZTk5ODBjYmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVw
b3NpdG9yeS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFw
UmVwb3NpdG9yeS5oCkBAIC0xNDcsNyArMTQ3LDYgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFj
ZSBGVEwgewogICAgIG1hY3JvKFN0cnVjdHVyZV9vdXRPZkxpbmVUeXBlRmxhZ3MsIFN0cnVjdHVy
ZTo6b3V0T2ZMaW5lVHlwZUZsYWdzT2Zmc2V0KCkpIFwKICAgICBtYWNybyhTdHJ1Y3R1cmVfcHJl
dmlvdXNPclJhcmVEYXRhLCBTdHJ1Y3R1cmU6OnByZXZpb3VzT3JSYXJlRGF0YU9mZnNldCgpKSBc
CiAgICAgbWFjcm8oU3RydWN0dXJlX3Byb3RvdHlwZSwgU3RydWN0dXJlOjpwcm90b3R5cGVPZmZz
ZXQoKSkgXAotICAgIG1hY3JvKFN0cnVjdHVyZV9zdHJ1Y3R1cmVJRCwgU3RydWN0dXJlOjpzdHJ1
Y3R1cmVJRE9mZnNldCgpKSBcCiAgICAgbWFjcm8oU3RydWN0dXJlUmFyZURhdGFfY2FjaGVkS2V5
cywgU3RydWN0dXJlUmFyZURhdGE6Om9mZnNldE9mQ2FjaGVkUHJvcGVydHlOYW1lcyhDYWNoZWRQ
cm9wZXJ0eU5hbWVzS2luZDo6S2V5cykpIFwKICAgICBtYWNybyhTdHJ1Y3R1cmVSYXJlRGF0YV9j
YWNoZWRHZXRPd25Qcm9wZXJ0eU5hbWVzLCBTdHJ1Y3R1cmVSYXJlRGF0YTo6b2Zmc2V0T2ZDYWNo
ZWRQcm9wZXJ0eU5hbWVzKENhY2hlZFByb3BlcnR5TmFtZXNLaW5kOjpHZXRPd25Qcm9wZXJ0eU5h
bWVzKSkgXAogICAgIG1hY3JvKFN0cnVjdHVyZVJhcmVEYXRhX2NhY2hlZFByb3BlcnR5TmFtZUVu
dW1lcmF0b3JBbmRGbGFnLCBTdHJ1Y3R1cmVSYXJlRGF0YTo6b2Zmc2V0T2ZDYWNoZWRQcm9wZXJ0
eU5hbWVFbnVtZXJhdG9yQW5kRmxhZygpKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggN2VkMzczNzk0M2I3MzFhNmUzZmQ1YzdmOTMwYzA1
MjY5ZDk4NWU2ZS4uNzMzYzlmOTRlNDZmZGRkMmM5NmI1YzgyZTVjMjY3MzRhODIyMjI5NiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtMTY4
MzIsNiArMTY4MzIsMTYgQEAgSUdOT1JFX0NMQU5HX1dBUk5JTkdTX0VORAogICAgICAgICAgICAg
b2JqZWN0LCBtX2hlYXBzLkpTQ2VsbF91c2VmdWxCeXRlcyk7CiAgICAgfQogCisgICAgTFZhbHVl
IGVuY29kZVN0cnVjdHVyZShMVmFsdWUgc3RydWN0dXJlKQorICAgIHsKKyNpZiBFTkFCTEUoU1RS
VUNUVVJFX0lEX1dJVEhfU0hJRlQpCisgICAgICAgIHJldHVybiBtX291dC5jYXN0VG9JbnQzMiht
X291dC5sU2hyKHN0cnVjdHVyZSwgbV9vdXQuY29uc3RJbnQzMihTdHJ1Y3R1cmVJRDo6ZW5jb2Rl
U2hpZnRBbW91bnQpKSk7CisjZWxpZiBDUFUoQUREUkVTUzY0KQorICAgICAgICByZXR1cm4gbV9v
dXQuY2FzdFRvSW50MzIobV9vdXQuYml0QW5kKHN0cnVjdHVyZSwgbV9vdXQuY29uc3RJbnQ2NChT
dHJ1Y3R1cmVJRDo6c3RydWN0dXJlSURNYXNrKSkpOworI2VuZGlmCisgICAgICAgIHJldHVybiBz
dHJ1Y3R1cmU7CisgICAgfQorCiAgICAgdm9pZCBzdG9yZVN0cnVjdHVyZShMVmFsdWUgb2JqZWN0
LCBMVmFsdWUgc3RydWN0dXJlKQogICAgIHsKICAgICAgICAgaWYgKHN0cnVjdHVyZS0+aGFzSW50
UHRyKCkpIHsKQEAgLTE2ODM5LDcgKzE2ODQ5LDcgQEAgSUdOT1JFX0NMQU5HX1dBUk5JTkdTX0VO
RAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgTFZhbHVlIGlkID0g
bV9vdXQubG9hZDMyKHN0cnVjdHVyZSwgbV9oZWFwcy5TdHJ1Y3R1cmVfc3RydWN0dXJlSUQpOwor
ICAgICAgICBMVmFsdWUgaWQgPSBlbmNvZGVTdHJ1Y3R1cmUoc3RydWN0dXJlKTsKICAgICAgICAg
bV9vdXQuc3RvcmUzMihpZCwgb2JqZWN0LCBtX2hlYXBzLkpTQ2VsbF9zdHJ1Y3R1cmVJRCk7CiAK
ICAgICAgICAgTFZhbHVlIGJsb2IgPSBtX291dC5sb2FkMzIoc3RydWN0dXJlLCBtX2hlYXBzLlN0
cnVjdHVyZV9pbmRleGluZ01vZGVJbmNsdWRpbmdIaXN0b3J5KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbXBhY3RCbG9vbUZpbHRlci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvQ29tcGFjdEJsb29tRmlsdGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDgxNjczYTQz
MTI2ZDMzYzVlZDNkY2E2NTExMTA0Mzk5ZjU2YmNlZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbXBhY3RCbG9vbUZpbHRlci5oCkBAIC0wLDAgKzEsNjgg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9Db21wYWN0UmVm
UHRyLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBDb21wYWN0Qmxvb21GaWx0ZXIgewor
ICAgIHVzaW5nIENvbXBhY3RlZCA9IFdURjo6Q29tcGFjdGVkPG51bGxwdHJfdD47CisgICAgdXNp
bmcgU3RvcmFnZVNpemUgPSBDb21wYWN0ZWQ6OlN0b3JhZ2VTaXplOworCitwdWJsaWM6CisgICAg
Q29tcGFjdEJsb29tRmlsdGVyKCkgPSBkZWZhdWx0OworCisgICAgQ29tcGFjdEJsb29tRmlsdGVy
KFN0b3JhZ2VTaXplIGJpdHMpCisgICAgICAgIDogbV9iaXRzKGJpdHMpCisgICAgeworICAgIH0K
KworICAgIHZvaWQgYWRkKHVpbnRwdHJfdCBwdHIpIHsgbV9iaXRzIHw9IENvbXBhY3RlZDo6ZW5j
b2RlKHB0cik7IH0KKworICAgIHZvaWQgYWRkKENvbXBhY3RCbG9vbUZpbHRlciYgb3RoZXIpIHsg
bV9iaXRzIHw9IG90aGVyLm1fYml0czsgfQorCisgICAgYm9vbCBydWxlT3V0KHVpbnRwdHJfdCBw
dHIpIGNvbnN0CisgICAgeworICAgICAgICBTdG9yYWdlU2l6ZSBiaXRzID0gQ29tcGFjdGVkOjpl
bmNvZGUocHRyKTsKKyAgICAgICAgaWYgKCFiaXRzKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisKKyAgICAgICAgaWYgKChiaXRzICYgbV9iaXRzKSAhPSBiaXRzKQorICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0gLy8gVHJ1ZSBmb3IgMC4K
KworICAgIHZvaWQgcmVzZXQoKSB7IG1fYml0cyA9IDA7IH0KKworICAgIFN0b3JhZ2VTaXplIGJp
dHMoKSBjb25zdCB7IHJldHVybiBtX2JpdHM7IH0KKworcHJpdmF0ZToKKyAgICBTdG9yYWdlU2l6
ZSBtX2JpdHMgeyAwIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAppbmRleCBmZWQ5MTE2ZjZlM2VmZTIz
OWQzZmQyY2M4YWFkNWUzNjg3M2I2NzAxLi4xMDQxNWRmZTA5MTI3YWZlODQ5OTIwY2M2OTU0OTVm
YTgzZjcyOWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5
SGVscGVycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBl
cnMuY3BwCkBAIC0zMzIsNyArMzMyLDggQEAgdm9pZCBBc3NlbWJseUhlbHBlcnM6OmVtaXRTdG9y
ZVN0cnVjdHVyZVdpdGhUeXBlSW5mbyhBc3NlbWJseUhlbHBlcnMmIGppdCwgVHJ1c3QKIHsKICAg
ICBjb25zdCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZVB0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
U3RydWN0dXJlKj4oc3RydWN0dXJlLm1fdmFsdWUpOwogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAg
aml0LnN0b3JlNjQoVHJ1c3RlZEltbTY0KHN0cnVjdHVyZVB0ci0+aWRCbG9iKCkpLCBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhkZXN0LCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpKTsKKyAg
ICBqaXQuc3RvcmUzMihUcnVzdGVkSW1tMzIoU3RydWN0dXJlSUQ6OmVuY29kZShzdHJ1Y3R1cmVQ
dHIpLmJpdHMoKSksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRlc3QsIEpTQ2VsbDo6c3RydWN0
dXJlSURPZmZzZXQoKSkpOworICAgIGppdC5zdG9yZTMyKFRydXN0ZWRJbW0zMihzdHJ1Y3R1cmVQ
dHItPmlkQmxvYigpKSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGVzdCwgSlNDZWxsOjppbmRl
eGluZ1R5cGVBbmRNaXNjT2Zmc2V0KCkpKTsKICAgICBpZiAoQVNTRVJUX0VOQUJMRUQpIHsKICAg
ICAgICAgSnVtcCBjb3JyZWN0U3RydWN0dXJlID0gaml0LmJyYW5jaDMyKEVxdWFsLCBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhkZXN0LCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBUcnVz
dGVkSW1tMzIoc3RydWN0dXJlUHRyLT5pZCgpLmJpdHMoKSkpOwogICAgICAgICBqaXQuYWJvcnRX
aXRoUmVhc29uKEFIU3RydWN0dXJlSURJc1ZhbGlkKTsKQEAgLTQyOCw2ICs0MjksMTUgQEAgdm9p
ZCBBc3NlbWJseUhlbHBlcnM6OmVtaXRMb2FkU3RydWN0dXJlKFZNJiwgUmVnaXN0ZXJJRCBzb3Vy
Y2UsIFJlZ2lzdGVySUQgZGVzdCkKICAgICBlbWl0Tm9uTnVsbERlY29kZVplcm9FeHRlbmRlZFN0
cnVjdHVyZUlEKGRlc3QsIGRlc3QpOwogfQogCit2b2lkIEFzc2VtYmx5SGVscGVyczo6ZW1pdEVu
Y29kZVN0cnVjdHVyZShSZWdpc3RlcklEIHNvdXJjZSwgUmVnaXN0ZXJJRCBkZXN0KQoreworI2lm
IEVOQUJMRShTVFJVQ1RVUkVfSURfV0lUSF9TSElGVCkKKyAgICB1cnNoaWZ0MzIoc291cmNlLCBU
cnVzdGVkSW1tMzIoU3RydWN0dXJlSUQ6OmVuY29kZVNoaWZ0QW1vdW50KSwgZGVzdCk7CisjZWxp
ZiBDUFUoQUREUkVTUzY0KQorICAgIGFuZDMyKFRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDx1aW50
MzJfdD4oU3RydWN0dXJlSUQ6OnN0cnVjdHVyZUlETWFzaykpLCBzb3VyY2UsIGRlc3QpOworI2Vu
ZGlmCit9CisKIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjplbWl0TG9hZFByb3RvdHlwZShWTSYgdm0s
IEdQUlJlZyBvYmplY3RHUFIsIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MsIEp1bXBMaXN0JiBzbG93
UGF0aCkKIHsKICAgICBBU1NFUlQocmVzdWx0UmVncy5wYXlsb2FkR1BSKCkgIT0gb2JqZWN0R1BS
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJz
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCmluZGV4IGZj
NTllYTk0Y2NhM2VhY2IyMTVkM2NkYWMwZDZiZDQ3NzM3OTNiZWEuLmRjMmFiNzhkMDdiMGYwMzQw
NGJkZGNmNTRjNTQ5M2U5YTQzZmY1YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9B
c3NlbWJseUhlbHBlcnMuaApAQCAtMTYxMyw2ICsxNjEzLDcgQEAgcHVibGljOgogICAgIHZvaWQg
ZW1pdE5vbk51bGxEZWNvZGVaZXJvRXh0ZW5kZWRTdHJ1Y3R1cmVJRChSZWdpc3RlcklEIHNvdXJj
ZSwgUmVnaXN0ZXJJRCBkZXN0KTsKICAgICB2b2lkIGVtaXRMb2FkU3RydWN0dXJlKFZNJiwgUmVn
aXN0ZXJJRCBzb3VyY2UsIFJlZ2lzdGVySUQgZGVzdCk7CiAgICAgdm9pZCBlbWl0TG9hZFByb3Rv
dHlwZShWTSYsIEdQUlJlZyBvYmplY3RHUFIsIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MsIEp1bXBM
aXN0JiBzbG93UGF0aCk7CisgICAgdm9pZCBlbWl0RW5jb2RlU3RydWN0dXJlKFJlZ2lzdGVySUQg
c291cmNlLCBSZWdpc3RlcklEIGRlc3QpOwogCiAgICAgdm9pZCBlbWl0U3RvcmVTdHJ1Y3R1cmVX
aXRoVHlwZUluZm8oVHJ1c3RlZEltbVB0ciBzdHJ1Y3R1cmUsIFJlZ2lzdGVySUQgZGVzdCwgUmVn
aXN0ZXJJRCkKICAgICB7CkBAIC0xNjIxLDE3ICsxNjIyLDE2IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgZW1pdFN0b3JlU3RydWN0dXJlV2l0aFR5cGVJbmZvKFJlZ2lzdGVySUQgc3RydWN0dXJlLCBS
ZWdpc3RlcklEIGRlc3QsIFJlZ2lzdGVySUQgc2NyYXRjaCkKICAgICB7CisgICAgICAgIC8vIFN0
b3JlIHRoZSBTdHJ1Y3R1cmVJRAogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIGxvYWQ2NChN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdHJ1Y3R1cmUsIFN0cnVjdHVyZTo6c3RydWN0dXJlSURP
ZmZzZXQoKSksIHNjcmF0Y2gpOwotICAgICAgICBzdG9yZTY0KHNjcmF0Y2gsIE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKGRlc3QsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSkpOworICAgICAg
ICBlbWl0RW5jb2RlU3RydWN0dXJlKHN0cnVjdHVyZSwgc2NyYXRjaCk7CisgICAgICAgIHN0b3Jl
MzIoc2NyYXRjaCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGVzdCwgSlNDZWxsOjpzdHJ1Y3R1
cmVJRE9mZnNldCgpKSk7CiAjZWxzZQorICAgICAgICBzdG9yZVB0cihzdHJ1Y3R1cmUsIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKGRlc3QsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSkpOwor
I2VuZGlmCiAgICAgICAgIC8vIFN0b3JlIGFsbCB0aGUgaW5mbyBmbGFncyB1c2luZyBhIHNpbmds
ZSAzMi1iaXQgd2lkZSBsb2FkIGFuZCBzdG9yZS4KICAgICAgICAgbG9hZDMyKE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKHN0cnVjdHVyZSwgU3RydWN0dXJlOjppbmRleGluZ01vZGVJbmNsdWRpbmdI
aXN0b3J5T2Zmc2V0KCkpLCBzY3JhdGNoKTsKICAgICAgICAgc3RvcmUzMihzY3JhdGNoLCBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhkZXN0LCBKU0NlbGw6OmluZGV4aW5nVHlwZUFuZE1pc2NPZmZz
ZXQoKSkpOwotCi0gICAgICAgIC8vIFN0b3JlIHRoZSBTdHJ1Y3R1cmVJRAotICAgICAgICBzdG9y
ZVB0cihzdHJ1Y3R1cmUsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRlc3QsIEpTQ2VsbDo6c3Ry
dWN0dXJlSURPZmZzZXQoKSkpOwotI2VuZGlmCiAgICAgfQogCiAgICAgc3RhdGljIHZvaWQgZW1p
dFN0b3JlU3RydWN0dXJlV2l0aFR5cGVJbmZvKEFzc2VtYmx5SGVscGVycyYgaml0LCBUcnVzdGVk
SW1tUHRyIHN0cnVjdHVyZSwgUmVnaXN0ZXJJRCBkZXN0KTsKQEAgLTE5MTQsNyArMTkxNCwzMCBA
QCBwdWJsaWM6CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBvdXRPZkxpbmVDYXBh
Y2l0eTsgKytpKQogICAgICAgICAgICAgc3RvcmVUcnVzdGVkVmFsdWUoSlNWYWx1ZSgpLCBBZGRy
ZXNzKGJ1dHRlcmZseUdQUiwgLXNpemVvZihJbmRleGluZ0hlYWRlcikgLSAoaSArIDEpICogc2l6
ZW9mKEVuY29kZWRKU1ZhbHVlKSkpOwogICAgIH0KLSAgICAKKworICAgIHZvaWQgbG9hZENvbXBh
Y3RQdHIoQWRkcmVzcyBhZGRyZXNzLCBHUFJSZWcgZGVzdCkKKyAgICB7CisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKKyAgICAgICAgbG9hZDMyKGFkZHJlc3MsIGRlc3QpOworICAgICAgICBsc2hp
ZnQ2NChUcnVzdGVkSW1tMzIoNCksIGRlc3QpOworI2Vsc2UKKyAgICAgICAgbG9hZFB0cihhZGRy
ZXNzLCBkZXN0KTsKKyNlbmRpZgorICAgIH0KKworICAgIEp1bXAgYnJhbmNoQ29tcGFjdFB0cihS
ZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEdQUlJlZyBsZWZ0LCBBZGRyZXNzIHJpZ2h0LCBHUFJS
ZWcgc2NyYXRjaCkKKyAgICB7CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICAgICAgQVNT
RVJUKGxlZnQgIT0gc2NyYXRjaCk7CisgICAgICAgIGxvYWQzMihyaWdodCwgc2NyYXRjaCk7Cisg
ICAgICAgIGxzaGlmdDY0KFRydXN0ZWRJbW0zMig0KSwgc2NyYXRjaCk7CisgICAgICAgIHJldHVy
biBicmFuY2hQdHIoY29uZCwgbGVmdCwgQWRkcmVzcyhzY3JhdGNoKSk7CisjZWxzZQorICAgICAg
ICAodm9pZClzY3JhdGNoOworICAgICAgICByZXR1cm4gYnJhbmNoUHRyKGNvbmQsIGxlZnQsIHJp
Z2h0KTsKKyNlbmRpZgorICAgIH0gICAKKwogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgdm9pZCB3
YW5nc0ludDY0SGFzaChHUFJSZWcgaW5wdXRBbmRSZXN1bHQsIEdQUlJlZyBzY3JhdGNoKTsKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFj
Y2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNw
cAppbmRleCA3NGY0OTlkYzdhNWYyOTE3OTU2YjA5YWE0ZjQ5NGM5ZmVhYzkxYThjLi4zYjA2YjVl
OTVhNmY2ZjIwNzU5YWRhNWVlMjBhZTcyODQwZDE0N2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcApAQCAtMTgwOSw3ICsxODA5LDcgQEAg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OmdlbmVyYXRlT3BHZXRG
cm9tU2NvcGVUaHVuayhWTSYgdm0pCiAgICAgICAgICAgICAvLyBTdHJ1Y3R1cmUgY2hlY2sgY292
ZXJzIHZhciBpbmplY3Rpb24gc2luY2Ugd2UgZG9uJ3QgY2FjaGUgc3RydWN0dXJlcyBmb3IgYW55
dGhpbmcgYnV0IHRoZSBHbG9iYWxPYmplY3QuIEFkZGl0aW9uYWxseSwgcmVzb2x2ZV9zY29wZSBo
YW5kbGVzIGNoZWNraW5nIGZvciB0aGUgdmFyIGluamVjdGlvbi4KICAgICAgICAgICAgIGppdC5s
b2FkUHRyKEFkZHJlc3MobWV0YWRhdGFHUFIsIE9wR2V0RnJvbVNjb3BlOjpNZXRhZGF0YTo6b2Zm
c2V0T2ZTdHJ1Y3R1cmUoKSksIHNjcmF0Y2hHUFIpOwogICAgICAgICAgICAgc2xvd0Nhc2UuYXBw
ZW5kKGppdC5icmFuY2hUZXN0UHRyKFplcm8sIHNjcmF0Y2hHUFIpKTsKLSAgICAgICAgICAgIGpp
dC5sb2FkMzIoQWRkcmVzcyhzY3JhdGNoR1BSLCBTdHJ1Y3R1cmU6OnN0cnVjdHVyZUlET2Zmc2V0
KCkpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgICAgIGppdC5lbWl0RW5jb2RlU3RydWN0dXJlKHNj
cmF0Y2hHUFIsIHNjcmF0Y2hHUFIpOwogICAgICAgICAgICAgc2xvd0Nhc2UuYXBwZW5kKGppdC5i
cmFuY2gzMihOb3RFcXVhbCwgQWRkcmVzcyhzY29wZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9m
ZnNldCgpKSwgc2NyYXRjaEdQUikpOwogCiAgICAgICAgICAgICBqaXQuaml0QXNzZXJ0KHNjb3Bl
ZExhbWJkYTxKdW1wKHZvaWQpPihbJl0gKCkgLT4gSnVtcCB7CkBAIC0xOTgyLDcgKzE5ODIsNyBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfdG9fc2NvcGUoY29uc3QgSlNJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogICAgICAgICAgICAgbG9hZFB0ckZyb21NZXRhZGF0YShieXRlY29k
ZSwgT3BQdXRUb1Njb3BlOjpNZXRhZGF0YTo6b2Zmc2V0T2ZTdHJ1Y3R1cmUoKSwgc2NyYXRjaEdQ
UjEpOwogICAgICAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlclBheWxvYWQoc2NvcGUsIHNj
b3BlR1BSKTsKICAgICAgICAgICAgIGFkZFNsb3dDYXNlKGJyYW5jaFRlc3RQdHIoWmVybywgc2Ny
YXRjaEdQUjEpKTsKLSAgICAgICAgICAgIGxvYWQzMihBZGRyZXNzKHNjcmF0Y2hHUFIxLCBTdHJ1
Y3R1cmU6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBzY3JhdGNoR1BSMSk7CisgICAgICAgICAgICBl
bWl0RW5jb2RlU3RydWN0dXJlKHNjcmF0Y2hHUFIxLCBzY3JhdGNoR1BSMSk7CiAgICAgICAgICAg
ICBhZGRTbG93Q2FzZShicmFuY2gzMihOb3RFcXVhbCwgQWRkcmVzcyhzY29wZUdQUiwgSlNDZWxs
OjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgc2NyYXRjaEdQUjEpKTsKIAogICAgICAgICAgICAgZW1p
dEdldFZpcnR1YWxSZWdpc3Rlcih2YWx1ZSwgdmFsdWVKU1IpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9DbGFzc0luZm8uaAppbmRleCBhNTc2OTI4ZWQ4YWJjMTI1ZDk1ODU0OGRhZDBk
OWQwZDQ5NTA3NzkxLi41ODRlZDIxYWY5Mjc0MWRkNmQ1Mzk2M2Q0ZjU0MGJkOWMyMzVhOWRhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaApAQCAtMTcyLDcgKzE3
Miw3IEBAIHN0cnVjdCBNZXRob2RUYWJsZSB7CiAgICAgQ2xhc3NOYW1lOjpUeXBlZEFycmF5U3Rv
cmFnZVR5cGUsIFwKICAgICBzaXplb2YoQ2xhc3NOYW1lKSwKIAotc3RydWN0IENsYXNzSW5mbyB7
CitzdHJ1Y3QgYWxpZ25hcygxNikgQ2xhc3NJbmZvIHsKICAgICB1c2luZyBDaGVja0pTQ2FzdFNu
aXBwZXRGdW5jdGlvblB0ciA9IFJlZjxTbmlwcGV0PiAoKikodm9pZCk7CiAKICAgICAvLyBBIHN0
cmluZyBkZW5vdGluZyB0aGUgY2xhc3MgbmFtZS4gRXhhbXBsZTogIldpbmRvdyIuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAppbmRleCBhY2ZkODZjNDU2ZDdk
MDViMTliZGQyMDI0YjUwZjRlODhhOTM5MjY2Li4xMjcwZjY1NDVjZDEzMWI1MTI5OTY5M2VlYzJk
NDNiMzY0YjdkMWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVy
ZS5jcHAKQEAgLTE5Nyw3ICsxOTcsNyBAQCBpbmxpbmUgdm9pZCBTdHJ1Y3R1cmU6OnZhbGlkYXRl
RmxhZ3MoKSB7IH0KIAogU3RydWN0dXJlOjpTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSwgY29uc3QgVHlwZUluZm8mIHR5cGVJ
bmZvLCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbywgSW5kZXhpbmdUeXBlIGluZGV4aW5nVHlw
ZSwgdW5zaWduZWQgaW5saW5lQ2FwYWNpdHkpCiAgICAgOiBKU0NlbGwodm0sIHZtLnN0cnVjdHVy
ZVN0cnVjdHVyZS5nZXQoKSkKLSAgICAsIG1fYmxvYihTdHJ1Y3R1cmVJRDo6ZW5jb2RlKHRoaXMp
LCBpbmRleGluZ1R5cGUsIHR5cGVJbmZvKQorICAgICwgbV9ibG9iKGluZGV4aW5nVHlwZSwgdHlw
ZUluZm8pCiAgICAgLCBtX291dE9mTGluZVR5cGVGbGFncyh0eXBlSW5mby5vdXRPZkxpbmVUeXBl
RmxhZ3MoKSkKICAgICAsIG1faW5saW5lQ2FwYWNpdHkoaW5saW5lQ2FwYWNpdHkpCiAgICAgLCBt
X2JpdEZpZWxkKDApCkBAIC0yNjgsNyArMjY4LDcgQEAgU3RydWN0dXJlOjpTdHJ1Y3R1cmUoVk0m
IHZtLCBDcmVhdGluZ0Vhcmx5Q2VsbFRhZykKICAgICBzZXRNYXhPZmZzZXQodm0sIGludmFsaWRP
ZmZzZXQpOwogIAogICAgIFR5cGVJbmZvIHR5cGVJbmZvID0gVHlwZUluZm8oU3RydWN0dXJlVHlw
ZSwgU3RydWN0dXJlRmxhZ3MpOwotICAgIG1fYmxvYiA9IFN0cnVjdHVyZUlEQmxvYihTdHJ1Y3R1
cmVJRDo6ZW5jb2RlKHRoaXMpLCAwLCB0eXBlSW5mbyk7CisgICAgbV9ibG9iID0gU3RydWN0dXJl
SURCbG9iKDAsIHR5cGVJbmZvKTsKICAgICBtX291dE9mTGluZVR5cGVGbGFncyA9IHR5cGVJbmZv
Lm91dE9mTGluZVR5cGVGbGFncygpOwogCiAgICAgQVNTRVJUKGhhc1JlYWRPbmx5T3JHZXR0ZXJT
ZXR0ZXJQcm9wZXJ0aWVzRXhjbHVkaW5nUHJvdG8oKSB8fCAhbV9jbGFzc0luZm8tPmhhc1N0YXRp
Y1NldHRlck9yUmVhZG9ubHlQcm9wZXJ0aWVzKCkpOwpAQCAtMzA5LDcgKzMwOSw3IEBAIFN0cnVj
dHVyZTo6U3RydWN0dXJlKFZNJiB2bSwgU3RydWN0dXJlKiBwcmV2aW91cykKICAgICBzZXRNYXhP
ZmZzZXQodm0sIGludmFsaWRPZmZzZXQpOwogIAogICAgIFR5cGVJbmZvIHR5cGVJbmZvID0gcHJl
dmlvdXMtPnR5cGVJbmZvKCk7Ci0gICAgbV9ibG9iID0gU3RydWN0dXJlSURCbG9iKFN0cnVjdHVy
ZUlEOjplbmNvZGUodGhpcyksIHByZXZpb3VzLT5pbmRleGluZ01vZGVJbmNsdWRpbmdIaXN0b3J5
KCksIHR5cGVJbmZvKTsKKyAgICBtX2Jsb2IgPSBTdHJ1Y3R1cmVJREJsb2IocHJldmlvdXMtPmlu
ZGV4aW5nTW9kZUluY2x1ZGluZ0hpc3RvcnkoKSwgdHlwZUluZm8pOwogICAgIG1fb3V0T2ZMaW5l
VHlwZUZsYWdzID0gdHlwZUluZm8ub3V0T2ZMaW5lVHlwZUZsYWdzKCk7CiAKICAgICBBU1NFUlQo
IXByZXZpb3VzLT50eXBlSW5mbygpLnN0cnVjdHVyZUlzSW1tb3J0YWwoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCmluZGV4IDlkYTQxZjExMGI0ODY2MzZhZWQw
NDEwOWM5OTExNGQwMGY1OTU0MDguLmJhNGY3MzQwN2JhOWY0Y2U2OTQ0MTBkZDQxODY3ODY5MDFj
ZDZlMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVy
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCkBAIC0y
Niw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNsYXNzSW5mby5oIgorI2lu
Y2x1ZGUgIkNvbXBhY3RCbG9vbUZpbHRlci5oIgogI2luY2x1ZGUgIkNvbmN1cnJlbmN5LmgiCiAj
aW5jbHVkZSAiQ29uY3VycmVudEpTTG9jay5oIgogI2luY2x1ZGUgIkRlbGV0ZVByb3BlcnR5U2xv
dC5oIgpAQCAtNDEsMTEgKzQyLDEyIEBACiAjaW5jbHVkZSAiU3RydWN0dXJlSURCbG9iLmgiCiAj
aW5jbHVkZSAiU3RydWN0dXJlUmFyZURhdGEuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVUcmFuc2l0
aW9uVGFibGUuaCIKLSNpbmNsdWRlICJUaW55Qmxvb21GaWx0ZXIuaCIKICNpbmNsdWRlICJXYXRj
aHBvaW50LmgiCiAjaW5jbHVkZSAiV3JpdGVCYXJyaWVySW5saW5lcy5oIgogI2luY2x1ZGUgPHd0
Zi9BdG9taWNzLmg+CiAjaW5jbHVkZSA8d3RmL0NvbXBhY3RQb2ludGVyVHVwbGUuaD4KKyNpbmNs
dWRlIDx3dGYvQ29tcGFjdFB0ci5oPgorI2luY2x1ZGUgPHd0Zi9Db21wYWN0UmVmUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CiAKIG5hbWVzcGFjZSBXVEYgewpAQCAtMjI2LDkg
KzIyOCwxNiBAQCBwcml2YXRlOgogICAgIHZvaWQgdmFsaWRhdGVGbGFncygpOwogCiBwdWJsaWM6
Ci0gICAgU3RydWN0dXJlSUQgaWQoKSBjb25zdCB7IEFTU0VSVChtX2Jsb2Iuc3RydWN0dXJlSUQo
KSA9PSBTdHJ1Y3R1cmVJRDo6ZW5jb2RlKHRoaXMpKTsgcmV0dXJuIG1fYmxvYi5zdHJ1Y3R1cmVJ
RCgpOyB9CisgICAgU3RydWN0dXJlSUQgaWQoKSBjb25zdCAKKyAgICB7CisvLyAjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKKy8vICAgICAgICAgc3RhdGljX2Fzc2VydChzaXplb2YoKnRoaXMpID09
IDk2KTsKKy8vICNlbmRpZgorICAgICAgICByZXR1cm4gU3RydWN0dXJlSUQ6OmVuY29kZSh0aGlz
KTsKKyAgICB9CisKICAgICBpbnQzMl90IG9iamVjdEluaXRpYWxpemF0aW9uQmxvYigpIGNvbnN0
IHsgcmV0dXJuIG1fYmxvYi5ibG9iRXhjbHVkaW5nU3RydWN0dXJlSUQoKTsgfQotICAgIGludDY0
X3QgaWRCbG9iKCkgY29uc3QgeyByZXR1cm4gbV9ibG9iLmJsb2IoKTsgfQorICAgIGludDMyX3Qg
aWRCbG9iKCkgY29uc3QgeyByZXR1cm4gbV9ibG9iLmJsb2IoKTsgfQogCiAgICAgYm9vbCBpc1By
b3h5KCkgY29uc3QKICAgICB7CkBAIC0zMjYsNyArMzM1LDcgQEAgcHVibGljOgogICAgIC8vIFR5
cGUgYWNjZXNzb3JzLgogICAgIFR5cGVJbmZvIHR5cGVJbmZvKCkgY29uc3QgeyByZXR1cm4gbV9i
bG9iLnR5cGVJbmZvKG1fb3V0T2ZMaW5lVHlwZUZsYWdzKTsgfQogICAgIGJvb2wgaXNPYmplY3Qo
KSBjb25zdCB7IHJldHVybiB0eXBlSW5mbygpLmlzT2JqZWN0KCk7IH0KLSAgICBjb25zdCBDbGFz
c0luZm8qIGNsYXNzSW5mb0ZvckNlbGxzKCkgY29uc3QgeyByZXR1cm4gbV9jbGFzc0luZm87IH0K
KyAgICBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mb0ZvckNlbGxzKCkgY29uc3QgeyByZXR1cm4g
bV9jbGFzc0luZm8uZ2V0KCk7IH0KIHByb3RlY3RlZDoKICAgICAvLyBZb3UgcHJvYmFibHkgd2Fu
dCB0eXBlSW5mbygpLnR5cGUoKQogICAgIEpTVHlwZSB0eXBlKCkgeyByZXR1cm4gSlNDZWxsOjp0
eXBlKCk7IH0KQEAgLTY0NSwxMSArNjU0LDYgQEAgcHVibGljOgogICAgIH0KICAgICB2b2lkIGNh
Y2hlU3BlY2lhbFByb3BlcnR5KEpTR2xvYmFsT2JqZWN0KiwgVk0mLCBKU1ZhbHVlLCBDYWNoZWRT
cGVjaWFsUHJvcGVydHlLZXksIGNvbnN0IFByb3BlcnR5U2xvdCYpOwogCi0gICAgc3RhdGljIHB0
cmRpZmZfdCBzdHJ1Y3R1cmVJRE9mZnNldCgpCi0gICAgewotICAgICAgICByZXR1cm4gT0JKRUNU
X09GRlNFVE9GKFN0cnVjdHVyZSwgbV9ibG9iKSArIFN0cnVjdHVyZUlEQmxvYjo6c3RydWN0dXJl
SURPZmZzZXQoKTsKLSAgICB9Ci0KICAgICBzdGF0aWMgcHRyZGlmZl90IHByb3RvdHlwZU9mZnNl
dCgpCiAgICAgewogICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFN0cnVjdHVyZSwgbV9w
cm90b3R5cGUpOwpAQCAtOTUzLDQwICs5NTcsNDAgQEAgcHJpdmF0ZToKIAogICAgIC8vIFRoZXNl
IG5lZWQgdG8gYmUgcHJvcGVybHkgYWxpZ25lZCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSAnU3Ry
dWN0dXJlJwogICAgIC8vIHBhcnQgb2YgdGhlIG9iamVjdC4KLSAgICBTdHJ1Y3R1cmVJREJsb2Ig
bV9ibG9iOwotICAgIFR5cGVJbmZvOjpPdXRPZkxpbmVUeXBlRmxhZ3MgbV9vdXRPZkxpbmVUeXBl
RmxhZ3M7CisgICAgU3RydWN0dXJlSURCbG9iIG1fYmxvYjsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIG1hY09TfGlPUzogNCBieXRlcworICAgIFR5cGVJbmZvOjpPdXRP
ZkxpbmVUeXBlRmxhZ3MgbV9vdXRPZkxpbmVUeXBlRmxhZ3M7ICAgICAgICAgICAvLyBtYWNPU3xp
T1M6IDIgYnl0ZXMKIAotICAgIHVpbnQ4X3QgbV9pbmxpbmVDYXBhY2l0eTsKKyAgICB1aW50OF90
IG1faW5saW5lQ2FwYWNpdHk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
bWFjT1N8aU9TOiAxIGJ5dGUKIAotICAgIENvbmN1cnJlbnRKU0xvY2sgbV9sb2NrOworICAgIENv
bmN1cnJlbnRKU0xvY2sgbV9sb2NrOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBtYWNPU3xpT1M6IDEgYnl0ZQogCi0gICAgdWludDMyX3QgbV9iaXRGaWVsZDsKKyAgICB1
aW50MzJfdCBtX2JpdEZpZWxkOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gbWFjT1N8aU9TOiA0IGJ5dGVzCiAKLSAgICBXcml0ZUJhcnJpZXI8SlNHbG9iYWxPYmpl
Y3Q+IG1fZ2xvYmFsT2JqZWN0OwotICAgIFdyaXRlQmFycmllcjxVbmtub3duPiBtX3Byb3RvdHlw
ZTsKLSAgICBtdXRhYmxlIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmVDaGFpbj4gbV9jYWNoZWRQcm90
b3R5cGVDaGFpbjsKKyAgICB1aW50MTZfdCBtX3RyYW5zaXRpb25PZmZzZXQ7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gbWFjT1N8aU9TOiAyIGJ5dGVzCisgICAgdWludDE2X3Qg
bV9tYXhPZmZzZXQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1h
Y09TfGlPUzogMiBieXRlcwogCi0gICAgV3JpdGVCYXJyaWVyPEpTQ2VsbD4gbV9wcmV2aW91c09y
UmFyZURhdGE7CisgICAgV3JpdGVCYXJyaWVyPEpTR2xvYmFsT2JqZWN0PiBtX2dsb2JhbE9iamVj
dDsgICAgICAgICAgICAgICAgIC8vIG1hY09TfGlPUzogOCBieXRlcworICAgIFdyaXRlQmFycmll
cjxVbmtub3duPiBtX3Byb3RvdHlwZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBtYWNP
U3xpT1M6IDggYnl0ZXMKKyAgICBtdXRhYmxlIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmVDaGFpbj4g
bV9jYWNoZWRQcm90b3R5cGVDaGFpbjsgLy8gbWFjT1N8aU9TOiA4IGJ5dGVzCiAKLSAgICBSZWZQ
dHI8VW5pcXVlZFN0cmluZ0ltcGw+IG1fdHJhbnNpdGlvblByb3BlcnR5TmFtZTsKKyAgICBXcml0
ZUJhcnJpZXI8SlNDZWxsPiBtX3ByZXZpb3VzT3JSYXJlRGF0YTsgICAgICAgICAgICAgICAgICAg
Ly8gbWFjT1N8aU9TOiA4IGJ5dGVzCiAKLSAgICBjb25zdCBDbGFzc0luZm8qIG1fY2xhc3NJbmZv
OworICAgIENvbXBhY3RSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+IG1fdHJhbnNpdGlvblByb3Bl
cnR5TmFtZTsgICAvLyBtYWNPUzogOCBieXRlcywgaU9TOiA0IGJ5dGVzCiAKLSAgICBTdHJ1Y3R1
cmVUcmFuc2l0aW9uVGFibGUgbV90cmFuc2l0aW9uVGFibGU7CisgICAgQ29tcGFjdFB0cjxjb25z
dCBDbGFzc0luZm8+IG1fY2xhc3NJbmZvOyAgICAgICAgICAgICAgICAgICAgIC8vIG1hY09TOiA4
IGJ5dGVzLCBpT1M6IDQgYnl0ZXMKKworICAgIFN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZSBtX3Ry
YW5zaXRpb25UYWJsZTsgICAgICAgICAgICAgICAgICAvLyBtYWNPU3xpT1M6IDggYnl0ZXMKIAog
ICAgIC8vIFNob3VsZCBiZSBhY2Nlc3NlZCB0aHJvdWdoIGVuc3VyZVByb3BlcnR5VGFibGUoKS4g
RHVyaW5nIEdDLCBpdCBtYXkgYmUgc2V0IHRvIDAgYnkgYW5vdGhlciB0aHJlYWQuCiAgICAgLy8g
RHVyaW5nIGEgSGVhcCBTbmFwc2hvdCBHQyB3ZSBhdm9pZCBjbGVhcmluZyB0aGUgdGFibGUgc28g
aXQgaXMgc2FmZSB0byB1c2UuCi0gICAgV3JpdGVCYXJyaWVyPFByb3BlcnR5VGFibGU+IG1fcHJv
cGVydHlUYWJsZVVuc2FmZTsKKyAgICBXcml0ZUJhcnJpZXI8UHJvcGVydHlUYWJsZT4gbV9wcm9w
ZXJ0eVRhYmxlVW5zYWZlOyAgICAgICAgICAgLy8gbWFjT1N8aU9TOiA4IGJ5dGVzCiAKLSAgICBt
dXRhYmxlIElubGluZVdhdGNocG9pbnRTZXQgbV90cmFuc2l0aW9uV2F0Y2hwb2ludFNldDsKKyAg
ICBtdXRhYmxlIElubGluZVdhdGNocG9pbnRTZXQgbV90cmFuc2l0aW9uV2F0Y2hwb2ludFNldDsg
ICAgICAgLy8gbWFjT1N8aU9TOiA4IGJ5dGVzCiAKICAgICBzdGF0aWNfYXNzZXJ0KGZpcnN0T3V0
T2ZMaW5lT2Zmc2V0IDwgMjU2KTsKIAotICAgIHVpbnQxNl90IG1fdHJhbnNpdGlvbk9mZnNldDsK
LSAgICB1aW50MTZfdCBtX21heE9mZnNldDsKLQotICAgIHVpbnQzMl90IG1fcHJvcGVydHlIYXNo
OwotICAgIFRpbnlCbG9vbUZpbHRlciBtX3NlZW5Qcm9wZXJ0aWVzOworICAgIHVpbnQzMl90IG1f
cHJvcGVydHlIYXNoOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBtYWNP
U3xpT1M6IDQgYnl0ZXMKKyAgICBDb21wYWN0Qmxvb21GaWx0ZXIgbV9zZWVuUHJvcGVydGllczsg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gbWFjT1M6IDggYnl0ZXMsIGlPUzogNCBieXRlcwog
CiAgICAgZnJpZW5kIGNsYXNzIFZNSW5zcGVjdG9yOwogICAgIGZyaWVuZCBjbGFzcyBKU0RvbGxh
clZNSGVscGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
dWN0dXJlSURCbG9iLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJ
REJsb2IuaAppbmRleCBkNGFjMTUyOTE4NTRmNGM3OTcwODBlYjkxYzlhZGYzOWJiOGM3ZDViLi5i
ZjY3MDU4ZGE1NWE0YzllNDE0ODJhYzBhNzc3MDVkODVmYTMxNTQ1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJREJsb2IuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJREJsb2IuaApAQCAtMzcsMTggKzM3LDE2
IEBAIGNsYXNzIFN0cnVjdHVyZUlEQmxvYiB7CiBwdWJsaWM6CiAgICAgU3RydWN0dXJlSURCbG9i
KCkgPSBkZWZhdWx0OwogCi0gICAgU3RydWN0dXJlSURCbG9iKFN0cnVjdHVyZUlEIHN0cnVjdHVy
ZUlELCBJbmRleGluZ1R5cGUgaW5kZXhpbmdNb2RlSW5jbHVkaW5nSGlzdG9yeSwgY29uc3QgVHlw
ZUluZm8mIHR5cGVJbmZvKQorICAgIFN0cnVjdHVyZUlEQmxvYihJbmRleGluZ1R5cGUgaW5kZXhp
bmdNb2RlSW5jbHVkaW5nSGlzdG9yeSwgY29uc3QgVHlwZUluZm8mIHR5cGVJbmZvKQogICAgIHsK
LSAgICAgICAgdS5maWVsZHMuc3RydWN0dXJlSUQgPSBzdHJ1Y3R1cmVJRDsKICAgICAgICAgdS5m
aWVsZHMuaW5kZXhpbmdNb2RlSW5jbHVkaW5nSGlzdG9yeSA9IGluZGV4aW5nTW9kZUluY2x1ZGlu
Z0hpc3Rvcnk7CiAgICAgICAgIHUuZmllbGRzLnR5cGUgPSB0eXBlSW5mby50eXBlKCk7CiAgICAg
ICAgIHUuZmllbGRzLmlubGluZVR5cGVGbGFncyA9IHR5cGVJbmZvLmlubGluZVR5cGVGbGFncygp
OwogICAgICAgICB1LmZpZWxkcy5kZWZhdWx0Q2VsbFN0YXRlID0gQ2VsbFN0YXRlOjpEZWZpbml0
ZWx5V2hpdGU7CiAgICAgfQogCi0gICAgdm9pZCBvcGVyYXRvcj0oY29uc3QgU3RydWN0dXJlSURC
bG9iJiBvdGhlcikgeyB1LmRvdWJsZVdvcmQgPSBvdGhlci51LmRvdWJsZVdvcmQ7IH0KLSAgICAK
LSAgICBTdHJ1Y3R1cmVJRCBzdHJ1Y3R1cmVJRCgpIGNvbnN0IHsgcmV0dXJuIHUuZmllbGRzLnN0
cnVjdHVyZUlEOyB9CisgICAgdm9pZCBvcGVyYXRvcj0oY29uc3QgU3RydWN0dXJlSURCbG9iJiBv
dGhlcikgeyB1LndvcmQyID0gb3RoZXIudS53b3JkMjsgfQorCiAgICAgSW5kZXhpbmdUeXBlIGlu
ZGV4aW5nTW9kZUluY2x1ZGluZ0hpc3RvcnkoKSBjb25zdCB7IHJldHVybiB1LmZpZWxkcy5pbmRl
eGluZ01vZGVJbmNsdWRpbmdIaXN0b3J5OyB9CiAgICAgRGVwZW5kZW5jeSBmZW5jZWRJbmRleGlu
Z01vZGVJbmNsdWRpbmdIaXN0b3J5KEluZGV4aW5nVHlwZSYgaW5kZXhpbmdUeXBlKQogICAgIHsK
QEAgLTYwLDEzICs1OCw4IEBAIHB1YmxpYzoKICAgICAKICAgICBUeXBlSW5mbyB0eXBlSW5mbyhU
eXBlSW5mbzo6T3V0T2ZMaW5lVHlwZUZsYWdzIG91dE9mTGluZVR5cGVGbGFncykgY29uc3QgeyBy
ZXR1cm4gVHlwZUluZm8odHlwZSgpLCBpbmxpbmVUeXBlRmxhZ3MoKSwgb3V0T2ZMaW5lVHlwZUZs
YWdzKTsgfQogICAgIAotICAgIGludDMyX3QgYmxvYkV4Y2x1ZGluZ1N0cnVjdHVyZUlEKCkgY29u
c3QgeyByZXR1cm4gdS53b3Jkcy53b3JkMjsgfQotICAgIGludDY0X3QgYmxvYigpIGNvbnN0IHsg
cmV0dXJuIHUuZG91YmxlV29yZDsgfQotICAgIAotICAgIHN0YXRpYyBwdHJkaWZmX3Qgc3RydWN0
dXJlSURPZmZzZXQoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihTdHJ1
Y3R1cmVJREJsb2IsIHUuZmllbGRzLnN0cnVjdHVyZUlEKTsKLSAgICB9CisgICAgaW50MzJfdCBi
bG9iRXhjbHVkaW5nU3RydWN0dXJlSUQoKSBjb25zdCB7IHJldHVybiB1LndvcmQxOyB9CisgICAg
aW50MzJfdCBibG9iKCkgY29uc3QgeyByZXR1cm4gdS53b3JkMjsgfQogCiAgICAgc3RhdGljIHB0
cmRpZmZfdCBpbmRleGluZ01vZGVJbmNsdWRpbmdIaXN0b3J5T2Zmc2V0KCkKICAgICB7CkBAIC03
NiwyMCArNjksMTUgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB1bmlvbiBEYXRhIHsKICAgICAg
ICAgc3RydWN0IHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgcmVtb3ZlIHRoaXMg
c2luY2UgdGhlIHN0cnVjdHVyZUlEIGNhbiBiZSBkaXJlY3RseSBjb21wdXRlZCBmcm9tIHRoZSBT
dHJ1Y3R1cmUqCi0gICAgICAgICAgICBTdHJ1Y3R1cmVJRCBzdHJ1Y3R1cmVJRDsKICAgICAgICAg
ICAgIEluZGV4aW5nVHlwZSBpbmRleGluZ01vZGVJbmNsdWRpbmdIaXN0b3J5OwogICAgICAgICAg
ICAgSlNUeXBlIHR5cGU7CiAgICAgICAgICAgICBUeXBlSW5mbzo6SW5saW5lVHlwZUZsYWdzIGlu
bGluZVR5cGVGbGFnczsKICAgICAgICAgICAgIENlbGxTdGF0ZSBkZWZhdWx0Q2VsbFN0YXRlOwog
ICAgICAgICB9IGZpZWxkczsKLSAgICAgICAgc3RydWN0IHsKLSAgICAgICAgICAgIGludDMyX3Qg
d29yZDE7Ci0gICAgICAgICAgICBpbnQzMl90IHdvcmQyOwotICAgICAgICB9IHdvcmRzOwotICAg
ICAgICBpbnQ2NF90IGRvdWJsZVdvcmQ7CisgICAgICAgIGludDMyX3Qgd29yZDE7CisgICAgICAg
IGludDMyX3Qgd29yZDI7CiAKLSAgICAgICAgRGF0YSgpIHsgZG91YmxlV29yZCA9IDB4YmJhZGJl
ZWY7IH0KKyAgICAgICAgRGF0YSgpIHsgd29yZDIgPSAweGJiYWRiZWVmOyB9CiAgICAgfTsKIAog
ICAgIERhdGEgdTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dl
YkFzc2VtYmx5RnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2Vi
QXNzZW1ibHlGdW5jdGlvbi5jcHAKaW5kZXggYzRkMmI5NmMyOTMwNzE1NTFmOTZiOGZhNGRjZWFm
NTA5NWEwOWI5NS4uNDRiNjkyYjdlZTUyOWYzOTFkY2QyNWVkOThmYzdkMjZkZjcxNWQxNiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlv
bi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5j
dGlvbi5jcHAKQEAgLTI2OCw3ICsyNjgsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRy
eVB0clRhZz4gV2ViQXNzZW1ibHlGdW5jdGlvbjo6anNDYWxsRW50cnlwb2ludFNsb3coKQogCiAg
ICAgICAgICAgICAgICAgc3RhY2tMaW1pdEdQUklzQ2xvYmJlcmVkID0gdHJ1ZTsKICAgICAgICAg
ICAgICAgICBqaXQuZW1pdExvYWRTdHJ1Y3R1cmUodm0sIHNjcmF0Y2hHUFIsIHNjcmF0Y2hHUFIp
OwotICAgICAgICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhzY3Jh
dGNoR1BSLCBTdHJ1Y3R1cmU6OmNsYXNzSW5mb09mZnNldCgpKSwgc2NyYXRjaEdQUik7CisgICAg
ICAgICAgICAgICAgaml0LmxvYWRDb21wYWN0UHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhzY3Jh
dGNoR1BSLCBTdHJ1Y3R1cmU6OmNsYXNzSW5mb09mZnNldCgpKSwgc2NyYXRjaEdQUik7CiAKICAg
ICAgICAgICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfZmluYWw8V2ViQXNzZW1ibHlGdW5j
dGlvbj46OnZhbHVlLCAiV2UgZG8gbm90IGNoZWNrIGZvciBzdWJ0eXBlcyBiZWxvdyIpOwogICAg
ICAgICAgICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19maW5hbDxXZWJBc3NlbWJseVdyYXBw
ZXJGdW5jdGlvbj46OnZhbHVlLCAiV2UgZG8gbm90IGNoZWNrIGZvciBzdWJ0eXBlcyBiZWxvdyIp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggODgxOTIwZGMy
ZWZiNTA0NDEwNmQ1YWE1NDljNTI3ZDA0MDcwYWQxMy4uNTExNzIzM2YwMjI5ZDQ3OWNiOTlhZmYz
MjgwODBhMjJkYmQ1NGFiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC04MTEsNiArODExLDggQEAKIAkJRkUzNUQwOTIyN0RDNUVDQzAwOURGQTVCIC8qIFN0
YWNrQ2hlY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRkUzNUQwOTEyN0RDNUVDQzAwOURGQTVCIC8qIFN0YWNrQ2hlY2suY3BwICovOyB9OwogCQlG
RURBQ0QzRDE2MzBGODNGMDBDNjk2MzQgLyogU3RhY2tTdGF0cy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRURBQ0QzQjE2MzBGODNGMDBDNjk2MzQg
LyogU3RhY2tTdGF0cy5jcHAgKi87IH07CiAJCUZFRUE0REY5MjE2RDdCRTQwMEFDMDYwMiAvKiBT
dGFja1BvaW50ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRkVFQTRERjgyMTZEN0JFNDAwQUMwNjAyIC8qIFN0YWNrUG9pbnRlci5jcHAgKi87IH07
CisJCUZGODk1RjExMjgyQUI5NjQwMEU3QkFFOCAvKiBDb21wYWN0UmVmUHRyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRjg5NUYxMDI4MkFCOTY0MDBF
N0JBRTggLyogQ29tcGFjdFJlZlB0ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCUZGRUU0NkY0MjgyNURGODAwMDNCQzk4MSAvKiBDb21wYWN0UHRy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRkVFNDZG
MzI4MjVERjgwMDAzQkM5ODEgLyogQ29tcGFjdFB0ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8K
IAogLyogQmVnaW4gUEJYQnVpbGRSdWxlIHNlY3Rpb24gKi8KQEAgLTE3MTQsNiArMTcxNiw4IEBA
CiAJCUZFRUE0REY4MjE2RDdCRTQwMEFDMDYwMiAvKiBTdGFja1BvaW50ZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RhY2tQb2ludGVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVGMjk1QkYyMEI0OURDQjAwQ0YyODNBIC8qIFVURjhDb252
ZXJzaW9uRXJyb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVVRGOENvbnZl
cnNpb25FcnJvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRjBBNDM2NTg4OTU0
RjNDQjA3REJFQ0EgLyogU3RkTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTdGRMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZGODk1RjEwMjgyQUI5
NjQwMEU3QkFFOCAvKiBDb21wYWN0UmVmUHRyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IENvbXBhY3RSZWZQdHIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkZF
RTQ2RjMyODI1REY4MDAwM0JDOTgxIC8qIENvbXBhY3RQdHIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQ29tcGFjdFB0ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
LyogRW5kIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhGcmFtZXdv
cmtzQnVpbGRQaGFzZSBzZWN0aW9uICovCkBAIC0xOTMwLDYgKzE5MzQsOCBAQAogCQkJCTBGNjZC
MjgxMURDOTdCQUIwMDRBMUQzRiAvKiBDbG9ja1R5cGUuaCAqLywKIAkJCQkwRkM0RURFNTE2OTYx
NDk2MDBGNjUwNDEgLyogQ29tbWFQcmludGVyLmggKi8sCiAJCQkJRTNDRjc2OTAyMTE1RDZCQTAw
OTFERTQ4IC8qIENvbXBhY3RQb2ludGVyVHVwbGUuaCAqLywKKwkJCQlGRkVFNDZGMzI4MjVERjgw
MDAzQkM5ODEgLyogQ29tcGFjdFB0ci5oICovLAorCQkJCUZGODk1RjEwMjgyQUI5NjQwMEU3QkFF
OCAvKiBDb21wYWN0UmVmUHRyLmggKi8sCiAJCQkJRTM4MDIwREIyNDAxQzA5MzAwMzdDQTlFIC8q
IENvbXBhY3RSZWZQdHJUdXBsZS5oICovLAogCQkJCTlCOTZFOUIzMjRGRjc3QjgwMDE3NTZDMyAv
KiBDb21wYWN0VW5pcXVlUHRyVHVwbGUuaCAqLywKIAkJCQkwRjhGMkI4RjE3MkUwMEYwMDA3REJE
QTUgLyogQ29tcGlsYXRpb25UaHJlYWQuY3BwICovLApAQCAtMjg2MSw2ICsyODY3LDggQEAKIAkJ
CQlEREYzMDdGNDI3QzA4NkVBMDA2QTUyNkYgLyogQ29sbGF0b3IuaCBpbiBIZWFkZXJzICovLAog
CQkJCUREM0RDOTE2MjdBNEJGOEUwMDdFNUI2MSAvKiBDb21tYVByaW50ZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUREM0RDOEY2MjdBNEJGOEUwMDdFNUI2MSAvKiBDb21wYWN0UG9pbnRlclR1cGxl
LmggaW4gSGVhZGVycyAqLywKKwkJCQlGRkVFNDZGNDI4MjVERjgwMDAzQkM5ODEgLyogQ29tcGFj
dFB0ci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkY4OTVGMTEyODJBQjk2NDAwRTdCQUU4IC8qIENv
bXBhY3RSZWZQdHIuaCBpbiBIZWFkZXJzICovLAogCQkJCUREM0RDOTM5MjdBNEJGOEUwMDdFNUI2
MSAvKiBDb21wYWN0UmVmUHRyVHVwbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUREM0RDOTM1MjdB
NEJGOEUwMDdFNUI2MSAvKiBDb21wYWN0VW5pcXVlUHRyVHVwbGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCUREM0RDOTA3MjdBNEJGOEUwMDdFNUI2MSAvKiBDb21waWxhdGlvblRocmVhZC5oIGluIEhl
YWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dCBiL1Nv
dXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CmluZGV4IDdlZDBjNjViZjcwMjUxMDBiNTkyNTA3
NTdlNjczNjI2YzZjYmU0YTIuLmRhNjE1MTYzOWE3MDdiZWFlZjhhM2UzMzNhMmEwNzYxNzc0ZjQ2
N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJj
ZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CkBAIC0zNSw2ICszNSw4IEBAIHNldChXVEZfUFVCTElD
X0hFQURFUlMKICAgICBDbG9ja1R5cGUuaAogICAgIENvbW1hUHJpbnRlci5oCiAgICAgQ29tcGFj
dFBvaW50ZXJUdXBsZS5oCisgICAgQ29tcGFjdFB0ci5oCisgICAgQ29tcGFjdFJlZlB0ci5oCiAg
ICAgQ29tcGFjdFJlZlB0clR1cGxlLmgKICAgICBDb21wYWN0VW5pcXVlUHRyVHVwbGUuaAogICAg
IENvbXBpbGF0aW9uVGhyZWFkLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0NvbXBhY3RQ
dHIuaCBiL1NvdXJjZS9XVEYvd3RmL0NvbXBhY3RQdHIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45OWJlM2YxOTlk
YmMxNDViYTgxYWNlODM0ZmJmYmYxOTczYjNmYWEyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dURi93dGYvQ29tcGFjdFB0ci5oCkBAIC0wLDAgKzEsMTQxIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3
dGYvQ29tcGFjdFJlZlB0ci5oPgorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGUgPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIFRyYWl0cyA9IENvbXBhY3RQdHJUcmFpdHM8VD4+CitjbGFzcyBDb21w
YWN0UHRyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKworcHVibGljOgorICAgIEFM
V0FZU19JTkxJTkUgY29uc3RleHByIENvbXBhY3RQdHIoKQorICAgICAgICA6IG1fcHRyKG51bGxw
dHIpCisgICAgeworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgY29uc3RleHByIENvbXBhY3RQ
dHIoc3RkOjpudWxscHRyX3QpCisgICAgICAgIDogbV9wdHIobnVsbHB0cikKKyAgICB7CisgICAg
fQorCisgICAgQUxXQVlTX0lOTElORSBDb21wYWN0UHRyKFQqIHB0cikKKyAgICAgICAgOiBtX3B0
cihwdHIpCisgICAgeworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgQ29tcGFjdFB0cihjb25z
dCBDb21wYWN0UHRyJiBvKQorICAgICAgICA6IG1fcHRyKG8ubV9wdHIpCisgICAgeworICAgIH0K
KworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBYLCB0eXBlbmFtZSBZPgorICAgIEFMV0FZU19JTkxJ
TkUgQ29tcGFjdFB0cihjb25zdCBDb21wYWN0UHRyPFgsIFk+JiBvKQorICAgICAgICA6IG1fcHRy
KG8uZ2V0KCkpCisgICAgeworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgQ29tcGFjdFB0cihD
b21wYWN0UHRyJiYgbykKKyAgICAgICAgOiBtX3B0cihvLm1fcHRyKQorICAgIHsKKyAgICB9CisK
KyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgWCwgdHlwZW5hbWUgWT4KKyAgICBBTFdBWVNfSU5MSU5F
IENvbXBhY3RQdHIoQ29tcGFjdFB0cjxYLCBZPiYmIG8pCisgICAgICAgIDogbV9wdHIoby5nZXQo
KSkKKyAgICB7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB+Q29tcGFjdFB0cigpID0gZGVm
YXVsdDsKKworICAgIFQmIG9wZXJhdG9yKigpIGNvbnN0CisgICAgeworICAgICAgICBUKiBwdHIg
PSBUcmFpdHM6OnVud3JhcChtX3B0cik7CisgICAgICAgIEFTU0VSVChwdHIpOworICAgICAgICBy
ZXR1cm4gKnB0cjsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIFQqIG9wZXJhdG9yLT4oKSBj
b25zdCB7IHJldHVybiBUcmFpdHM6OnVud3JhcChtX3B0cik7IH0KKworICAgIGJvb2wgb3BlcmF0
b3IhKCkgY29uc3QgeyByZXR1cm4gIW1fcHRyOyB9CisKKyAgICBleHBsaWNpdCBvcGVyYXRvciBi
b29sKCkgY29uc3QgeyByZXR1cm4gISFtX3B0cjsgfQorCisgICAgQ29tcGFjdFB0cjxUPiYgb3Bl
cmF0b3I9KHN0ZDo6bnVsbHB0cl90KQorICAgIHsKKyAgICAgICAgVHJhaXRzOjpleGNoYW5nZSht
X3B0ciwgbnVsbHB0cik7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKKyAgICBDb21w
YWN0UHRyPFQ+JiBvcGVyYXRvcj0oY29uc3QgQ29tcGFjdFB0ciYgbykKKyAgICB7CisgICAgICAg
IG1fcHRyID0gby5tX3B0cjsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKworICAgIENv
bXBhY3RQdHI8VD4mIG9wZXJhdG9yPShUKiBvcHRyKQorICAgIHsKKyAgICAgICAgQ29tcGFjdFB0
ciBjb3B5ID0gb3B0cjsKKyAgICAgICAgVHJhaXRzOjpzd2FwKG1fcHRyLCBjb3B5Lm1fcHRyKTsK
KyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBY
LCB0eXBlbmFtZSBZPgorICAgIENvbXBhY3RQdHI8VD4mIG9wZXJhdG9yPShjb25zdCBDb21wYWN0
UHRyPFgsIFk+JiBvKQorICAgIHsKKyAgICAgICAgQ29tcGFjdFB0ciBjb3B5ID0gbzsKKyAgICAg
ICAgVHJhaXRzOjpzd2FwKG1fcHRyLCBjb3B5Lm1fcHRyKTsKKyAgICAgICAgcmV0dXJuICp0aGlz
OworICAgIH0KKworICAgIENvbXBhY3RQdHI8VD4mIG9wZXJhdG9yPShDb21wYWN0UHRyJiYgbykK
KyAgICB7CisgICAgICAgIG1fcHRyID0gby5tX3B0cjsKKyAgICAgICAgcmV0dXJuICp0aGlzOwor
ICAgIH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBYLCB0eXBlbmFtZSBZPgorICAgIENvbXBh
Y3RQdHI8VD4mIG9wZXJhdG9yPShDb21wYWN0UHRyPFgsIFk+JiYgbykKKyAgICB7CisgICAgICAg
IENvbXBhY3RQdHIgY29weSA9IG87CisgICAgICAgIFRyYWl0czo6c3dhcChtX3B0ciwgY29weS5t
X3B0cik7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKKyAgICBUKiBnZXQoKSBjb25z
dCB7IHJldHVybiBUcmFpdHM6OnVud3JhcChtX3B0cik7IH0KKworcHJpdmF0ZToKKyAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgWCwgdHlwZW5hbWUgWT4KKyAgICBmcmllbmQgY2xhc3MgQ29tcGFjdFB0
cjsKKworICAgIHR5cGVuYW1lIFRyYWl0czo6U3RvcmFnZVR5cGUgbV9wdHI7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXVEYKKwordXNpbmcgV1RGOjpDb21wYWN0UHRyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvQ29tcGFjdFJlZlB0ci5oIGIvU291cmNlL1dURi93dGYvQ29tcGFjdFJlZlB0
ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmY2NzVlMjg2ZjEzMDc2MDE2NjcwOTlmOTZiNWY3MjViMzdmNTYwZGEK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Db21wYWN0UmVmUHRyLmgKQEAgLTAs
MCArMSwxODUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPGNzdGRpbnQ+CisjaW5jbHVkZSA8dXRpbGl0eT4K
KyNpbmNsdWRlIDx3dGYvUmF3UHRyVHJhaXRzLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgor
I2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBs
YXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgQ29tcGFjdGVkIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKKworcHVibGljOgorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgLy8gc3Rh
dGljX2Fzc2VydChNQUNIX1ZNX01BWF9BRERSRVNTIDw9ICgxdWxsIDw8IDM2KSk7CisgICAgdXNp
bmcgU3RvcmFnZVNpemUgPSB1aW50MzJfdDsKKyNlbHNlCisgICAgdXNpbmcgU3RvcmFnZVNpemUg
PSB1aW50cHRyX3Q7CisjZW5kaWYKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNDb21wYWN0
ZWRUeXBlID0gdHJ1ZTsKKworICAgIENvbXBhY3RlZCgpCisgICAgeworICAgICAgICBzZXQobnVs
bHB0cik7CisgICAgfQorCisgICAgQ29tcGFjdGVkKG51bGxwdHJfdCkKKyAgICB7CisgICAgICAg
IHNldChudWxscHRyKTsKKyAgICB9CisKKyAgICBDb21wYWN0ZWQoVCogcHRyKQorICAgIHsKKyAg
ICAgICAgc2V0KHB0cik7CisgICAgfQorCisgICAgQ29tcGFjdGVkPFQ+JiBvcGVyYXRvcj0oVCog
cHRyKQorICAgIHsKKyAgICAgICAgc2V0KHB0cik7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAg
ICB9CisKKyAgICBUKiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gZ2V0KCk7IH0KKworICAg
IFQmIG9wZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuICpnZXQoKTsgfQorCisgICAgYm9vbCBvcGVy
YXRvciEoKSBjb25zdCB7IHJldHVybiAhZ2V0KCk7IH0KKworICAgIGV4cGxpY2l0IG9wZXJhdG9y
IGJvb2woKSBjb25zdCB7IHJldHVybiAhIWdldCgpOyB9CisKKyAgICBUKiBnZXQoKSBjb25zdAor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGRlY29kZShtX3B0cik7CisgICAgfQorCisgICAgdm9pZCBz
ZXQoVCogcHRyKQorICAgIHsKKyAgICAgICAgbV9wdHIgPSBlbmNvZGUocHRyKTsKKyAgICB9CisK
KyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVT4KKyAgICBUKiBleGNoYW5nZShVJiYgbmV3VmFsdWUpCisg
ICAgeworICAgICAgICBUKiBvbGRWYWx1ZSA9IGdldCgpOworICAgICAgICBzZXQoc3RkOjpmb3J3
YXJkPFU+KG5ld1ZhbHVlKSk7CisgICAgICAgIHJldHVybiBvbGRWYWx1ZTsKKyAgICB9CisKKyAg
ICB2b2lkIHN3YXAobnVsbHB0cl90KSB7IHNldChudWxscHRyKTsgfQorCisgICAgdm9pZCBzd2Fw
KENvbXBhY3RlZCYgb3RoZXIpCisgICAgeworICAgICAgICBUKiB0MSA9IGdldCgpOworICAgICAg
ICBUKiB0MiA9IG90aGVyLmdldCgpOworICAgICAgICBzZXQodDIpOworICAgICAgICBvdGhlci5z
ZXQodDEpOworICAgIH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBPdGhlciwgdHlwZW5hbWUg
PSBzdGQ6OmVuYWJsZV9pZl90PE90aGVyOjppc0NvbXBhY3RlZFR5cGU+PgorICAgIHZvaWQgc3dh
cChPdGhlciYgb3RoZXIpCisgICAgeworICAgICAgICBUKiB0MSA9IGdldCgpOworICAgICAgICBU
KiB0MiA9IG90aGVyLmdldCgpOworICAgICAgICBzZXQodDIpOworICAgICAgICBvdGhlci5zZXQo
dDEpOworICAgIH0KKworICAgIHZvaWQgc3dhcChUKiB0MikKKyAgICB7CisgICAgICAgIFQqIHQx
ID0gZ2V0KCk7CisgICAgICAgIHN0ZDo6c3dhcCh0MSwgdDIpOworICAgICAgICBzZXQodDEpOwor
ICAgIH0KKworICAgIHN0YXRpYyBBTFdBWVNfSU5MSU5FIGNvbnN0ZXhwciBTdG9yYWdlU2l6ZSBl
bmNvZGUodWludHB0cl90IHB0cikKKyAgICB7CisgICAgICAgIEFTU0VSVCghcHRyICYgMHhGKTsK
KyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U3Rv
cmFnZVNpemU+KHB0ciA+PiA0KTsKKyNlbHNlCisgICAgICAgIHJldHVybiBwdHI7CisjZW5kaWYK
KyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIGNvbnN0ZXhwciBTdG9yYWdlU2l6ZSBlbmNvZGUo
VCogcHRyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGVuY29kZShyZWludGVycHJldF9j
YXN0PHVpbnRwdHJfdD4ocHRyKSk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSBjb25zdGV4
cHIgVCogZGVjb2RlKGNvbnN0IFN0b3JhZ2VTaXplJiBwdHIpIGNvbnN0CisgICAgeworI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFQqPihz
dGF0aWNfY2FzdDx1aW50cHRyX3Q+KHB0cikgPDwgNCk7CisjZWxzZQorICAgICAgICByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDxUKj4ocHRyKTsKKyNlbmRpZgorICAgIH0KKworcHJpdmF0ZToKKyAg
ICBTdG9yYWdlU2l6ZSBtX3B0cjsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RydWN0
IEdldFB0ckhlbHBlcjxDb21wYWN0ZWQ8VD4+IHsKKyAgICB1c2luZyBQdHJUeXBlID0gVCo7Cisg
ICAgc3RhdGljIFQqIGdldFB0cihjb25zdCBDb21wYWN0ZWQ8VD4mIHApIHsgcmV0dXJuIGNvbnN0
X2Nhc3Q8VCo+KHAuZ2V0KCkpOyB9Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVj
dCBJc1NtYXJ0UHRyPENvbXBhY3RlZDxUPj4geworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCB2
YWx1ZSA9IHRydWU7Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBDb21wYWN0
UHRyVHJhaXRzIHsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4KKyAgICB1c2luZyBSZWJpbmRU
cmFpdHMgPSBSYXdQdHJUcmFpdHM8VT47CisKKyAgICB1c2luZyBTdG9yYWdlVHlwZSA9IENvbXBh
Y3RlZDxUPjsKKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBVPgorICAgIHN0YXRpYyBBTFdBWVNf
SU5MSU5FIFQqIGV4Y2hhbmdlKFN0b3JhZ2VUeXBlJiBwdHIsIFUmJiBuZXdWYWx1ZSkgeyByZXR1
cm4gcHRyLmV4Y2hhbmdlKG5ld1ZhbHVlKTsgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIE90
aGVyPgorICAgIHN0YXRpYyBBTFdBWVNfSU5MSU5FIHZvaWQgc3dhcChTdG9yYWdlVHlwZSYgYSwg
T3RoZXImIGIpIHsgYS5zd2FwKGIpOyB9CisKKyAgICBzdGF0aWMgQUxXQVlTX0lOTElORSBUKiB1
bndyYXAoY29uc3QgU3RvcmFnZVR5cGUmIHB0cikgeyByZXR1cm4gcHRyLmdldCgpOyB9CisKKyAg
ICBzdGF0aWMgU3RvcmFnZVR5cGUgaGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgeyByZXR1cm4gYml0
d2lzZV9jYXN0PFN0b3JhZ2VUeXBlPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KC0xKSk7IH0KKyAg
ICBzdGF0aWMgQUxXQVlTX0lOTElORSBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKGNvbnN0
IFN0b3JhZ2VUeXBlJiBwdHIpIHsgcmV0dXJuIHB0ciA9PSBoYXNoVGFibGVEZWxldGVkVmFsdWUo
KTsgfQorfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cit1c2luZyBDb21wYWN0UmVmUHRyID0g
UmVmUHRyPFQsIENvbXBhY3RQdHJUcmFpdHM8VD4+OworCit9IC8vIG5hbWVzcGFjZSBXVEYKKwor
dXNpbmcgV1RGOjpDb21wYWN0UmVmUHRyOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIv
VG9vbHMvQ2hhbmdlTG9nCmluZGV4IDMxMWQ2ZDFmMWZkY2FlYTkyZGNjZmNiNjIwZDE1NWI4Yjcy
Nzk3ZGMuLjk1NWM1ZjkzM2JjYjY3ODJiNzc5ZDIzYzBiZGE3ZDBlODFjODJjNTEgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBA
QAorMjAyMi0wNS0xNiAgWWlqaWEgSHVhbmcgIDx5aWppYV9odWFuZ0BhcHBsZS5jb20+CisKKyAg
ICAgICAgUkVHUkVTU0lPTiAocjI4NTk1NSk6IDIlIHJlZ3Jlc3Npb24gb24gUkFNaWZpY2F0aW9u
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDA0MDcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2Vi
S2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvQ29tcGFjdFB0ci5jcHA6IEFkZGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ29tcGFjdFJlZlB0
ci5jcHA6IEFkZGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpmMSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpDb25zdFJlZkNvdW50
ZWQ6OmNyZWF0ZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpyZXR1cm5Db25zdFJlZkNvdW50
ZWRSZWYpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6cmV0dXJuUmVmQ291bnRlZFJlZik6Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpDb21wYWN0UmVmUHRyQ2hlY2tpbmdSZWZMb2dnZXI6OkNv
bXBhY3RSZWZQdHJDaGVja2luZ1JlZkxvZ2dlcik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjps
b2dnZXJOYW1lKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkNvbXBhY3RSZWZQdHJDaGVja2lu
Z1JlZkxvZ2dlcjo6cmVmKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkNvbXBhY3RSZWZQdHJD
aGVja2luZ1JlZkxvZ2dlcjo6ZGVyZWYpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VGhyZWFk
U2FmZVJlZkNvdW50ZWRPYmplY3Q6OmNyZWF0ZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpU
aHJlYWRTYWZlUmVmQ291bnRlZE9iamVjdDo6flRocmVhZFNhZmVSZWZDb3VudGVkT2JqZWN0KToK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Ok1haW5UaHJlYWRTYWZlUmVmQ291bnRlZE9iamVjdDo6
Y3JlYXRlKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Ok1haW5UaHJlYWRTYWZlUmVmQ291bnRl
ZE9iamVjdDo6fk1haW5UaHJlYWRTYWZlUmVmQ291bnRlZE9iamVjdCk6CisKIDIwMjItMDUtMDUg
IFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CiAKICAgICAgICAgU3VzcGVuZGFibGVX
b3JrUXVldWU6OnN1c3BlbmQgc2hvdWxkIGludm9rZSBjYWxsYmFjayBpbW1lZGlhdGVseSB3aGVu
IHF1ZXVlIGlzIHN1c3BlbmRlZApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFr
ZUxpc3RzLnR4dCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKaW5kZXggM2Uz
OWE0MDZiNTUzOWRkNTdiZmJhMWEwMWQ3ZWVjNzJlOWQ4ZDFhOS4uMzQyOWZkMDkzNzI1Y2U1NDBi
OWM2MmNmYjFhYmM5NmNiMzRhNTIxMiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9D
TWFrZUxpc3RzLnR4dAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CkBA
IC0yOSw2ICsyOSw4IEBAIHNldChUZXN0V1RGX1NPVVJDRVMKICAgICBUZXN0cy9XVEYvQnVtcFBv
aW50ZXJBbGxvY2F0b3IuY3BwCiAgICAgVGVzdHMvV1RGL0NTdHJpbmcuY3BwCiAgICAgVGVzdHMv
V1RGL0NoZWNrZWRBcml0aG1ldGljT3BlcmF0aW9ucy5jcHAKKyAgICBUZXN0cy9XVEYvQ29tcGFj
dFB0ci5jcHAKKyAgICBUZXN0cy9XVEYvQ29tcGFjdFJlZlB0ci5jcHAKICAgICBUZXN0cy9XVEYv
Q29tcGFjdFJlZlB0clR1cGxlLmNwcAogICAgIFRlc3RzL1dURi9Db21wYWN0VW5pcXVlUHRyVHVw
bGUuY3BwCiAgICAgVGVzdHMvV1RGL0NvbmN1cnJlbnRQdHJIYXNoU2V0LmNwcApkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCBkYWRkZWIyOThjZDBiOGZlNzM4MTFiMGIyMjc5ZWNlMDczZDlmMTZk
Li42OGM4Nzg3YWNlMjY3MWVkMDRhMWNhZDVmM2EyMWRjMzE4NmU2YzVkIDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtMTE2NSw2ICsxMTY1LDggQEAKIAkJRkUyRDk0NzQyNDVFQjJGNDAwRTQ4
MTM1IC8qIEJpdG1hcC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGRTJEOTQ3MzI0NUVCMkRGMDBFNDgxMzUgLyogQml0bWFwLmNwcCAqLzsgfTsKIAkJ
RkVDMkE4NTQyNENFOTc1RjAwQURCQzM1IC8qIERpc2FsbG93Vk1FbnRyeS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUMyQTg1MzI0Q0U5NzRFMDBB
REJDMzUgLyogRGlzYWxsb3dWTUVudHJ5LmNwcCAqLzsgfTsKIAkJRkVDMkE4NTYyNENFQjY1RjAw
QURCQzM1IC8qIFByb3BlcnR5U2xvdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGRUMyQTg1NTI0Q0VCNjVGMDBBREJDMzUgLyogUHJvcGVydHlTbG90
LmNwcCAqLzsgfTsKKwkJRkYxMEFBRjkyODMxQjFFNjAwQjk4NzVCIC8qIENvbXBhY3RQdHIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkYxMEFBRjgy
ODMxQjFFNjAwQjk4NzVCIC8qIENvbXBhY3RQdHIuY3BwICovOyB9OworCQlGRjVEMENCNDI4MzIy
MUFEMDBGMzI3OEEgLyogQ29tcGFjdFJlZlB0ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRjVEMENCMzI4MzIyMUFEMDBGMzI3OEEgLyogQ29tcGFj
dFJlZlB0ci5jcHAgKi87IH07CiAvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KIAogLyog
QmVnaW4gUEJYQ29udGFpbmVySXRlbVByb3h5IHNlY3Rpb24gKi8KQEAgLTMyMjksNiArMzIzMSw4
IEBACiAJCUZFQjZGNzRFMUIyQkE0NEUwMDlFNDkyMiAvKiBOYWtlZFB0ci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOYWtlZFB0ci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUZFQzJBODUzMjRDRTk3NEUwMEFEQkMzNSAvKiBEaXNhbGxvd1ZNRW50
cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGlzYWxsb3dWTUVu
dHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVDMkE4NTUyNENFQjY1RjAw
QURCQzM1IC8qIFByb3BlcnR5U2xvdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBQcm9wZXJ0eVNsb3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlG
RjEwQUFGODI4MzFCMUU2MDBCOTg3NUIgLyogQ29tcGFjdFB0ci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb21wYWN0UHRyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJRkY1RDBDQjMyODMyMjFBRDAwRjMyNzhBIC8qIENvbXBhY3RSZWZQdHIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29tcGFjdFJlZlB0ci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAvKiBFbmQgUEJYRmlsZVJlZmVyZW5jZSBzZWN0
aW9uICovCiAKIC8qIEJlZ2luIFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlIHNlY3Rpb24gKi8KQEAg
LTQ2NDcsNiArNDY1MSw4IEBACiAJCQkJQTdBOTY2REExNDBFQ0NDODAwNUVGOUI0IC8qIENoZWNr
ZWRBcml0aG1ldGljT3BlcmF0aW9ucy5jcHAgKi8sCiAJCQkJOUJCQ0E0REUyNjVBQ0E1QjAwREZF
NzIzIC8qIENoZWNrZWRQdHIuY3BwICovLAogCQkJCTlCRjAwMTMyMjY3QzRDNTkwMERDRkIzRiAv
KiBDaGVja2VkUmVmLmNwcCAqLywKKwkJCQlGRjEwQUFGODI4MzFCMUU2MDBCOTg3NUIgLyogQ29t
cGFjdFB0ci5jcHAgKi8sCisJCQkJRkY1RDBDQjMyODMyMjFBRDAwRjMyNzhBIC8qIENvbXBhY3RS
ZWZQdHIuY3BwICovLAogCQkJCUUzMDJCREE5MjQwNEI5MjMwMDg2NTI3NyAvKiBDb21wYWN0UmVm
UHRyVHVwbGUuY3BwICovLAogCQkJCTlCMEMwNTE4MjRGREZCNzAwMEYyRkUzMSAvKiBDb21wYWN0
VW5pcXVlUHRyVHVwbGUuY3BwICovLAogCQkJCTBGMzBDQjVCMUZDRTE3OTIwMDRCNTMyMyAvKiBD
b25jdXJyZW50UHRySGFzaFNldC5jcHAgKi8sCkBAIC01NDQ2LDYgKzU0NTIsOCBAQAogCQkJCTdD
ODNERUEwMUQwQTU5MEMwMEZFQkNGMyAvKiBDaGVja2VkQXJpdGhtZXRpY09wZXJhdGlvbnMuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJOUJCQ0E0REYyNjVBQ0E1QjAwREZFNzIzIC8qIENoZWNrZWRQ
dHIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOUJGMDAxMzMyNjdDNEM1OTAwRENGQjNGIC8qIENo
ZWNrZWRSZWYuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRkYxMEFBRjkyODMxQjFFNjAwQjk4NzVC
IC8qIENvbXBhY3RQdHIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRkY1RDBDQjQyODMyMjFBRDAw
RjMyNzhBIC8qIENvbXBhY3RSZWZQdHIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTMwMkJEQUEy
NDA0QjkyNDAwODY1Mjc3IC8qIENvbXBhY3RSZWZQdHJUdXBsZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk5QjBDMDUxOTI0RkRGQjdEMDBGMkZFMzEgLyogQ29tcGFjdFVuaXF1ZVB0clR1cGxlLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGMzBDQjVDMUZDRTE3OTYwMDRCNTMyMyAvKiBDb25jdXJy
ZW50UHRySGFzaFNldC5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL0NvbXBhY3RQdHIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvQ29tcGFjdFB0ci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDliZjJkMjg4ZjIyZGNiMjhkZWI2
NzZmNjQzMmFlY2ZjZGRkOTg2ZgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL0NvbXBhY3RQdHIuY3BwCkBAIC0wLDAgKzEsMTg3IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiUmVmTG9nZ2VyLmgiCisjaW5jbHVk
ZSAiVXRpbGl0aWVzLmgiCisjaW5jbHVkZSA8d3RmL0NvbXBhY3RQdHIuaD4KKyNpbmNsdWRlIDx3
dGYvTWFpblRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKyNpbmNsdWRl
IDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+
CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworVEVTVChXVEZfQ29tcGFjdFB0ciwgQmFz
aWMpCit7CisgICAgRGVyaXZlZFJlZkxvZ2dlciBhKCJhIik7CisKKyAgICBDb21wYWN0UHRyPFJl
ZkxvZ2dlcj4gZW1wdHk7CisgICAgRVhQRUNUX0VRKG51bGxwdHIsIGVtcHR5LmdldCgpKTsKKwor
ICAgIHsKKyAgICAgICAgQ29tcGFjdFB0cjxSZWZMb2dnZXI+IHB0cigmYSk7CisgICAgICAgIEVY
UEVDVF9FUSgmYSwgcHRyLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCAmKnB0cik7Cisg
ICAgICAgIEVYUEVDVF9FUSgmYS5uYW1lLCAmcHRyLT5uYW1lKTsKKyAgICB9CisKKyAgICB7Cisg
ICAgICAgIENvbXBhY3RQdHI8UmVmTG9nZ2VyPiBwdHIgPSAmYTsKKyAgICAgICAgRVhQRUNUX0VR
KCZhLCBwdHIuZ2V0KCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgQ29tcGFjdFB0cjxSZWZM
b2dnZXI+IHAxID0gJmE7CisgICAgICAgIENvbXBhY3RQdHI8UmVmTG9nZ2VyPiBwMihwMSk7Cisg
ICAgICAgIEVYUEVDVF9FUSgmYSwgcDEuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHAy
LmdldCgpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIENvbXBhY3RQdHI8UmVmTG9nZ2VyPiBw
MSA9ICZhOworICAgICAgICBDb21wYWN0UHRyPFJlZkxvZ2dlcj4gcDIgPSBwMTsKKyAgICAgICAg
RVhQRUNUX0VRKCZhLCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcDIuZ2V0KCkp
OworICAgIH0KKworICAgIHsKKyAgICAgICAgQ29tcGFjdFB0cjxSZWZMb2dnZXI+IHAxID0gJmE7
CisgICAgICAgIENvbXBhY3RQdHI8UmVmTG9nZ2VyPiBwMiA9IFdURk1vdmUocDEpOworICAgICAg
ICBFWFBFQ1RfRVEoJmEsIHAxLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwMi5nZXQo
KSk7CisgICAgfQorCisgICAgeworICAgICAgICBDb21wYWN0UHRyPFJlZkxvZ2dlcj4gcDEgPSAm
YTsKKyAgICAgICAgQ29tcGFjdFB0cjxSZWZMb2dnZXI+IHAyKFdURk1vdmUocDEpKTsKKyAgICAg
ICAgRVhQRUNUX0VRKCZhLCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcDIuZ2V0
KCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgQ29tcGFjdFB0cjxEZXJpdmVkUmVmTG9nZ2Vy
PiBwMSA9ICZhOworICAgICAgICBDb21wYWN0UHRyPFJlZkxvZ2dlcj4gcDIgPSBwMTsKKyAgICAg
ICAgRVhQRUNUX0VRKCZhLCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcDIuZ2V0
KCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgQ29tcGFjdFB0cjxEZXJpdmVkUmVmTG9nZ2Vy
PiBwMSA9ICZhOworICAgICAgICBDb21wYWN0UHRyPFJlZkxvZ2dlcj4gcDIgPSBXVEZNb3ZlKHAx
KTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUSgm
YSwgcDIuZ2V0KCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgQ29tcGFjdFB0cjxSZWZMb2dn
ZXI+IHB0cigmYSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcHRyLmdldCgpKTsKKyAgICAgICAg
cHRyID0gbnVsbHB0cjsKKyAgICAgICAgRVhQRUNUX0VRKG51bGxwdHIsIHB0ci5nZXQoKSk7Cisg
ICAgfQorCisgICAgeworICAgICAgICBDb21wYWN0UHRyPFJlZkxvZ2dlcj4gcHRyKG51bGxwdHIp
OworICAgICAgICBFWFBFQ1RfRVEobnVsbHB0ciwgcHRyLmdldCgpKTsKKyAgICB9CisKKyAgICB7
CisgICAgICAgIENvbXBhY3RQdHI8UmVmTG9nZ2VyPiBwdHIgPSBudWxscHRyOworICAgICAgICBF
WFBFQ1RfRVEobnVsbHB0ciwgcHRyLmdldCgpKTsKKyAgICB9Cit9CisKK1RFU1QoV1RGX0NvbXBh
Y3RQdHIsIEFzc2lnbm1lbnQpCit7CisgICAgRGVyaXZlZFJlZkxvZ2dlciBhKCJhIik7CisgICAg
UmVmTG9nZ2VyIGIoImIiKTsKKyAgICBEZXJpdmVkUmVmTG9nZ2VyIGMoImMiKTsKKworICAgIHsK
KyAgICAgICAgQ29tcGFjdFB0cjxSZWZMb2dnZXI+IHAxID0gJmE7CisgICAgICAgIENvbXBhY3RQ
dHI8UmVmTG9nZ2VyPiBwMiA9ICZiOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHAxLmdldCgpKTsK
KyAgICAgICAgRVhQRUNUX0VRKCZiLCBwMi5nZXQoKSk7CisgICAgICAgIHAxID0gcDI7CisgICAg
ICAgIEVYUEVDVF9FUSgmYiwgcDEuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEoJmIsIHAyLmdl
dCgpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIENvbXBhY3RQdHI8UmVmTG9nZ2VyPiBwdHIo
JmEpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHB0ci5nZXQoKSk7CisgICAgICAgIHB0ciA9ICZi
OworICAgICAgICBFWFBFQ1RfRVEoJmIsIHB0ci5nZXQoKSk7CisgICAgfQorCisgICAgeworICAg
ICAgICBDb21wYWN0UHRyPFJlZkxvZ2dlcj4gcHRyKCZhKTsKKyAgICAgICAgRVhQRUNUX0VRKCZh
LCBwdHIuZ2V0KCkpOworICAgICAgICBwdHIgPSBudWxscHRyOworICAgICAgICBFWFBFQ1RfRVEo
bnVsbHB0ciwgcHRyLmdldCgpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIENvbXBhY3RQdHI8
UmVmTG9nZ2VyPiBwMSA9ICZhOworICAgICAgICBDb21wYWN0UHRyPFJlZkxvZ2dlcj4gcDIgPSAm
YjsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUSgm
YiwgcDIuZ2V0KCkpOworICAgICAgICBwMSA9IFdURk1vdmUocDIpOworICAgICAgICBFWFBFQ1Rf
RVEoJmIsIHAxLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZiLCBwMi5nZXQoKSk7CisgICAg
fQorCisgICAgeworICAgICAgICBDb21wYWN0UHRyPFJlZkxvZ2dlcj4gcDEgPSAmYTsKKyAgICAg
ICAgQ29tcGFjdFB0cjxEZXJpdmVkUmVmTG9nZ2VyPiBwMiA9ICZjOworICAgICAgICBFWFBFQ1Rf
RVEoJmEsIHAxLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZjLCBwMi5nZXQoKSk7CisgICAg
ICAgIHAxID0gcDI7CisgICAgICAgIEVYUEVDVF9FUSgmYywgcDEuZ2V0KCkpOworICAgICAgICBF
WFBFQ1RfRVEoJmMsIHAyLmdldCgpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIENvbXBhY3RQ
dHI8UmVmTG9nZ2VyPiBwMSA9ICZhOworICAgICAgICBDb21wYWN0UHRyPERlcml2ZWRSZWZMb2dn
ZXI+IHAyID0gJmM7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcDEuZ2V0KCkpOworICAgICAgICBF
WFBFQ1RfRVEoJmMsIHAyLmdldCgpKTsKKyAgICAgICAgcDEgPSBXVEZNb3ZlKHAyKTsKKyAgICAg
ICAgRVhQRUNUX0VRKCZjLCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYywgcDIuZ2V0
KCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgQ29tcGFjdFB0cjxSZWZMb2dnZXI+IHB0cigm
YSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcHRyLmdldCgpKTsKKyAgICAgICAgcHRyID0gJmM7
CisgICAgICAgIEVYUEVDVF9FUSgmYywgcHRyLmdldCgpKTsKKyAgICB9Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFRlc3RXZWJLaXRBUEkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL0NvbXBhY3RSZWZQdHIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
Q29tcGFjdFJlZlB0ci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjIwY2Y4Zjc1ZDlmMTIzMjQ4NWU5Yjk1ZThl
ZGQ2YzJjMjg1ZDk1NQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL0NvbXBhY3RSZWZQdHIuY3BwCkBAIC0wLDAgKzEsNTk4IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEzLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJSZWZMb2dnZXIuaCIKKyNpbmNs
dWRlICJVdGlsaXRpZXMuaCIKKyNpbmNsdWRlIDx3dGYvQ29tcGFjdFJlZlB0ci5oPgorI2luY2x1
ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+Cisj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorI2lu
Y2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRp
bmcuaD4KKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitURVNUKFdURl9Db21wYWN0UmVm
UHRyLCBCYXNpYykKK3sKKyAgICBEZXJpdmVkUmVmTG9nZ2VyIGEoImEiKTsKKworICAgIENvbXBh
Y3RSZWZQdHI8UmVmTG9nZ2VyPiBlbXB0eTsKKyAgICBFWFBFQ1RfRVEobnVsbHB0ciwgZW1wdHku
Z2V0KCkpOworCisgICAgeworICAgICAgICBDb21wYWN0UmVmUHRyPFJlZkxvZ2dlcj4gcHRyKCZh
KTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwdHIuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEo
JmEsICYqcHRyKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLm5hbWUsICZwdHItPm5hbWUpOworICAg
IH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19z
dHIoKSk7CisKKyAgICB7CisgICAgICAgIENvbXBhY3RSZWZQdHI8UmVmTG9nZ2VyPiBwdHIgPSAm
YTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwdHIuZ2V0KCkpOworICAgIH0KKyAgICBFWFBFQ1Rf
U1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7
CisgICAgICAgIENvbXBhY3RSZWZQdHI8UmVmTG9nZ2VyPiBwMSA9ICZhOworICAgICAgICBDb21w
YWN0UmVmUHRyPFJlZkxvZ2dlcj4gcDIocDEpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHAxLmdl
dCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwMi5nZXQoKSk7CisgICAgfQorICAgIEVYUEVD
VF9TVFJFUSgicmVmKGEpIHJlZihhKSBkZXJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCku
Y19zdHIoKSk7CisKKyAgICB7CisgICAgICAgIENvbXBhY3RSZWZQdHI8UmVmTG9nZ2VyPiBwMSA9
ICZhOworICAgICAgICBDb21wYWN0UmVmUHRyPFJlZkxvZ2dlcj4gcDIgPSBwMTsKKyAgICAgICAg
RVhQRUNUX0VRKCZhLCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcDIuZ2V0KCkp
OworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSByZWYoYSkgZGVyZWYoYSkgZGVyZWYo
YSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAgeworICAgICAgICBDb21wYWN0UmVm
UHRyPFJlZkxvZ2dlcj4gcDEgPSAmYTsKKyAgICAgICAgQ29tcGFjdFJlZlB0cjxSZWZMb2dnZXI+
IHAyID0gV1RGTW92ZShwMSk7CisgICAgICAgIEVYUEVDVF9FUShudWxscHRyLCBwMS5nZXQoKSk7
CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcDIuZ2V0KCkpOworICAgIH0KKyAgICBFWFBFQ1RfU1RS
RVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7Cisg
ICAgICAgIENvbXBhY3RSZWZQdHI8UmVmTG9nZ2VyPiBwMSA9ICZhOworICAgICAgICBDb21wYWN0
UmVmUHRyPFJlZkxvZ2dlcj4gcDIoV1RGTW92ZShwMSkpOworICAgICAgICBFWFBFQ1RfRVEobnVs
bHB0ciwgcDEuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHAyLmdldCgpKTsKKyAgICB9
CisgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3Ry
KCkpOworCisgICAgeworICAgICAgICBDb21wYWN0UmVmUHRyPERlcml2ZWRSZWZMb2dnZXI+IHAx
ID0gJmE7CisgICAgICAgIENvbXBhY3RSZWZQdHI8UmVmTG9nZ2VyPiBwMiA9IHAxOworICAgICAg
ICBFWFBFQ1RfRVEoJmEsIHAxLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwMi5nZXQo
KSk7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHJlZihhKSBkZXJlZihhKSBkZXJl
ZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7CisgICAgICAgIENvbXBhY3RS
ZWZQdHI8RGVyaXZlZFJlZkxvZ2dlcj4gcDEgPSAmYTsKKyAgICAgICAgQ29tcGFjdFJlZlB0cjxS
ZWZMb2dnZXI+IHAyID0gV1RGTW92ZShwMSk7CisgICAgICAgIEVYUEVDVF9FUShudWxscHRyLCBw
MS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcDIuZ2V0KCkpOworICAgIH0KKyAgICBF
WFBFQ1RfU1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisK
KyAgICB7CisgICAgICAgIENvbXBhY3RSZWZQdHI8UmVmTG9nZ2VyPiBwdHIoJmEpOworICAgICAg
ICBFWFBFQ1RfRVEoJmEsIHB0ci5nZXQoKSk7CisgICAgICAgIHB0ciA9IG51bGxwdHI7CisgICAg
ICAgIEVYUEVDVF9FUShudWxscHRyLCBwdHIuZ2V0KCkpOworICAgIH0KKyAgICBFWFBFQ1RfU1RS
RVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7Cit9CisKK1RFU1Qo
V1RGX0NvbXBhY3RSZWZQdHIsIEFzc2lnblBhc3NSZWZUb0NvbXBhY3RSZWZQdHIpCit7CisgICAg
RGVyaXZlZFJlZkxvZ2dlciBhKCJhIik7CisgICAgeworICAgICAgICBSZWY8UmVmTG9nZ2VyPiBw
YXNzUmVmKGEpOworICAgICAgICBDb21wYWN0UmVmUHRyPFJlZkxvZ2dlcj4gcHRyID0gV1RGTW92
ZShwYXNzUmVmKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwdHIuZ2V0KCkpOworICAgIH0KKyAg
ICBFWFBFQ1RfU1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7
Cit9CisKK1RFU1QoV1RGX0NvbXBhY3RSZWZQdHIsIEFkb3B0KQoreworICAgIERlcml2ZWRSZWZM
b2dnZXIgYSgiYSIpOworCisgICAgQ29tcGFjdFJlZlB0cjxSZWZMb2dnZXI+IGVtcHR5OworICAg
IEVYUEVDVF9FUShudWxscHRyLCBlbXB0eS5nZXQoKSk7CisKKyAgICB7CisgICAgICAgIENvbXBh
Y3RSZWZQdHI8UmVmTG9nZ2VyPiBwdHIoYWRvcHRSZWYoJmEpKTsKKyAgICAgICAgRVhQRUNUX0VR
KCZhLCBwdHIuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEoJmEsICYqcHRyKTsKKyAgICAgICAg
RVhQRUNUX0VRKCZhLm5hbWUsICZwdHItPm5hbWUpOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEo
ImRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKworICAgIHsKKyAgICAgICAgQ29t
cGFjdFJlZlB0cjxSZWZMb2dnZXI+IHB0ciA9IGFkb3B0UmVmKCZhKTsKKyAgICAgICAgRVhQRUNU
X0VRKCZhLCBwdHIuZ2V0KCkpOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoImRlcmVmKGEpICIs
IHRha2VMb2dTdHIoKS5jX3N0cigpKTsKK30KKworVEVTVChXVEZfQ29tcGFjdFJlZlB0ciwgQXNz
aWdubWVudCkKK3sKKyAgICBEZXJpdmVkUmVmTG9nZ2VyIGEoImEiKTsKKyAgICBSZWZMb2dnZXIg
YigiYiIpOworICAgIERlcml2ZWRSZWZMb2dnZXIgYygiYyIpOworCisgICAgeworICAgICAgICBD
b21wYWN0UmVmUHRyPFJlZkxvZ2dlcj4gcDEoJmEpOworICAgICAgICBDb21wYWN0UmVmUHRyPFJl
ZkxvZ2dlcj4gcDIoJmIpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHAxLmdldCgpKTsKKyAgICAg
ICAgRVhQRUNUX0VRKCZiLCBwMi5nZXQoKSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAg
ICAgIHAxID0gcDI7CisgICAgICAgIEVYUEVDVF9FUSgmYiwgcDEuZ2V0KCkpOworICAgICAgICBF
WFBFQ1RfRVEoJmIsIHAyLmdldCgpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICB9Cisg
ICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgcmVmKGIpIHwgcmVmKGIpIGRlcmVmKGEpIHwgZGVyZWYo
YikgZGVyZWYoYikgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAgeworICAgICAgICBD
b21wYWN0UmVmUHRyPFJlZkxvZ2dlcj4gcHRyKCZhKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBw
dHIuZ2V0KCkpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAgICAgICBwdHIgPSAmYjsKKyAg
ICAgICAgRVhQRUNUX0VRKCZiLCBwdHIuZ2V0KCkpOworICAgICAgICBsb2coKSA8PCAifCAiOwor
ICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSB8IHJlZihiKSBkZXJlZihhKSB8IGRlcmVm
KGIpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKworICAgIHsKKyAgICAgICAgQ29tcGFjdFJl
ZlB0cjxSZWZMb2dnZXI+IHB0cigmYSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcHRyLmdldCgp
KTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICAgICAgcHRyID0gYWRvcHRSZWYoJmIpOwor
ICAgICAgICBFWFBFQ1RfRVEoJmIsIHB0ci5nZXQoKSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7
CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHwgZGVyZWYoYSkgfCBkZXJlZihiKSAi
LCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7CisgICAgICAgIENvbXBhY3RSZWZQdHI8
UmVmTG9nZ2VyPiBwdHIoJmEpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHB0ci5nZXQoKSk7Cisg
ICAgICAgIHB0ciA9IG51bGxwdHI7CisgICAgICAgIEVYUEVDVF9FUShudWxscHRyLCBwdHIuZ2V0
KCkpOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9n
U3RyKCkuY19zdHIoKSk7CisKKyAgICB7CisgICAgICAgIENvbXBhY3RSZWZQdHI8UmVmTG9nZ2Vy
PiBwMSgmYSk7CisgICAgICAgIENvbXBhY3RSZWZQdHI8UmVmTG9nZ2VyPiBwMigmYik7CisgICAg
ICAgIEVYUEVDVF9FUSgmYSwgcDEuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEoJmIsIHAyLmdl
dCgpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICAgICAgcDEgPSBXVEZNb3ZlKHAyKTsK
KyAgICAgICAgRVhQRUNUX0VRKCZiLCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUShudWxs
cHRyLCBwMi5nZXQoKSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAgfQorICAgIEVYUEVD
VF9TVFJFUSgicmVmKGEpIHJlZihiKSB8IGRlcmVmKGEpIHwgZGVyZWYoYikgIiwgdGFrZUxvZ1N0
cigpLmNfc3RyKCkpOworCisgICAgeworICAgICAgICBDb21wYWN0UmVmUHRyPFJlZkxvZ2dlcj4g
cDEoJmEpOworICAgICAgICBDb21wYWN0UmVmUHRyPERlcml2ZWRSZWZMb2dnZXI+IHAyKCZjKTsK
KyAgICAgICAgRVhQRUNUX0VRKCZhLCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYywg
cDIuZ2V0KCkpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAgICAgICBwMSA9IHAyOworICAg
ICAgICBFWFBFQ1RfRVEoJmMsIHAxLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZjLCBwMi5n
ZXQoKSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgi
cmVmKGEpIHJlZihjKSB8IHJlZihjKSBkZXJlZihhKSB8IGRlcmVmKGMpIGRlcmVmKGMpICIsIHRh
a2VMb2dTdHIoKS5jX3N0cigpKTsKKworICAgIHsKKyAgICAgICAgQ29tcGFjdFJlZlB0cjxSZWZM
b2dnZXI+IHB0cigmYSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcHRyLmdldCgpKTsKKyAgICAg
ICAgbG9nKCkgPDwgInwgIjsKKyAgICAgICAgcHRyID0gJmM7CisgICAgICAgIEVYUEVDVF9FUSgm
YywgcHRyLmdldCgpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICB9CisgICAgRVhQRUNU
X1NUUkVRKCJyZWYoYSkgfCByZWYoYykgZGVyZWYoYSkgfCBkZXJlZihjKSAiLCB0YWtlTG9nU3Ry
KCkuY19zdHIoKSk7CisKKyAgICB7CisgICAgICAgIENvbXBhY3RSZWZQdHI8UmVmTG9nZ2VyPiBw
dHIoJmEpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHB0ci5nZXQoKSk7CisgICAgICAgIGxvZygp
IDw8ICJ8ICI7CisgICAgICAgIHB0ciA9IGFkb3B0UmVmKCZjKTsKKyAgICAgICAgRVhQRUNUX0VR
KCZjLCBwdHIuZ2V0KCkpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAgIH0KKyAgICBFWFBF
Q1RfU1RSRVEoInJlZihhKSB8IGRlcmVmKGEpIHwgZGVyZWYoYykgIiwgdGFrZUxvZ1N0cigpLmNf
c3RyKCkpOworCisgICAgeworICAgICAgICBDb21wYWN0UmVmUHRyPFJlZkxvZ2dlcj4gcDEoJmEp
OworICAgICAgICBDb21wYWN0UmVmUHRyPERlcml2ZWRSZWZMb2dnZXI+IHAyKCZjKTsKKyAgICAg
ICAgRVhQRUNUX0VRKCZhLCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYywgcDIuZ2V0
KCkpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAgICAgICBwMSA9IFdURk1vdmUocDIpOwor
ICAgICAgICBFWFBFQ1RfRVEoJmMsIHAxLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKG51bGxw
dHIsIHAyLmdldCgpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICB9CisgICAgRVhQRUNU
X1NUUkVRKCJyZWYoYSkgcmVmKGMpIHwgZGVyZWYoYSkgfCBkZXJlZihjKSAiLCB0YWtlTG9nU3Ry
KCkuY19zdHIoKSk7CisKKyAgICB7CisgICAgICAgIENvbXBhY3RSZWZQdHI8UmVmTG9nZ2VyPiBw
dHIoJmEpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHB0ci5nZXQoKSk7CisgICAgICAgIGxvZygp
IDw8ICJ8ICI7CisjaWYgQ09NUElMRVIoQ0xBTkcpCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMg
cHVzaAorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XdW5rbm93bi1wcmFnbWFz
IgorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XdW5rbm93bi13YXJuaW5nLW9w
dGlvbiIKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV3NlbGYtYXNzaWduLW92
ZXJsb2FkZWQiCisjZW5kaWYKKyAgICAgICAgcHRyID0gcHRyOworI2lmIENPTVBJTEVSKENMQU5H
KQorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAorI2VuZGlmCisgICAgICAgIEVYUEVDVF9F
USgmYSwgcHRyLmdldCgpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICB9CisgICAgRVhQ
RUNUX1NUUkVRKCJyZWYoYSkgfCByZWYoYSkgZGVyZWYoYSkgfCBkZXJlZihhKSAiLCB0YWtlTG9n
U3RyKCkuY19zdHIoKSk7CisKKyAgICB7CisgICAgICAgIENvbXBhY3RSZWZQdHI8UmVmTG9nZ2Vy
PiBwdHIoJmEpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHB0ci5nZXQoKSk7CisjaWYgQ09NUElM
RVIoQ0xBTkcpCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAorI3ByYWdtYSBjbGFuZyBk
aWFnbm9zdGljIGlnbm9yZWQgIi1XdW5rbm93bi1wcmFnbWFzIgorI3ByYWdtYSBjbGFuZyBkaWFn
bm9zdGljIGlnbm9yZWQgIi1Xc2VsZi1tb3ZlIgorI2VuZGlmCisgICAgICAgIHB0ciA9IFdURk1v
dmUocHRyKTsKKyNpZiBDT01QSUxFUihDTEFORykKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBw
b3AKKyNlbmRpZgorICAgICAgICBFWFBFQ1RfRVEoJmEsIHB0ci5nZXQoKSk7CisgICAgfQorICAg
IEVYUEVDVF9TVFJFUSgicmVmKGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsK
K30KKworVEVTVChXVEZfQ29tcGFjdFJlZlB0ciwgU3dhcCkKK3sKKyAgICBSZWZMb2dnZXIgYSgi
YSIpOworICAgIFJlZkxvZ2dlciBiKCJiIik7CisKKyAgICB7CisgICAgICAgIENvbXBhY3RSZWZQ
dHI8UmVmTG9nZ2VyPiBwMSgmYSk7CisgICAgICAgIENvbXBhY3RSZWZQdHI8UmVmTG9nZ2VyPiBw
MigmYik7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcDEu
Z2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEoJmIsIHAyLmdldCgpKTsKKyAgICAgICAgcDEuc3dh
cChwMik7CisgICAgICAgIEVYUEVDVF9FUSgmYiwgcDEuZ2V0KCkpOworICAgICAgICBFWFBFQ1Rf
RVEoJmEsIHAyLmdldCgpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICB9CisgICAgRVhQ
RUNUX1NUUkVRKCJyZWYoYSkgcmVmKGIpIHwgfCBkZXJlZihhKSBkZXJlZihiKSAiLCB0YWtlTG9n
U3RyKCkuY19zdHIoKSk7CisKKyAgICB7CisgICAgICAgIENvbXBhY3RSZWZQdHI8UmVmTG9nZ2Vy
PiBwMSgmYSk7CisgICAgICAgIENvbXBhY3RSZWZQdHI8UmVmTG9nZ2VyPiBwMigmYik7CisgICAg
ICAgIGxvZygpIDw8ICJ8ICI7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcDEuZ2V0KCkpOworICAg
ICAgICBFWFBFQ1RfRVEoJmIsIHAyLmdldCgpKTsKKyAgICAgICAgc3RkOjpzd2FwKHAxLCBwMik7
CisgICAgICAgIEVYUEVDVF9FUSgmYiwgcDEuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEoJmEs
IHAyLmdldCgpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICB9CisgICAgRVhQRUNUX1NU
UkVRKCJyZWYoYSkgcmVmKGIpIHwgfCBkZXJlZihhKSBkZXJlZihiKSAiLCB0YWtlTG9nU3RyKCku
Y19zdHIoKSk7Cit9CisKK1RFU1QoV1RGX0NvbXBhY3RSZWZQdHIsIFJlbGVhc2VOb25OdWxsKQor
eworICAgIFJlZkxvZ2dlciBhKCJhIik7CisKKyAgICB7CisgICAgICAgIENvbXBhY3RSZWZQdHI8
UmVmTG9nZ2VyPiByZWZQdHIgPSAmYTsKKyAgICAgICAgQ29tcGFjdFJlZlB0cjxSZWZMb2dnZXI+
IHJlZiA9IHJlZlB0ci5yZWxlYXNlTm9uTnVsbCgpOworICAgIH0KKworICAgIEVYUEVDVF9TVFJF
USgicmVmKGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKK30KKworVEVTVChX
VEZfQ29tcGFjdFJlZlB0ciwgUmVsZWFzZSkKK3sKKyAgICBEZXJpdmVkUmVmTG9nZ2VyIGEoImEi
KTsKKyAgICBSZWZMb2dnZXIgYigiYiIpOworICAgIERlcml2ZWRSZWZMb2dnZXIgYygiYyIpOwor
CisgICAgeworICAgICAgICBDb21wYWN0UmVmUHRyPFJlZkxvZ2dlcj4gcDEgPSAmYTsKKyAgICAg
ICAgQ29tcGFjdFJlZlB0cjxSZWZMb2dnZXI+IHAyID0gV1RGTW92ZShwMSk7CisgICAgICAgIEVY
UEVDVF9FUShudWxscHRyLCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcDIuZ2V0
KCkpOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9n
U3RyKCkuY19zdHIoKSk7CisKKyAgICB7CisgICAgICAgIENvbXBhY3RSZWZQdHI8UmVmTG9nZ2Vy
PiBwMSA9ICZhOworICAgICAgICBDb21wYWN0UmVmUHRyPFJlZkxvZ2dlcj4gcDIoV1RGTW92ZShw
MSkpOworICAgICAgICBFWFBFQ1RfRVEobnVsbHB0ciwgcDEuZ2V0KCkpOworICAgICAgICBFWFBF
Q1RfRVEoJmEsIHAyLmdldCgpKTsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgZGVy
ZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAgeworICAgICAgICBDb21wYWN0
UmVmUHRyPERlcml2ZWRSZWZMb2dnZXI+IHAxID0gJmE7CisgICAgICAgIENvbXBhY3RSZWZQdHI8
UmVmTG9nZ2VyPiBwMiA9IFdURk1vdmUocDEpOworICAgICAgICBFWFBFQ1RfRVEobnVsbHB0ciwg
cDEuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHAyLmdldCgpKTsKKyAgICB9CisgICAg
RVhQRUNUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwor
CisgICAgeworICAgICAgICBDb21wYWN0UmVmUHRyPFJlZkxvZ2dlcj4gcDEoJmEpOworICAgICAg
ICBDb21wYWN0UmVmUHRyPFJlZkxvZ2dlcj4gcDIoJmIpOworICAgICAgICBFWFBFQ1RfRVEoJmEs
IHAxLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZiLCBwMi5nZXQoKSk7CisgICAgICAgIGxv
ZygpIDw8ICJ8ICI7CisgICAgICAgIHAxID0gV1RGTW92ZShwMik7CisgICAgICAgIEVYUEVDVF9F
USgmYiwgcDEuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEobnVsbHB0ciwgcDIuZ2V0KCkpOwor
ICAgICAgICBsb2coKSA8PCAifCAiOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSBy
ZWYoYikgfCBkZXJlZihhKSB8IGRlcmVmKGIpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKwor
ICAgIHsKKyAgICAgICAgQ29tcGFjdFJlZlB0cjxSZWZMb2dnZXI+IHAxKCZhKTsKKyAgICAgICAg
Q29tcGFjdFJlZlB0cjxEZXJpdmVkUmVmTG9nZ2VyPiBwMigmYyk7CisgICAgICAgIEVYUEVDVF9F
USgmYSwgcDEuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEoJmMsIHAyLmdldCgpKTsKKyAgICAg
ICAgbG9nKCkgPDwgInwgIjsKKyAgICAgICAgcDEgPSBXVEZNb3ZlKHAyKTsKKyAgICAgICAgRVhQ
RUNUX0VRKCZjLCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUShudWxscHRyLCBwMi5nZXQo
KSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgicmVm
KGEpIHJlZihjKSB8IGRlcmVmKGEpIHwgZGVyZWYoYykgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkp
OworfQorCitzdGF0aWMgQ29tcGFjdFJlZlB0cjxSZWZMb2dnZXI+IGYxKFJlZkxvZ2dlciYgbG9n
Z2VyKQoreworICAgIHJldHVybiBDb21wYWN0UmVmUHRyPFJlZkxvZ2dlcj4oJmxvZ2dlcik7Cit9
CisKK1RFU1QoV1RGX0NvbXBhY3RSZWZQdHIsIFJldHVyblZhbHVlKQoreworICAgIERlcml2ZWRS
ZWZMb2dnZXIgYSgiYSIpOworCisgICAgeworICAgICAgICBmMShhKTsKKyAgICB9CisgICAgRVhQ
RUNUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisg
ICAgeworICAgICAgICBhdXRvIHB0ciA9IGYxKGEpOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEo
InJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7Cit9CisKK3N0cnVjdCBD
b25zdFJlZkNvdW50ZWQgOiBSZWZDb3VudGVkPENvbnN0UmVmQ291bnRlZD4geworICAgIHN0YXRp
YyBSZWY8Q29uc3RSZWZDb3VudGVkPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IENv
bnN0UmVmQ291bnRlZCk7IH0KK307CisKK3N0YXRpYyBjb25zdCBDb25zdFJlZkNvdW50ZWQmIHJl
dHVybkNvbnN0UmVmQ291bnRlZFJlZigpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPENv
bnN0UmVmQ291bnRlZD4gaW5zdGFuY2U7CisgICAgcmV0dXJuIGluc3RhbmNlLmdldCgpOworfQor
c3RhdGljIENvbnN0UmVmQ291bnRlZCYgcmV0dXJuUmVmQ291bnRlZFJlZigpCit7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPENvbnN0UmVmQ291bnRlZD4gaW5zdGFuY2U7CisgICAgcmV0dXJu
IGluc3RhbmNlLmdldCgpOworfQorCitURVNUKFdURl9Db21wYWN0UmVmUHRyLCBDb25zdCkKK3sK
KyAgICAvLyBUaGlzIHRlc3QgcGFzc2VzIGlmIGl0IGNvbXBpbGVzIHdpdGhvdXQgYW4gZXJyb3Iu
CisgICAgYXV0byBhID0gQ29uc3RSZWZDb3VudGVkOjpjcmVhdGUoKTsKKyAgICBSZWY8Y29uc3Qg
Q29uc3RSZWZDb3VudGVkPiBiID0gV1RGTW92ZShhKTsKKyAgICBDb21wYWN0UmVmUHRyPGNvbnN0
IENvbnN0UmVmQ291bnRlZD4gYyA9IGIucHRyKCk7CisgICAgUmVmPGNvbnN0IENvbnN0UmVmQ291
bnRlZD4gZCA9IHJldHVybkNvbnN0UmVmQ291bnRlZFJlZigpOworICAgIENvbXBhY3RSZWZQdHI8
Y29uc3QgQ29uc3RSZWZDb3VudGVkPiBlID0gJnJldHVybkNvbnN0UmVmQ291bnRlZFJlZigpOwor
ICAgIENvbXBhY3RSZWZQdHI8Q29uc3RSZWZDb3VudGVkPiBmID0gQ29uc3RSZWZDb3VudGVkOjpj
cmVhdGUoKTsKKyAgICBDb21wYWN0UmVmUHRyPGNvbnN0IENvbnN0UmVmQ291bnRlZD4gZyA9IGY7
CisgICAgQ29tcGFjdFJlZlB0cjxjb25zdCBDb25zdFJlZkNvdW50ZWQ+IGgoZik7CisgICAgUmVm
PGNvbnN0IENvbnN0UmVmQ291bnRlZD4gaShyZXR1cm5SZWZDb3VudGVkUmVmKCkpOworfQorCitz
dHJ1Y3QgQ29tcGFjdFJlZlB0ckNoZWNraW5nUmVmTG9nZ2VyIDogUmVmTG9nZ2VyIHsKKyAgICBD
b21wYWN0UmVmUHRyQ2hlY2tpbmdSZWZMb2dnZXIoY29uc3QgY2hhciogbmFtZSk7CisgICAgdm9p
ZCByZWYoKTsKKyAgICB2b2lkIGRlcmVmKCk7CisgICAgY29uc3QgQ29tcGFjdFJlZlB0cjxDb21w
YWN0UmVmUHRyQ2hlY2tpbmdSZWZMb2dnZXI+KiBzbG90VG9DaGVjayB7IG51bGxwdHIgfTsKK307
CisKK0NvbXBhY3RSZWZQdHJDaGVja2luZ1JlZkxvZ2dlcjo6Q29tcGFjdFJlZlB0ckNoZWNraW5n
UmVmTG9nZ2VyKGNvbnN0IGNoYXIqIG5hbWUpCisgICAgOiBSZWZMb2dnZXIgeyBuYW1lIH0KK3sK
K30KKworc3RhdGljIGNvbnN0IGNoYXIqIGxvZ2dlck5hbWUoY29uc3QgQ29tcGFjdFJlZlB0cjxD
b21wYWN0UmVmUHRyQ2hlY2tpbmdSZWZMb2dnZXI+JiBwb2ludGVyKQoreworICAgIHJldHVybiBw
b2ludGVyID8gJnBvaW50ZXItPm5hbWUgOiAibnVsbCI7Cit9CisKK3ZvaWQgQ29tcGFjdFJlZlB0
ckNoZWNraW5nUmVmTG9nZ2VyOjpyZWYoKQoreworICAgIGlmIChzbG90VG9DaGVjaykKKyAgICAg
ICAgbG9nKCkgPDwgInNsb3Q9IiA8PCBsb2dnZXJOYW1lKCpzbG90VG9DaGVjaykgPDwgIiAiOwor
ICAgIFJlZkxvZ2dlcjo6cmVmKCk7Cit9CisKK3ZvaWQgQ29tcGFjdFJlZlB0ckNoZWNraW5nUmVm
TG9nZ2VyOjpkZXJlZigpCit7CisgICAgaWYgKHNsb3RUb0NoZWNrKQorICAgICAgICBsb2coKSA8
PCAic2xvdD0iIDw8IGxvZ2dlck5hbWUoKnNsb3RUb0NoZWNrKSA8PCAiICI7CisgICAgUmVmTG9n
Z2VyOjpkZXJlZigpOworfQorCitURVNUKFdURl9Db21wYWN0UmVmUHRyLCBBc3NpZ25CZWZvcmVE
ZXJlZikKK3sKKyAgICBDb21wYWN0UmVmUHRyQ2hlY2tpbmdSZWZMb2dnZXIgYSgiYSIpOworICAg
IENvbXBhY3RSZWZQdHJDaGVja2luZ1JlZkxvZ2dlciBiKCJiIik7CisKKyAgICB7CisgICAgICAg
IENvbXBhY3RSZWZQdHI8Q29tcGFjdFJlZlB0ckNoZWNraW5nUmVmTG9nZ2VyPiBwMSgmYSk7Cisg
ICAgICAgIENvbXBhY3RSZWZQdHI8Q29tcGFjdFJlZlB0ckNoZWNraW5nUmVmTG9nZ2VyPiBwMigm
Yik7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcDEuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEo
JmIsIHAyLmdldCgpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICAgICAgYS5zbG90VG9D
aGVjayA9ICZwMTsKKyAgICAgICAgYi5zbG90VG9DaGVjayA9ICZwMTsKKyAgICAgICAgcDEgPSBw
MjsKKyAgICAgICAgYS5zbG90VG9DaGVjayA9IG51bGxwdHI7CisgICAgICAgIGIuc2xvdFRvQ2hl
Y2sgPSBudWxscHRyOworICAgICAgICBFWFBFQ1RfRVEoJmIsIHAxLmdldCgpKTsKKyAgICAgICAg
RVhQRUNUX0VRKCZiLCBwMi5nZXQoKSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAgfQor
ICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHJlZihiKSB8IHNsb3Q9YSByZWYoYikgc2xvdD1iIGRl
cmVmKGEpIHwgZGVyZWYoYikgZGVyZWYoYikgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisg
ICAgeworICAgICAgICBDb21wYWN0UmVmUHRyPENvbXBhY3RSZWZQdHJDaGVja2luZ1JlZkxvZ2dl
cj4gcHRyKCZhKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwdHIuZ2V0KCkpOworICAgICAgICBs
b2coKSA8PCAifCAiOworICAgICAgICBhLnNsb3RUb0NoZWNrID0gJnB0cjsKKyAgICAgICAgYi5z
bG90VG9DaGVjayA9ICZwdHI7CisgICAgICAgIHB0ciA9ICZiOworICAgICAgICBhLnNsb3RUb0No
ZWNrID0gbnVsbHB0cjsKKyAgICAgICAgYi5zbG90VG9DaGVjayA9IG51bGxwdHI7CisgICAgICAg
IEVYUEVDVF9FUSgmYiwgcHRyLmdldCgpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICB9
CisgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgfCBzbG90PWEgcmVmKGIpIHNsb3Q9YiBkZXJlZihh
KSB8IGRlcmVmKGIpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKworICAgIHsKKyAgICAgICAg
Q29tcGFjdFJlZlB0cjxDb21wYWN0UmVmUHRyQ2hlY2tpbmdSZWZMb2dnZXI+IHB0cigmYSk7Cisg
ICAgICAgIEVYUEVDVF9FUSgmYSwgcHRyLmdldCgpKTsKKyAgICAgICAgYS5zbG90VG9DaGVjayA9
ICZwdHI7CisgICAgICAgIHB0ciA9IG51bGxwdHI7CisgICAgICAgIGEuc2xvdFRvQ2hlY2sgPSBu
dWxscHRyOworICAgICAgICBFWFBFQ1RfRVEobnVsbHB0ciwgcHRyLmdldCgpKTsKKyAgICB9Cisg
ICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgc2xvdD1udWxsIGRlcmVmKGEpICIsIHRha2VMb2dTdHIo
KS5jX3N0cigpKTsKKworICAgIHsKKyAgICAgICAgQ29tcGFjdFJlZlB0cjxDb21wYWN0UmVmUHRy
Q2hlY2tpbmdSZWZMb2dnZXI+IHAxKCZhKTsKKyAgICAgICAgQ29tcGFjdFJlZlB0cjxDb21wYWN0
UmVmUHRyQ2hlY2tpbmdSZWZMb2dnZXI+IHAyKCZiKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBw
MS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYiwgcDIuZ2V0KCkpOworICAgICAgICBsb2co
KSA8PCAifCAiOworICAgICAgICBhLnNsb3RUb0NoZWNrID0gJnAxOworICAgICAgICBiLnNsb3RU
b0NoZWNrID0gJnAxOworICAgICAgICBwMSA9IFdURk1vdmUocDIpOworICAgICAgICBhLnNsb3RU
b0NoZWNrID0gbnVsbHB0cjsKKyAgICAgICAgYi5zbG90VG9DaGVjayA9IG51bGxwdHI7CisgICAg
ICAgIEVYUEVDVF9FUSgmYiwgcDEuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEobnVsbHB0ciwg
cDIuZ2V0KCkpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAgIH0KKyAgICBFWFBFQ1RfU1RS
RVEoInJlZihhKSByZWYoYikgfCBzbG90PWIgZGVyZWYoYSkgfCBkZXJlZihiKSAiLCB0YWtlTG9n
U3RyKCkuY19zdHIoKSk7Cit9CisKK1RFU1QoV1RGX0NvbXBhY3RSZWZQdHIsIFJlbGVhc2VOb25O
dWxsQmVmb3JlRGVyZWYpCit7CisgICAgQ29tcGFjdFJlZlB0ckNoZWNraW5nUmVmTG9nZ2VyIGEo
ImEiKTsKKworICAgIHsKKyAgICAgICAgQ29tcGFjdFJlZlB0cjxDb21wYWN0UmVmUHRyQ2hlY2tp
bmdSZWZMb2dnZXI+IHJlZlB0ciA9ICZhOworICAgICAgICBhLnNsb3RUb0NoZWNrID0gJnJlZlB0
cjsKKyAgICAgICAgcmVmUHRyLnJlbGVhc2VOb25OdWxsKCk7CisgICAgICAgIGEuc2xvdFRvQ2hl
Y2sgPSBudWxscHRyOworICAgIH0KKworICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHNsb3Q9bnVs
bCBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7Cit9CisKKy8vIEZJWE1FOiBFbmFi
bGUgdGhlc2UgdGVzdHMgb25jZSBXaW4gcGxhdGZvcm0gc3VwcG9ydHMgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuCisjaWYgIVBMQVRGT1JNKFdJTikKKworc3RhdGljIGJvb2wgZG9uZTsKK3N0YXRp
YyBib29sIGlzRGVzdHJveWVkSW5NYWluVGhyZWFkOworc3RydWN0IFRocmVhZFNhZmVSZWZDb3Vu
dGVkT2JqZWN0IDogVGhyZWFkU2FmZVJlZkNvdW50ZWQ8VGhyZWFkU2FmZVJlZkNvdW50ZWRPYmpl
Y3Q+IHsKKyAgICBzdGF0aWMgUmVmPFRocmVhZFNhZmVSZWZDb3VudGVkT2JqZWN0PiBjcmVhdGUo
KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFRocmVhZFNhZmVSZWZDb3VudGVkT2JqZWN0KTsgfQor
CisgICAgflRocmVhZFNhZmVSZWZDb3VudGVkT2JqZWN0KCkKKyAgICB7CisgICAgICAgIGlzRGVz
dHJveWVkSW5NYWluVGhyZWFkID0gaXNNYWluVGhyZWFkKCk7CisgICAgICAgIGRvbmUgPSB0cnVl
OworICAgIH0KK307CisKK3N0cnVjdCBNYWluVGhyZWFkU2FmZVJlZkNvdW50ZWRPYmplY3QgOiBU
aHJlYWRTYWZlUmVmQ291bnRlZDxNYWluVGhyZWFkU2FmZVJlZkNvdW50ZWRPYmplY3QsIFdURjo6
RGVzdHJ1Y3Rpb25UaHJlYWQ6Ok1haW4+IHsKKyAgICBzdGF0aWMgUmVmPE1haW5UaHJlYWRTYWZl
UmVmQ291bnRlZE9iamVjdD4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBNYWluVGhy
ZWFkU2FmZVJlZkNvdW50ZWRPYmplY3QpOyB9CisKKyAgICB+TWFpblRocmVhZFNhZmVSZWZDb3Vu
dGVkT2JqZWN0KCkKKyAgICB7CisgICAgICAgIGlzRGVzdHJveWVkSW5NYWluVGhyZWFkID0gaXNN
YWluVGhyZWFkKCk7CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH0KK307CisKK1RFU1QoV1RG
X0NvbXBhY3RSZWZQdHIsIFJlbGVhc2VJbk5vbk1haW5UaHJlYWQpCit7CisgICAgZG9uZSA9IGZh
bHNlOworICAgIFRocmVhZDo6Y3JlYXRlKCIiLCBbb2JqZWN0ID0gVGhyZWFkU2FmZVJlZkNvdW50
ZWRPYmplY3Q6OmNyZWF0ZSgpXSB7IH0pOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigm
ZG9uZSk7CisKKyAgICBFWFBFQ1RfRkFMU0UoaXNEZXN0cm95ZWRJbk1haW5UaHJlYWQpOworfQor
CitURVNUKFdURl9Db21wYWN0UmVmUHRyLCBSZWxlYXNlSW5Ob25NYWluVGhyZWFkRGVzdHJveUlu
TWFpblRocmVhZCkKK3sKKyAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkKCk7CisgICAgZG9u
ZSA9IGZhbHNlOworICAgIFRocmVhZDo6Y3JlYXRlKCIiLCBbb2JqZWN0ID0gTWFpblRocmVhZFNh
ZmVSZWZDb3VudGVkT2JqZWN0OjpjcmVhdGUoKV0geyB9KTsKKyAgICBUZXN0V2ViS2l0QVBJOjpV
dGlsOjpydW4oJmRvbmUpOworCisgICAgRVhQRUNUX1RSVUUoaXNEZXN0cm95ZWRJbk1haW5UaHJl
YWQpOworfQorCisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>459470</attachid>
            <date>2022-05-16 18:04:31 -0700</date>
            <delta_ts>2022-05-21 20:29:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-240407-20220516180430.patch</filename>
            <type>text/plain</type>
            <size>77109</size>
            <attacher name="Yijia Huang">yijia_huang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzODY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
MGFmMzcwNWZjNTU3ZDczMjNmNGJmMGVjZjA0ZTIzYzI4NjlkMWM1Li5hMWMwZjQwMWFlZDhlOWU2
ODgzMjRmZWQ3YjkzMjlmMGQwODQ3NTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MiBAQAorMjAyMi0wNS0xNiAgWWlqaWEgSHVhbmcgIDx5aWppYV9odWFuZ0BhcHBsZS5j
b20+CisKKyAgICAgICAgUkVHUkVTU0lPTiAocjI4NTk1NSk6IDIlIHJlZ3Jlc3Npb24gb24gUkFN
aWZpY2F0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yNDA0MDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAg
ICAgICAgKiBmdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oOgorICAgICAgICAqIGZ0bC9G
VExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0Iz
Ojpjb21waWxlQ29tcGFyZVN0cmljdEVxKToKKyAgICAgICAgKiBoZWFwL0NvbXBhY3RCbG9vbUZp
bHRlci5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6Q29tcGFjdEJsb29tRmlsdGVyOjpDb21wYWN0
Qmxvb21GaWx0ZXIpOgorICAgICAgICAoSlNDOjpDb21wYWN0Qmxvb21GaWx0ZXI6OmFkZCk6Cisg
ICAgICAgIChKU0M6OkNvbXBhY3RCbG9vbUZpbHRlcjo6cnVsZU91dCBjb25zdCk6CisgICAgICAg
IChKU0M6OkNvbXBhY3RCbG9vbUZpbHRlcjo6cmVzZXQpOgorICAgICAgICAoSlNDOjpDb21wYWN0
Qmxvb21GaWx0ZXI6OmJpdHMgY29uc3QpOgorICAgICAgICAqIGppdC9Bc3NlbWJseUhlbHBlcnMu
Y3BwOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmVtaXRTdG9yZVN0cnVjdHVyZVdp
dGhUeXBlSW5mbyk6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6ZW1pdEVuY29kZVN0
cnVjdHVyZSk6CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5oOgorICAgICAgICAoSlND
OjpBc3NlbWJseUhlbHBlcnM6OmVtaXRTdG9yZVN0cnVjdHVyZVdpdGhUeXBlSW5mbyk6CisgICAg
ICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6bG9hZENvbXBhY3RQdHIpOgorICAgICAgICAoSlND
OjpBc3NlbWJseUhlbHBlcnM6OmJyYW5jaENvbXBhY3RQdHIpOgorICAgICAgICAqIGppdC9KSVRQ
cm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6Z2VuZXJhdGVPcEdldEZyb21T
Y29wZVRodW5rKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF90b19zY29wZSk6Cisg
ICAgICAgICogcnVudGltZS9DbGFzc0luZm8uaDoKKyAgICAgICAgKEpTQzo6Q2xhc3NJbmZvOjpv
ZmZzZXRPZlBhcmVudENsYXNzKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Q2xhc3NJbmZvOjpp
c1N1YkNsYXNzT2YgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJl
LmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1
bnRpbWUvU3RydWN0dXJlLmg6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6aWQgY29uc3QpOgor
ICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmlkQmxvYiBjb25zdCk6CisgICAgICAgIChKU0M6OlN0
cnVjdHVyZTo6Y2xhc3NJbmZvRm9yQ2VsbHMgY29uc3QpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1
cmU6OnN0cnVjdHVyZUlET2Zmc2V0KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL1N0cnVj
dHVyZUlEQmxvYi5oOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVJREJsb2I6OlN0cnVjdHVyZUlE
QmxvYik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZUlEQmxvYjo6b3BlcmF0b3I9KToKKyAgICAg
ICAgKEpTQzo6U3RydWN0dXJlSURCbG9iOjpibG9iRXhjbHVkaW5nU3RydWN0dXJlSUQgY29uc3Qp
OgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVJREJsb2I6OmJsb2IgY29uc3QpOgorICAgICAgICAo
SlNDOjpTdHJ1Y3R1cmVJREJsb2I6OnN0cnVjdHVyZUlEIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6U3RydWN0dXJlSURCbG9iOjpzdHJ1Y3R1cmVJRE9mZnNldCk6IERlbGV0ZWQuCisg
ICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6
V2ViQXNzZW1ibHlGdW5jdGlvbjo6anNDYWxsRW50cnlwb2ludFNsb3cpOgorCiAyMDIyLTA1LTA1
ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCwgcGFydGlhbCByZXZlcnQgb2YgcjI5MzgxMyBiZWNhdXNlIG9mIHByb3Bvc2FsJ3MgaXNzdWUu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9n
CmluZGV4IDZlMTk4NDZlMGUxOTE2MTAzM2FkYTVkMzAwZDgxMTk0NmM4Yzk5NTAuLjdiNWJhMjQ1
YWU2ZmVlMzIxMTNlNTI1YjYyMzcyNDVmZDYyZGYwNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIw
MjItMDUtMTYgIFlpamlhIEh1YW5nICA8eWlqaWFfaHVhbmdAYXBwbGUuY29tPgorCisgICAgICAg
IFJFR1JFU1NJT04gKHIyODU5NTUpOiAyJSByZWdyZXNzaW9uIG9uIFJBTWlmaWNhdGlvbgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQwNDA3CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXVEYueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3dGYvQ01ha2VMaXN0cy50eHQ6CisgICAg
ICAgICogd3RmL0NvbXBhY3RQdHIuaDogQWRkZWQuCisgICAgICAgIChXVEY6OkNvbXBhY3RQdHI6
OkNvbXBhY3RQdHIpOgorICAgICAgICAoV1RGOjpDb21wYWN0UHRyOjpvcGVyYXRvciogY29uc3Qp
OgorICAgICAgICAoV1RGOjpDb21wYWN0UHRyOjpvcGVyYXRvci0+IGNvbnN0KToKKyAgICAgICAg
KFdURjo6Q29tcGFjdFB0cjo6b3BlcmF0b3IhIGNvbnN0KToKKyAgICAgICAgKFdURjo6Q29tcGFj
dFB0cjo6b3BlcmF0b3IgYm9vbCBjb25zdCk6CisgICAgICAgIChXVEY6OkNvbXBhY3RQdHI6Om9w
ZXJhdG9yPSk6CisgICAgICAgIChXVEY6OkNvbXBhY3RQdHI6OmdldCBjb25zdCk6CisgICAgICAg
ICogd3RmL0NvbXBhY3RSZWZQdHIuaDogQWRkZWQuCisgICAgICAgIChXVEY6OkNvbXBhY3RlZDo6
Q29tcGFjdGVkKToKKyAgICAgICAgKFdURjo6Q29tcGFjdGVkOjpvcGVyYXRvcj0pOgorICAgICAg
ICAoV1RGOjpDb21wYWN0ZWQ6Om9wZXJhdG9yLT4gY29uc3QpOgorICAgICAgICAoV1RGOjpDb21w
YWN0ZWQ6Om9wZXJhdG9yKiBjb25zdCk6CisgICAgICAgIChXVEY6OkNvbXBhY3RlZDo6b3BlcmF0
b3IhIGNvbnN0KToKKyAgICAgICAgKFdURjo6Q29tcGFjdGVkOjpvcGVyYXRvciBib29sIGNvbnN0
KToKKyAgICAgICAgKFdURjo6Q29tcGFjdGVkOjpnZXQgY29uc3QpOgorICAgICAgICAoV1RGOjpD
b21wYWN0ZWQ6OnNldCk6CisgICAgICAgIChXVEY6OkNvbXBhY3RlZDo6ZXhjaGFuZ2UpOgorICAg
ICAgICAoV1RGOjpDb21wYWN0ZWQ6OnN3YXApOgorICAgICAgICAoV1RGOjpDb21wYWN0ZWQ6OmVu
Y29kZSk6CisgICAgICAgIChXVEY6OkNvbXBhY3RlZDo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAg
KFdURjo6Q29tcGFjdGVkOjpkZWNvZGUgY29uc3QpOgorICAgICAgICAoV1RGOjpHZXRQdHJIZWxw
ZXI8Q29tcGFjdGVkPFQ+Pjo6Z2V0UHRyKToKKyAgICAgICAgKFdURjo6Q29tcGFjdFB0clRyYWl0
czo6ZXhjaGFuZ2UpOgorICAgICAgICAoV1RGOjpDb21wYWN0UHRyVHJhaXRzOjpzd2FwKToKKyAg
ICAgICAgKFdURjo6Q29tcGFjdFB0clRyYWl0czo6dW53cmFwKToKKyAgICAgICAgKFdURjo6Q29t
cGFjdFB0clRyYWl0czo6aGFzaFRhYmxlRGVsZXRlZFZhbHVlKToKKyAgICAgICAgKFdURjo6Q29t
cGFjdFB0clRyYWl0czo6aXNIYXNoVGFibGVEZWxldGVkVmFsdWUpOgorCiAyMDIyLTA1LTA1ICBC
cmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBhYmFu
ZG9uZWQgV0tQcmVmZXJlbmNlIGZvciBBbHdheXNVc2VBY2NlbGVyYXRlZE92ZXJmbG93U2Nyb2xs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggYTU3YjFhNzY0YjE3NjZiNWJh
YzEwNTI2ZWFiODZkMjQxYzUxYWQ4OS4uZGUxNzRhZDFlZTBmZDFhMzk3MDZmNTIzZDljMzFlZjZl
OWM5NjgxYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNzA0LDYgKzcw
NCw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAg
aGVhcC9DZWxsU3RhdGUuaAogICAgIGhlYXAvQ29sbGVjdGlvblNjb3BlLmgKICAgICBoZWFwL0Nv
bGxlY3RvclBoYXNlLmgKKyAgICBoZWFwL0NvbXBhY3RCbG9vbUZpbHRlci5oCiAgICAgaGVhcC9D
b21wbGV0ZVN1YnNwYWNlLmgKICAgICBoZWFwL0NvbXBsZXRlU3Vic3BhY2VJbmxpbmVzLmgKICAg
ICBoZWFwL0NvbnN0cmFpbnRDb25jdXJyZW5jeS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IDIyZDA5MTMyMGQxNmU3YzkxZDAzNjhhOGIyMzBmNTkyNzFjZmZkMTcuLmJhNzRhMWUx
ZGQ2MzVkMzdmN2FmMTE2MTU3ODVhNGJmOTVhYjIyMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0yMTI5LDYgKzIxMjksNyBAQAogCQlGRUY1QjQyQzI2MjhDQkM4MDAxNkU3NzYg
LyogVk1UcmFwc0lubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEZFRjVCNDJCMjYyOENCQzgwMDE2RTc3NiAvKiBWTVRyYXBzSW5saW5lcy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFRjVCNDMw
MjYyQTMzOEIwMDE2RTc3NiAvKiBFeGNlcHRpb25FeHBlY3RhdGlvbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVGNUI0MkYyNjJBMzM4QjAwMTZFNzc2
IC8qIEV4Y2VwdGlvbkV4cGVjdGF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkVGRDZGQzYxRDVFNzk5MjAwOEYyRjBCIC8qIEpTU3RyaW5n
SW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RkVGRDZGQzUxRDVFNzk3MDAwOEYyRjBCIC8qIEpTU3RyaW5nSW5saW5lcy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUZGMjVCOTM0MjgzMzA2REIw
MEUwM0Y0RCAvKiBDb21wYWN0Qmxvb21GaWx0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZGMjVCOTMzMjgzMzA2REEwMEUwM0Y0RCAvKiBDb21wYWN0
Qmxvb21GaWx0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWEJ1aWxk
UnVsZSBzZWN0aW9uICovCkBAIC01Nzg0LDYgKzU3ODUsNyBAQAogCQlGRUY1QjQyQjI2MjhDQkM4
MDAxNkU3NzYgLyogVk1UcmFwc0lubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gVk1UcmFwc0lubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVG
NUI0MkYyNjJBMzM4QjAwMTZFNzc2IC8qIEV4Y2VwdGlvbkV4cGVjdGF0aW9uLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4Y2VwdGlvbkV4cGVjdGF0aW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFRkQ2RkM1MUQ1RTc5NzAwMDhGMkYwQiAvKiBKU1N0cmlu
Z0lubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTdHJpbmdJbmxp
bmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZGMjVCOTMzMjgzMzA2REEwMEUw
M0Y0RCAvKiBDb21wYWN0Qmxvb21GaWx0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQ29tcGFjdEJsb29tRmlsdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAv
KiBFbmQgUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWEZyYW1ld29y
a3NCdWlsZFBoYXNlIHNlY3Rpb24gKi8KQEAgLTY3MDAsNiArNjcwMiw3IEBACiAJCQkJMEZBNzYy
MDExREI5MjQyMzAwQjdBMkZEIC8qIENvbGxlY3Rpb25TY29wZS5oICovLAogCQkJCTBGRDBFNUU1
MUU0M0QzNDcwMDA2QUIwOCAvKiBDb2xsZWN0b3JQaGFzZS5jcHAgKi8sCiAJCQkJMEZEMEU1RTYx
RTQzRDM0NzAwMDZBQjA4IC8qIENvbGxlY3RvclBoYXNlLmggKi8sCisJCQkJRkYyNUI5MzMyODMz
MDZEQTAwRTAzRjREIC8qIENvbXBhY3RCbG9vbUZpbHRlci5oICovLAogCQkJCTBGRENFMTI3MUZB
RkE4NTkwMDZGMzkwMSAvKiBDb21wbGV0ZVN1YnNwYWNlLmNwcCAqLywKIAkJCQkwRkRDRTEyODFG
QUZBODU5MDA2RjM5MDEgLyogQ29tcGxldGVTdWJzcGFjZS5oICovLAogCQkJCTBGRDJGRDkzMjBC
NTJCREQwMEYwOTQ0MSAvKiBDb21wbGV0ZVN1YnNwYWNlSW5saW5lcy5oICovLApAQCAtOTk4Niw2
ICs5OTg5LDcgQEAKIAkJCQlCQzE4QzNGMzBFMTZGNUNEMDBCMzQ0NjAgLyogQ29tbW9uSWRlbnRp
ZmllcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMTVGMTVGMTRCN0E3M0UwMDVERTM3RCAvKiBD
b21tb25TbG93UGF0aHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTMzQTkyMEJEMjNEQTJDNkQwMDBF
QkFGMCAvKiBDb21tb25TbG93UGF0aHNJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKKwkJCQlGRjI1
QjkzNDI4MzMwNkRCMDBFMDNGNEQgLyogQ29tcGFjdEJsb29tRmlsdGVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBN0U1QTNBODE3OTc0MzJEMDBFODkzQzAgLyogQ29tcGlsYXRpb25SZXN1bHQuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGNEYxMUU4MjA5QkNEQUIwMDcwOTY1NCAvKiBDb21waWxlclRp
bWluZ1Njb3BlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkRDRTEyQTFGQUZBODVGMDA2RjM5MDEg
LyogQ29tcGxldGVTdWJzcGFjZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMjM4MCw3ICsxMjM4NCw2
IEBACiAJCQkJNTM2QjMxN0ExRjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UxMDcuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNTM2QjMxMjcxRjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRT
b3VyY2UxMDguY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM2QjMxMkMxRjcxQzU5OTAwMzdGQzMz
IC8qIFVuaWZpZWRTb3VyY2UxMDkuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJRTMxMTM1Q0EyODFC
NUIwMzAwQzFBNEE5IC8qIFp5ZGlzRm9ybWF0dGVyQmFzZS5jIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NTM2QjMxNzQxRjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UxMTAuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNTM2QjMxNzcxRjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UxMTEu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM2QjMxODAxRjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZp
ZWRTb3VyY2UxMTIuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xMjQwOSw3ICsxMjQxMiw2IEBACiAJ
CQkJNTM2QjMxOUQxRjczNUU3RDAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UxMzUuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNTM1QzI0NkMxRjdBMTc3ODAwNkVDNDBFIC8qIFVuaWZpZWRTb3VyY2Ux
MzYuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTMwQTY2QkMxRkEzRTc4QjAwMjZBNTQ1IC8qIFVu
aWZpZWRTb3VyY2UxMzcuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJRTMxMTM1Q0IyODFCNUIwNTAw
QzFBNEE5IC8qIFp5ZGlzRm9ybWF0dGVySW50ZWwuYyBpbiBTb3VyY2VzICovLAogCQkJCTUzMEE2
NkJEMUZBM0U3OEIwMDI2QTU0NSAvKiBVbmlmaWVkU291cmNlMTM4LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTUzMEE2NkJFMUZBM0U3OEIwMDI2QTU0NSAvKiBVbmlmaWVkU291cmNlMTM5LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTUzMEE2NkJGMUZBM0U3OEIwMDI2QTU0NSAvKiBVbmlmaWVkU291
cmNlMTQwLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMTI0MjAsNyArMTI0MjIsNiBAQAogCQkJCTUz
MEE2NkM0MUZBM0U3OEIwMDI2QTU0NSAvKiBVbmlmaWVkU291cmNlMTQ1LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTUzOEYxNUYyMjY4RkJDN0IwMEQ2MDFDNCAvKiBVbmlmaWVkU291cmNlMTQ2LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTUzOEYxNUVFMjY4RkJCQjYwMEQ2MDFDNCAvKiBVbmlmaWVk
U291cmNlMTQ3LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUUzMTEzNUM5MjgxQjVCMDAwMEMxQTRB
OSAvKiBaeWRpc0Zvcm1hdHRlckFUVC5jIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM4RjE1RTcyNjhG
QkJCNjAwRDYwMUM0IC8qIFVuaWZpZWRTb3VyY2UxNDguY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NTM4RjE1RjAyNjhGQkJCNjAwRDYwMUM0IC8qIFVuaWZpZWRTb3VyY2UxNDkuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNTM4RjE1RUIyNjhGQkJCNjAwRDYwMUM0IC8qIFVuaWZpZWRTb3VyY2UxNTAu
Y3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xMjQzMCw2ICsxMjQzMSw5IEBACiAJCQkJNTM4RjE1RUEy
NjhGQkJCNjAwRDYwMUM0IC8qIFVuaWZpZWRTb3VyY2UxNTQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNTM4RjE1RUYyNjhGQkJCNjAwRDYwMUM0IC8qIFVuaWZpZWRTb3VyY2UxNTUuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNTI1QzlDREYyMjAyODU4MzAwODJEQkZEIC8qIFdhc21BaXJJUkdlbmVy
YXRvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMzExMzVDOTI4MUI1QjAwMDBDMUE0QTkgLyog
WnlkaXNGb3JtYXR0ZXJBVFQuYyBpbiBTb3VyY2VzICovLAorCQkJCUUzMTEzNUNBMjgxQjVCMDMw
MEMxQTRBOSAvKiBaeWRpc0Zvcm1hdHRlckJhc2UuYyBpbiBTb3VyY2VzICovLAorCQkJCUUzMTEz
NUNCMjgxQjVCMDUwMEMxQTRBOSAvKiBaeWRpc0Zvcm1hdHRlckludGVsLmMgaW4gU291cmNlcyAq
LywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJ
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAK
aW5kZXggOTliOTIzOWI0ZDU0YzZmMTU5YTRkZWRmNDFhNTU0NmRhNWUwZDg3YS4uNDFiM2U0YjZk
NzQ0YjRiNjM4Y2UxMjYxYjNlMzI0ZDhkYzJiMjY2YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTExMDgyLDcgKzExMDgyLDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNoZWNrSlNDYXN0KE5vZGUqIG5vZGUpCiAgICAg
ICAgIEdQUlJlZyBzcGVjaWZpZWRHUFIgPSBzcGVjaWZpZWQuZ3ByKCk7CiAKICAgICAgICAgbV9q
aXQuZW1pdExvYWRTdHJ1Y3R1cmUodm0oKSwgYmFzZUdQUiwgb3RoZXJHUFIpOwotICAgICAgICBt
X2ppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhvdGhlckdQUiwgU3RydWN0dXJlOjpj
bGFzc0luZm9PZmZzZXQoKSksIG90aGVyR1BSKTsKKyAgICAgICAgbV9qaXQubG9hZENvbXBhY3RQ
dHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKG90aGVyR1BSLCBTdHJ1Y3R1cmU6OmNsYXNzSW5mb09m
ZnNldCgpKSwgb3RoZXJHUFIpOwogICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIobm9k
ZS0+Y2xhc3NJbmZvKCkpLCBzcGVjaWZpZWRHUFIpOwogCiAgICAgICAgIENDYWxsSGVscGVyczo6
TGFiZWwgbG9vcCA9IG1faml0LmxhYmVsKCk7CkBAIC0xMTI5Myw3ICsxMTI5Myw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVGdW5jdGlvblRvU3RyaW5nKE5vZGUqIG5vZGUpCiAgICAg
c3BlY3VsYXRlRnVuY3Rpb24obm9kZS0+Y2hpbGQxKCksIGZ1bmN0aW9uLmdwcigpKTsKIAogICAg
IG1faml0LmVtaXRMb2FkU3RydWN0dXJlKHZtKCksIGZ1bmN0aW9uLmdwcigpLCByZXN1bHQuZ3By
KCkpOwotICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0Lmdwcigp
LCBTdHJ1Y3R1cmU6OmNsYXNzSW5mb09mZnNldCgpKSwgcmVzdWx0LmdwcigpKTsKKyAgICBtX2pp
dC5sb2FkQ29tcGFjdFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHQuZ3ByKCksIFN0cnVj
dHVyZTo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCByZXN1bHQuZ3ByKCkpOwogICAgIHN0YXRpY19hc3Nl
cnQoc3RkOjppc19maW5hbF92PEpTQm91bmRGdW5jdGlvbj4sICJXZSBkb24ndCBoYW5kbGUgc3Vi
Y2xhc3NlcyB3aGVuIGNvbXBhcmluZyBjbGFzc0luZm8gYmVsb3ciKTsKICAgICBzbG93Q2FzZXMu
YXBwZW5kKG1faml0LmJyYW5jaFB0cihDQ2FsbEhlbHBlcnM6OkVxdWFsLCByZXN1bHQuZ3ByKCks
IFRydXN0ZWRJbW1QdHIoSlNCb3VuZEZ1bmN0aW9uOjppbmZvKCkpKSk7CiAKQEAgLTE0ODYyLDcg
KzE0ODYyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZVByb21pc2UoTm9k
ZSogbm9kZSkKICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaFRlc3QzMihDQ2FsbEhl
bHBlcnM6Olplcm8sIHN0cnVjdHVyZUdQUikpOwogICAgIG1faml0LmVtaXROb25OdWxsRGVjb2Rl
WmVyb0V4dGVuZGVkU3RydWN0dXJlSUQoc3RydWN0dXJlR1BSLCBzdHJ1Y3R1cmVHUFIpOwogICAg
IG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihub2RlLT5pc0ludGVybmFsUHJvbWlzZSgpID8gSlNJ
bnRlcm5hbFByb21pc2U6OmluZm8oKSA6IEpTUHJvbWlzZTo6aW5mbygpKSwgc2NyYXRjaDFHUFIp
OwotICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoUHRyKENDYWxsSGVscGVyczo6Tm90
RXF1YWwsIHNjcmF0Y2gxR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3RydWN0dXJlR1BSLCBT
dHJ1Y3R1cmU6OmNsYXNzSW5mb09mZnNldCgpKSkpOworICAgIHNsb3dDYXNlcy5hcHBlbmQobV9q
aXQuYnJhbmNoQ29tcGFjdFB0cihDQ2FsbEhlbHBlcnM6Ok5vdEVxdWFsLCBzY3JhdGNoMUdQUiwg
Q0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0cnVjdHVyZUdQUiwgU3RydWN0dXJlOjpjbGFzc0luZm9P
ZmZzZXQoKSksIHNjcmF0Y2gyR1BSKSk7CiAgICAgbV9qaXQubG9hZExpbmthYmxlQ29uc3RhbnQo
SklUQ29tcGlsZXI6OkxpbmthYmxlQ29uc3RhbnQobV9ncmFwaCwgZ2xvYmFsT2JqZWN0KSwgc2Ny
YXRjaDFHUFIpOwogICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoUHRyKENDYWxsSGVs
cGVyczo6Tm90RXF1YWwsIHNjcmF0Y2gxR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3RydWN0
dXJlR1BSLCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSkpOwogCkBAIC0xNDkxMSw3
ICsxNDkxMSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVJbnRlcm5hbEZp
ZWxkT2JqZWN0KE5vZGUqIG5vZGUsIE9wZXJhdGlvbiBvcGVyCiAgICAgc2xvd0Nhc2VzLmFwcGVu
ZChtX2ppdC5icmFuY2hUZXN0MzIoQ0NhbGxIZWxwZXJzOjpaZXJvLCBzdHJ1Y3R1cmVHUFIpKTsK
ICAgICBtX2ppdC5lbWl0Tm9uTnVsbERlY29kZVplcm9FeHRlbmRlZFN0cnVjdHVyZUlEKHN0cnVj
dHVyZUdQUiwgc3RydWN0dXJlR1BSKTsKICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIoSlND
bGFzczo6aW5mbygpKSwgc2NyYXRjaDFHUFIpOwotICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQu
YnJhbmNoUHRyKENDYWxsSGVscGVyczo6Tm90RXF1YWwsIHNjcmF0Y2gxR1BSLCBDQ2FsbEhlbHBl
cnM6OkFkZHJlc3Moc3RydWN0dXJlR1BSLCBTdHJ1Y3R1cmU6OmNsYXNzSW5mb09mZnNldCgpKSkp
OworICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoQ29tcGFjdFB0cihDQ2FsbEhlbHBl
cnM6Ok5vdEVxdWFsLCBzY3JhdGNoMUdQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0cnVjdHVy
ZUdQUiwgU3RydWN0dXJlOjpjbGFzc0luZm9PZmZzZXQoKSksIHNjcmF0Y2gyR1BSKSk7CiAgICAg
bV9qaXQubG9hZExpbmthYmxlQ29uc3RhbnQoSklUQ29tcGlsZXI6OkxpbmthYmxlQ29uc3RhbnQo
bV9ncmFwaCwgZ2xvYmFsT2JqZWN0KSwgc2NyYXRjaDFHUFIpOwogICAgIHNsb3dDYXNlcy5hcHBl
bmQobV9qaXQuYnJhbmNoUHRyKENDYWxsSGVscGVyczo6Tm90RXF1YWwsIHNjcmF0Y2gxR1BSLCBD
Q2FsbEhlbHBlcnM6OkFkZHJlc3Moc3RydWN0dXJlR1BSLCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVj
dE9mZnNldCgpKSkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
QWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCmluZGV4IGZlMjlkZDJiZTdjMjUzZTUxYTg0M2FmMjk3
ZDg1MWJhOWY0NDU2YmEuLmIyOGRlNjIyYjIzMzBlNzFlZmQ3ZDZhNzVlNDA4MTk5ZTk5ODBjYmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVw
b3NpdG9yeS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFw
UmVwb3NpdG9yeS5oCkBAIC0xNDcsNyArMTQ3LDYgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFj
ZSBGVEwgewogICAgIG1hY3JvKFN0cnVjdHVyZV9vdXRPZkxpbmVUeXBlRmxhZ3MsIFN0cnVjdHVy
ZTo6b3V0T2ZMaW5lVHlwZUZsYWdzT2Zmc2V0KCkpIFwKICAgICBtYWNybyhTdHJ1Y3R1cmVfcHJl
dmlvdXNPclJhcmVEYXRhLCBTdHJ1Y3R1cmU6OnByZXZpb3VzT3JSYXJlRGF0YU9mZnNldCgpKSBc
CiAgICAgbWFjcm8oU3RydWN0dXJlX3Byb3RvdHlwZSwgU3RydWN0dXJlOjpwcm90b3R5cGVPZmZz
ZXQoKSkgXAotICAgIG1hY3JvKFN0cnVjdHVyZV9zdHJ1Y3R1cmVJRCwgU3RydWN0dXJlOjpzdHJ1
Y3R1cmVJRE9mZnNldCgpKSBcCiAgICAgbWFjcm8oU3RydWN0dXJlUmFyZURhdGFfY2FjaGVkS2V5
cywgU3RydWN0dXJlUmFyZURhdGE6Om9mZnNldE9mQ2FjaGVkUHJvcGVydHlOYW1lcyhDYWNoZWRQ
cm9wZXJ0eU5hbWVzS2luZDo6S2V5cykpIFwKICAgICBtYWNybyhTdHJ1Y3R1cmVSYXJlRGF0YV9j
YWNoZWRHZXRPd25Qcm9wZXJ0eU5hbWVzLCBTdHJ1Y3R1cmVSYXJlRGF0YTo6b2Zmc2V0T2ZDYWNo
ZWRQcm9wZXJ0eU5hbWVzKENhY2hlZFByb3BlcnR5TmFtZXNLaW5kOjpHZXRPd25Qcm9wZXJ0eU5h
bWVzKSkgXAogICAgIG1hY3JvKFN0cnVjdHVyZVJhcmVEYXRhX2NhY2hlZFByb3BlcnR5TmFtZUVu
dW1lcmF0b3JBbmRGbGFnLCBTdHJ1Y3R1cmVSYXJlRGF0YTo6b2Zmc2V0T2ZDYWNoZWRQcm9wZXJ0
eU5hbWVFbnVtZXJhdG9yQW5kRmxhZygpKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggN2VkMzczNzk0M2I3MzFhNmUzZmQ1YzdmOTMwYzA1
MjY5ZDk4NWU2ZS4uNzMzYzlmOTRlNDZmZGRkMmM5NmI1YzgyZTVjMjY3MzRhODIyMjI5NiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtMTY4
MzIsNiArMTY4MzIsMTYgQEAgSUdOT1JFX0NMQU5HX1dBUk5JTkdTX0VORAogICAgICAgICAgICAg
b2JqZWN0LCBtX2hlYXBzLkpTQ2VsbF91c2VmdWxCeXRlcyk7CiAgICAgfQogCisgICAgTFZhbHVl
IGVuY29kZVN0cnVjdHVyZShMVmFsdWUgc3RydWN0dXJlKQorICAgIHsKKyNpZiBFTkFCTEUoU1RS
VUNUVVJFX0lEX1dJVEhfU0hJRlQpCisgICAgICAgIHJldHVybiBtX291dC5jYXN0VG9JbnQzMiht
X291dC5sU2hyKHN0cnVjdHVyZSwgbV9vdXQuY29uc3RJbnQzMihTdHJ1Y3R1cmVJRDo6ZW5jb2Rl
U2hpZnRBbW91bnQpKSk7CisjZWxpZiBDUFUoQUREUkVTUzY0KQorICAgICAgICByZXR1cm4gbV9v
dXQuY2FzdFRvSW50MzIobV9vdXQuYml0QW5kKHN0cnVjdHVyZSwgbV9vdXQuY29uc3RJbnQ2NChT
dHJ1Y3R1cmVJRDo6c3RydWN0dXJlSURNYXNrKSkpOworI2VuZGlmCisgICAgICAgIHJldHVybiBz
dHJ1Y3R1cmU7CisgICAgfQorCiAgICAgdm9pZCBzdG9yZVN0cnVjdHVyZShMVmFsdWUgb2JqZWN0
LCBMVmFsdWUgc3RydWN0dXJlKQogICAgIHsKICAgICAgICAgaWYgKHN0cnVjdHVyZS0+aGFzSW50
UHRyKCkpIHsKQEAgLTE2ODM5LDcgKzE2ODQ5LDcgQEAgSUdOT1JFX0NMQU5HX1dBUk5JTkdTX0VO
RAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgTFZhbHVlIGlkID0g
bV9vdXQubG9hZDMyKHN0cnVjdHVyZSwgbV9oZWFwcy5TdHJ1Y3R1cmVfc3RydWN0dXJlSUQpOwor
ICAgICAgICBMVmFsdWUgaWQgPSBlbmNvZGVTdHJ1Y3R1cmUoc3RydWN0dXJlKTsKICAgICAgICAg
bV9vdXQuc3RvcmUzMihpZCwgb2JqZWN0LCBtX2hlYXBzLkpTQ2VsbF9zdHJ1Y3R1cmVJRCk7CiAK
ICAgICAgICAgTFZhbHVlIGJsb2IgPSBtX291dC5sb2FkMzIoc3RydWN0dXJlLCBtX2hlYXBzLlN0
cnVjdHVyZV9pbmRleGluZ01vZGVJbmNsdWRpbmdIaXN0b3J5KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbXBhY3RCbG9vbUZpbHRlci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvQ29tcGFjdEJsb29tRmlsdGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDgxNjczYTQz
MTI2ZDMzYzVlZDNkY2E2NTExMTA0Mzk5ZjU2YmNlZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbXBhY3RCbG9vbUZpbHRlci5oCkBAIC0wLDAgKzEsNjgg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9Db21wYWN0UmVm
UHRyLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBDb21wYWN0Qmxvb21GaWx0ZXIgewor
ICAgIHVzaW5nIENvbXBhY3RlZCA9IFdURjo6Q29tcGFjdGVkPG51bGxwdHJfdD47CisgICAgdXNp
bmcgU3RvcmFnZVNpemUgPSBDb21wYWN0ZWQ6OlN0b3JhZ2VTaXplOworCitwdWJsaWM6CisgICAg
Q29tcGFjdEJsb29tRmlsdGVyKCkgPSBkZWZhdWx0OworCisgICAgQ29tcGFjdEJsb29tRmlsdGVy
KFN0b3JhZ2VTaXplIGJpdHMpCisgICAgICAgIDogbV9iaXRzKGJpdHMpCisgICAgeworICAgIH0K
KworICAgIHZvaWQgYWRkKHVpbnRwdHJfdCBwdHIpIHsgbV9iaXRzIHw9IENvbXBhY3RlZDo6ZW5j
b2RlKHB0cik7IH0KKworICAgIHZvaWQgYWRkKENvbXBhY3RCbG9vbUZpbHRlciYgb3RoZXIpIHsg
bV9iaXRzIHw9IG90aGVyLm1fYml0czsgfQorCisgICAgYm9vbCBydWxlT3V0KHVpbnRwdHJfdCBw
dHIpIGNvbnN0CisgICAgeworICAgICAgICBTdG9yYWdlU2l6ZSBiaXRzID0gQ29tcGFjdGVkOjpl
bmNvZGUocHRyKTsKKyAgICAgICAgaWYgKCFiaXRzKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisKKyAgICAgICAgaWYgKChiaXRzICYgbV9iaXRzKSAhPSBiaXRzKQorICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0gLy8gVHJ1ZSBmb3IgMC4K
KworICAgIHZvaWQgcmVzZXQoKSB7IG1fYml0cyA9IDA7IH0KKworICAgIFN0b3JhZ2VTaXplIGJp
dHMoKSBjb25zdCB7IHJldHVybiBtX2JpdHM7IH0KKworcHJpdmF0ZToKKyAgICBTdG9yYWdlU2l6
ZSBtX2JpdHMgeyAwIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAppbmRleCBmZWQ5MTE2ZjZlM2VmZTIz
OWQzZmQyY2M4YWFkNWUzNjg3M2I2NzAxLi4xMDQxNWRmZTA5MTI3YWZlODQ5OTIwY2M2OTU0OTVm
YTgzZjcyOWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5
SGVscGVycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBl
cnMuY3BwCkBAIC0zMzIsNyArMzMyLDggQEAgdm9pZCBBc3NlbWJseUhlbHBlcnM6OmVtaXRTdG9y
ZVN0cnVjdHVyZVdpdGhUeXBlSW5mbyhBc3NlbWJseUhlbHBlcnMmIGppdCwgVHJ1c3QKIHsKICAg
ICBjb25zdCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZVB0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
U3RydWN0dXJlKj4oc3RydWN0dXJlLm1fdmFsdWUpOwogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAg
aml0LnN0b3JlNjQoVHJ1c3RlZEltbTY0KHN0cnVjdHVyZVB0ci0+aWRCbG9iKCkpLCBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhkZXN0LCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpKTsKKyAg
ICBqaXQuc3RvcmUzMihUcnVzdGVkSW1tMzIoU3RydWN0dXJlSUQ6OmVuY29kZShzdHJ1Y3R1cmVQ
dHIpLmJpdHMoKSksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRlc3QsIEpTQ2VsbDo6c3RydWN0
dXJlSURPZmZzZXQoKSkpOworICAgIGppdC5zdG9yZTMyKFRydXN0ZWRJbW0zMihzdHJ1Y3R1cmVQ
dHItPmlkQmxvYigpKSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGVzdCwgSlNDZWxsOjppbmRl
eGluZ1R5cGVBbmRNaXNjT2Zmc2V0KCkpKTsKICAgICBpZiAoQVNTRVJUX0VOQUJMRUQpIHsKICAg
ICAgICAgSnVtcCBjb3JyZWN0U3RydWN0dXJlID0gaml0LmJyYW5jaDMyKEVxdWFsLCBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhkZXN0LCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBUcnVz
dGVkSW1tMzIoc3RydWN0dXJlUHRyLT5pZCgpLmJpdHMoKSkpOwogICAgICAgICBqaXQuYWJvcnRX
aXRoUmVhc29uKEFIU3RydWN0dXJlSURJc1ZhbGlkKTsKQEAgLTQyOCw2ICs0MjksMTUgQEAgdm9p
ZCBBc3NlbWJseUhlbHBlcnM6OmVtaXRMb2FkU3RydWN0dXJlKFZNJiwgUmVnaXN0ZXJJRCBzb3Vy
Y2UsIFJlZ2lzdGVySUQgZGVzdCkKICAgICBlbWl0Tm9uTnVsbERlY29kZVplcm9FeHRlbmRlZFN0
cnVjdHVyZUlEKGRlc3QsIGRlc3QpOwogfQogCit2b2lkIEFzc2VtYmx5SGVscGVyczo6ZW1pdEVu
Y29kZVN0cnVjdHVyZShSZWdpc3RlcklEIHNvdXJjZSwgUmVnaXN0ZXJJRCBkZXN0KQoreworI2lm
IEVOQUJMRShTVFJVQ1RVUkVfSURfV0lUSF9TSElGVCkKKyAgICB1cnNoaWZ0MzIoc291cmNlLCBU
cnVzdGVkSW1tMzIoU3RydWN0dXJlSUQ6OmVuY29kZVNoaWZ0QW1vdW50KSwgZGVzdCk7CisjZWxp
ZiBDUFUoQUREUkVTUzY0KQorICAgIGFuZDMyKFRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDx1aW50
MzJfdD4oU3RydWN0dXJlSUQ6OnN0cnVjdHVyZUlETWFzaykpLCBzb3VyY2UsIGRlc3QpOworI2Vu
ZGlmCit9CisKIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjplbWl0TG9hZFByb3RvdHlwZShWTSYgdm0s
IEdQUlJlZyBvYmplY3RHUFIsIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MsIEp1bXBMaXN0JiBzbG93
UGF0aCkKIHsKICAgICBBU1NFUlQocmVzdWx0UmVncy5wYXlsb2FkR1BSKCkgIT0gb2JqZWN0R1BS
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJz
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCmluZGV4IGZj
NTllYTk0Y2NhM2VhY2IyMTVkM2NkYWMwZDZiZDQ3NzM3OTNiZWEuLmRjMmFiNzhkMDdiMGYwMzQw
NGJkZGNmNTRjNTQ5M2U5YTQzZmY1YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9B
c3NlbWJseUhlbHBlcnMuaApAQCAtMTYxMyw2ICsxNjEzLDcgQEAgcHVibGljOgogICAgIHZvaWQg
ZW1pdE5vbk51bGxEZWNvZGVaZXJvRXh0ZW5kZWRTdHJ1Y3R1cmVJRChSZWdpc3RlcklEIHNvdXJj
ZSwgUmVnaXN0ZXJJRCBkZXN0KTsKICAgICB2b2lkIGVtaXRMb2FkU3RydWN0dXJlKFZNJiwgUmVn
aXN0ZXJJRCBzb3VyY2UsIFJlZ2lzdGVySUQgZGVzdCk7CiAgICAgdm9pZCBlbWl0TG9hZFByb3Rv
dHlwZShWTSYsIEdQUlJlZyBvYmplY3RHUFIsIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MsIEp1bXBM
aXN0JiBzbG93UGF0aCk7CisgICAgdm9pZCBlbWl0RW5jb2RlU3RydWN0dXJlKFJlZ2lzdGVySUQg
c291cmNlLCBSZWdpc3RlcklEIGRlc3QpOwogCiAgICAgdm9pZCBlbWl0U3RvcmVTdHJ1Y3R1cmVX
aXRoVHlwZUluZm8oVHJ1c3RlZEltbVB0ciBzdHJ1Y3R1cmUsIFJlZ2lzdGVySUQgZGVzdCwgUmVn
aXN0ZXJJRCkKICAgICB7CkBAIC0xNjIxLDE3ICsxNjIyLDE2IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgZW1pdFN0b3JlU3RydWN0dXJlV2l0aFR5cGVJbmZvKFJlZ2lzdGVySUQgc3RydWN0dXJlLCBS
ZWdpc3RlcklEIGRlc3QsIFJlZ2lzdGVySUQgc2NyYXRjaCkKICAgICB7CisgICAgICAgIC8vIFN0
b3JlIHRoZSBTdHJ1Y3R1cmVJRAogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIGxvYWQ2NChN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdHJ1Y3R1cmUsIFN0cnVjdHVyZTo6c3RydWN0dXJlSURP
ZmZzZXQoKSksIHNjcmF0Y2gpOwotICAgICAgICBzdG9yZTY0KHNjcmF0Y2gsIE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKGRlc3QsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSkpOworICAgICAg
ICBlbWl0RW5jb2RlU3RydWN0dXJlKHN0cnVjdHVyZSwgc2NyYXRjaCk7CisgICAgICAgIHN0b3Jl
MzIoc2NyYXRjaCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGVzdCwgSlNDZWxsOjpzdHJ1Y3R1
cmVJRE9mZnNldCgpKSk7CiAjZWxzZQorICAgICAgICBzdG9yZVB0cihzdHJ1Y3R1cmUsIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKGRlc3QsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSkpOwor
I2VuZGlmCiAgICAgICAgIC8vIFN0b3JlIGFsbCB0aGUgaW5mbyBmbGFncyB1c2luZyBhIHNpbmds
ZSAzMi1iaXQgd2lkZSBsb2FkIGFuZCBzdG9yZS4KICAgICAgICAgbG9hZDMyKE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKHN0cnVjdHVyZSwgU3RydWN0dXJlOjppbmRleGluZ01vZGVJbmNsdWRpbmdI
aXN0b3J5T2Zmc2V0KCkpLCBzY3JhdGNoKTsKICAgICAgICAgc3RvcmUzMihzY3JhdGNoLCBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhkZXN0LCBKU0NlbGw6OmluZGV4aW5nVHlwZUFuZE1pc2NPZmZz
ZXQoKSkpOwotCi0gICAgICAgIC8vIFN0b3JlIHRoZSBTdHJ1Y3R1cmVJRAotICAgICAgICBzdG9y
ZVB0cihzdHJ1Y3R1cmUsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRlc3QsIEpTQ2VsbDo6c3Ry
dWN0dXJlSURPZmZzZXQoKSkpOwotI2VuZGlmCiAgICAgfQogCiAgICAgc3RhdGljIHZvaWQgZW1p
dFN0b3JlU3RydWN0dXJlV2l0aFR5cGVJbmZvKEFzc2VtYmx5SGVscGVycyYgaml0LCBUcnVzdGVk
SW1tUHRyIHN0cnVjdHVyZSwgUmVnaXN0ZXJJRCBkZXN0KTsKQEAgLTE5MTQsNyArMTkxNCwzMCBA
QCBwdWJsaWM6CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBvdXRPZkxpbmVDYXBh
Y2l0eTsgKytpKQogICAgICAgICAgICAgc3RvcmVUcnVzdGVkVmFsdWUoSlNWYWx1ZSgpLCBBZGRy
ZXNzKGJ1dHRlcmZseUdQUiwgLXNpemVvZihJbmRleGluZ0hlYWRlcikgLSAoaSArIDEpICogc2l6
ZW9mKEVuY29kZWRKU1ZhbHVlKSkpOwogICAgIH0KLSAgICAKKworICAgIHZvaWQgbG9hZENvbXBh
Y3RQdHIoQWRkcmVzcyBhZGRyZXNzLCBHUFJSZWcgZGVzdCkKKyAgICB7CisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKKyAgICAgICAgbG9hZDMyKGFkZHJlc3MsIGRlc3QpOworICAgICAgICBsc2hp
ZnQ2NChUcnVzdGVkSW1tMzIoNCksIGRlc3QpOworI2Vsc2UKKyAgICAgICAgbG9hZFB0cihhZGRy
ZXNzLCBkZXN0KTsKKyNlbmRpZgorICAgIH0KKworICAgIEp1bXAgYnJhbmNoQ29tcGFjdFB0cihS
ZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEdQUlJlZyBsZWZ0LCBBZGRyZXNzIHJpZ2h0LCBHUFJS
ZWcgc2NyYXRjaCkKKyAgICB7CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICAgICAgQVNT
RVJUKGxlZnQgIT0gc2NyYXRjaCk7CisgICAgICAgIGxvYWQzMihyaWdodCwgc2NyYXRjaCk7Cisg
ICAgICAgIGxzaGlmdDY0KFRydXN0ZWRJbW0zMig0KSwgc2NyYXRjaCk7CisgICAgICAgIHJldHVy
biBicmFuY2hQdHIoY29uZCwgbGVmdCwgQWRkcmVzcyhzY3JhdGNoKSk7CisjZWxzZQorICAgICAg
ICAodm9pZClzY3JhdGNoOworICAgICAgICByZXR1cm4gYnJhbmNoUHRyKGNvbmQsIGxlZnQsIHJp
Z2h0KTsKKyNlbmRpZgorICAgIH0gICAKKwogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgdm9pZCB3
YW5nc0ludDY0SGFzaChHUFJSZWcgaW5wdXRBbmRSZXN1bHQsIEdQUlJlZyBzY3JhdGNoKTsKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFj
Y2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNw
cAppbmRleCA3NGY0OTlkYzdhNWYyOTE3OTU2YjA5YWE0ZjQ5NGM5ZmVhYzkxYThjLi4zYjA2YjVl
OTVhNmY2ZjIwNzU5YWRhNWVlMjBhZTcyODQwZDE0N2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcApAQCAtMTgwOSw3ICsxODA5LDcgQEAg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OmdlbmVyYXRlT3BHZXRG
cm9tU2NvcGVUaHVuayhWTSYgdm0pCiAgICAgICAgICAgICAvLyBTdHJ1Y3R1cmUgY2hlY2sgY292
ZXJzIHZhciBpbmplY3Rpb24gc2luY2Ugd2UgZG9uJ3QgY2FjaGUgc3RydWN0dXJlcyBmb3IgYW55
dGhpbmcgYnV0IHRoZSBHbG9iYWxPYmplY3QuIEFkZGl0aW9uYWxseSwgcmVzb2x2ZV9zY29wZSBo
YW5kbGVzIGNoZWNraW5nIGZvciB0aGUgdmFyIGluamVjdGlvbi4KICAgICAgICAgICAgIGppdC5s
b2FkUHRyKEFkZHJlc3MobWV0YWRhdGFHUFIsIE9wR2V0RnJvbVNjb3BlOjpNZXRhZGF0YTo6b2Zm
c2V0T2ZTdHJ1Y3R1cmUoKSksIHNjcmF0Y2hHUFIpOwogICAgICAgICAgICAgc2xvd0Nhc2UuYXBw
ZW5kKGppdC5icmFuY2hUZXN0UHRyKFplcm8sIHNjcmF0Y2hHUFIpKTsKLSAgICAgICAgICAgIGpp
dC5sb2FkMzIoQWRkcmVzcyhzY3JhdGNoR1BSLCBTdHJ1Y3R1cmU6OnN0cnVjdHVyZUlET2Zmc2V0
KCkpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgICAgIGppdC5lbWl0RW5jb2RlU3RydWN0dXJlKHNj
cmF0Y2hHUFIsIHNjcmF0Y2hHUFIpOwogICAgICAgICAgICAgc2xvd0Nhc2UuYXBwZW5kKGppdC5i
cmFuY2gzMihOb3RFcXVhbCwgQWRkcmVzcyhzY29wZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9m
ZnNldCgpKSwgc2NyYXRjaEdQUikpOwogCiAgICAgICAgICAgICBqaXQuaml0QXNzZXJ0KHNjb3Bl
ZExhbWJkYTxKdW1wKHZvaWQpPihbJl0gKCkgLT4gSnVtcCB7CkBAIC0xOTgyLDcgKzE5ODIsNyBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfdG9fc2NvcGUoY29uc3QgSlNJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogICAgICAgICAgICAgbG9hZFB0ckZyb21NZXRhZGF0YShieXRlY29k
ZSwgT3BQdXRUb1Njb3BlOjpNZXRhZGF0YTo6b2Zmc2V0T2ZTdHJ1Y3R1cmUoKSwgc2NyYXRjaEdQ
UjEpOwogICAgICAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlclBheWxvYWQoc2NvcGUsIHNj
b3BlR1BSKTsKICAgICAgICAgICAgIGFkZFNsb3dDYXNlKGJyYW5jaFRlc3RQdHIoWmVybywgc2Ny
YXRjaEdQUjEpKTsKLSAgICAgICAgICAgIGxvYWQzMihBZGRyZXNzKHNjcmF0Y2hHUFIxLCBTdHJ1
Y3R1cmU6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBzY3JhdGNoR1BSMSk7CisgICAgICAgICAgICBl
bWl0RW5jb2RlU3RydWN0dXJlKHNjcmF0Y2hHUFIxLCBzY3JhdGNoR1BSMSk7CiAgICAgICAgICAg
ICBhZGRTbG93Q2FzZShicmFuY2gzMihOb3RFcXVhbCwgQWRkcmVzcyhzY29wZUdQUiwgSlNDZWxs
OjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgc2NyYXRjaEdQUjEpKTsKIAogICAgICAgICAgICAgZW1p
dEdldFZpcnR1YWxSZWdpc3Rlcih2YWx1ZSwgdmFsdWVKU1IpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9DbGFzc0luZm8uaAppbmRleCBhNTc2OTI4ZWQ4YWJjMTI1ZDk1ODU0OGRhZDBk
OWQwZDQ5NTA3NzkxLi41ODRlZDIxYWY5Mjc0MWRkNmQ1Mzk2M2Q0ZjU0MGJkOWMyMzVhOWRhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaApAQCAtMTcyLDcgKzE3
Miw3IEBAIHN0cnVjdCBNZXRob2RUYWJsZSB7CiAgICAgQ2xhc3NOYW1lOjpUeXBlZEFycmF5U3Rv
cmFnZVR5cGUsIFwKICAgICBzaXplb2YoQ2xhc3NOYW1lKSwKIAotc3RydWN0IENsYXNzSW5mbyB7
CitzdHJ1Y3QgYWxpZ25hcygxNikgQ2xhc3NJbmZvIHsKICAgICB1c2luZyBDaGVja0pTQ2FzdFNu
aXBwZXRGdW5jdGlvblB0ciA9IFJlZjxTbmlwcGV0PiAoKikodm9pZCk7CiAKICAgICAvLyBBIHN0
cmluZyBkZW5vdGluZyB0aGUgY2xhc3MgbmFtZS4gRXhhbXBsZTogIldpbmRvdyIuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAppbmRleCBhY2ZkODZjNDU2ZDdk
MDViMTliZGQyMDI0YjUwZjRlODhhOTM5MjY2Li4xMjcwZjY1NDVjZDEzMWI1MTI5OTY5M2VlYzJk
NDNiMzY0YjdkMWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVy
ZS5jcHAKQEAgLTE5Nyw3ICsxOTcsNyBAQCBpbmxpbmUgdm9pZCBTdHJ1Y3R1cmU6OnZhbGlkYXRl
RmxhZ3MoKSB7IH0KIAogU3RydWN0dXJlOjpTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSwgY29uc3QgVHlwZUluZm8mIHR5cGVJ
bmZvLCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbywgSW5kZXhpbmdUeXBlIGluZGV4aW5nVHlw
ZSwgdW5zaWduZWQgaW5saW5lQ2FwYWNpdHkpCiAgICAgOiBKU0NlbGwodm0sIHZtLnN0cnVjdHVy
ZVN0cnVjdHVyZS5nZXQoKSkKLSAgICAsIG1fYmxvYihTdHJ1Y3R1cmVJRDo6ZW5jb2RlKHRoaXMp
LCBpbmRleGluZ1R5cGUsIHR5cGVJbmZvKQorICAgICwgbV9ibG9iKGluZGV4aW5nVHlwZSwgdHlw
ZUluZm8pCiAgICAgLCBtX291dE9mTGluZVR5cGVGbGFncyh0eXBlSW5mby5vdXRPZkxpbmVUeXBl
RmxhZ3MoKSkKICAgICAsIG1faW5saW5lQ2FwYWNpdHkoaW5saW5lQ2FwYWNpdHkpCiAgICAgLCBt
X2JpdEZpZWxkKDApCkBAIC0yNjgsNyArMjY4LDcgQEAgU3RydWN0dXJlOjpTdHJ1Y3R1cmUoVk0m
IHZtLCBDcmVhdGluZ0Vhcmx5Q2VsbFRhZykKICAgICBzZXRNYXhPZmZzZXQodm0sIGludmFsaWRP
ZmZzZXQpOwogIAogICAgIFR5cGVJbmZvIHR5cGVJbmZvID0gVHlwZUluZm8oU3RydWN0dXJlVHlw
ZSwgU3RydWN0dXJlRmxhZ3MpOwotICAgIG1fYmxvYiA9IFN0cnVjdHVyZUlEQmxvYihTdHJ1Y3R1
cmVJRDo6ZW5jb2RlKHRoaXMpLCAwLCB0eXBlSW5mbyk7CisgICAgbV9ibG9iID0gU3RydWN0dXJl
SURCbG9iKDAsIHR5cGVJbmZvKTsKICAgICBtX291dE9mTGluZVR5cGVGbGFncyA9IHR5cGVJbmZv
Lm91dE9mTGluZVR5cGVGbGFncygpOwogCiAgICAgQVNTRVJUKGhhc1JlYWRPbmx5T3JHZXR0ZXJT
ZXR0ZXJQcm9wZXJ0aWVzRXhjbHVkaW5nUHJvdG8oKSB8fCAhbV9jbGFzc0luZm8tPmhhc1N0YXRp
Y1NldHRlck9yUmVhZG9ubHlQcm9wZXJ0aWVzKCkpOwpAQCAtMzA5LDcgKzMwOSw3IEBAIFN0cnVj
dHVyZTo6U3RydWN0dXJlKFZNJiB2bSwgU3RydWN0dXJlKiBwcmV2aW91cykKICAgICBzZXRNYXhP
ZmZzZXQodm0sIGludmFsaWRPZmZzZXQpOwogIAogICAgIFR5cGVJbmZvIHR5cGVJbmZvID0gcHJl
dmlvdXMtPnR5cGVJbmZvKCk7Ci0gICAgbV9ibG9iID0gU3RydWN0dXJlSURCbG9iKFN0cnVjdHVy
ZUlEOjplbmNvZGUodGhpcyksIHByZXZpb3VzLT5pbmRleGluZ01vZGVJbmNsdWRpbmdIaXN0b3J5
KCksIHR5cGVJbmZvKTsKKyAgICBtX2Jsb2IgPSBTdHJ1Y3R1cmVJREJsb2IocHJldmlvdXMtPmlu
ZGV4aW5nTW9kZUluY2x1ZGluZ0hpc3RvcnkoKSwgdHlwZUluZm8pOwogICAgIG1fb3V0T2ZMaW5l
VHlwZUZsYWdzID0gdHlwZUluZm8ub3V0T2ZMaW5lVHlwZUZsYWdzKCk7CiAKICAgICBBU1NFUlQo
IXByZXZpb3VzLT50eXBlSW5mbygpLnN0cnVjdHVyZUlzSW1tb3J0YWwoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCmluZGV4IDlkYTQxZjExMGI0ODY2MzZhZWQw
NDEwOWM5OTExNGQwMGY1OTU0MDguLmEzODgwYzU0MTVkODAzZTYwZjA2ZmUwZDBiMGUzYzRjMzEw
Mjc4OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVy
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCkBAIC0y
Niw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNsYXNzSW5mby5oIgorI2lu
Y2x1ZGUgIkNvbXBhY3RCbG9vbUZpbHRlci5oIgogI2luY2x1ZGUgIkNvbmN1cnJlbmN5LmgiCiAj
aW5jbHVkZSAiQ29uY3VycmVudEpTTG9jay5oIgogI2luY2x1ZGUgIkRlbGV0ZVByb3BlcnR5U2xv
dC5oIgpAQCAtNDEsMTEgKzQyLDEyIEBACiAjaW5jbHVkZSAiU3RydWN0dXJlSURCbG9iLmgiCiAj
aW5jbHVkZSAiU3RydWN0dXJlUmFyZURhdGEuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVUcmFuc2l0
aW9uVGFibGUuaCIKLSNpbmNsdWRlICJUaW55Qmxvb21GaWx0ZXIuaCIKICNpbmNsdWRlICJXYXRj
aHBvaW50LmgiCiAjaW5jbHVkZSAiV3JpdGVCYXJyaWVySW5saW5lcy5oIgogI2luY2x1ZGUgPHd0
Zi9BdG9taWNzLmg+CiAjaW5jbHVkZSA8d3RmL0NvbXBhY3RQb2ludGVyVHVwbGUuaD4KKyNpbmNs
dWRlIDx3dGYvQ29tcGFjdFB0ci5oPgorI2luY2x1ZGUgPHd0Zi9Db21wYWN0UmVmUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CiAKIG5hbWVzcGFjZSBXVEYgewpAQCAtMjI2LDkg
KzIyOCwxNiBAQCBwcml2YXRlOgogICAgIHZvaWQgdmFsaWRhdGVGbGFncygpOwogCiBwdWJsaWM6
Ci0gICAgU3RydWN0dXJlSUQgaWQoKSBjb25zdCB7IEFTU0VSVChtX2Jsb2Iuc3RydWN0dXJlSUQo
KSA9PSBTdHJ1Y3R1cmVJRDo6ZW5jb2RlKHRoaXMpKTsgcmV0dXJuIG1fYmxvYi5zdHJ1Y3R1cmVJ
RCgpOyB9CisgICAgU3RydWN0dXJlSUQgaWQoKSBjb25zdCAKKyAgICB7CisvLyAjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKKy8vICAgICAgICAgc3RhdGljX2Fzc2VydChzaXplb2YoKnRoaXMpID09
IDk2KTsKKy8vICNlbmRpZgorICAgICAgICByZXR1cm4gU3RydWN0dXJlSUQ6OmVuY29kZSh0aGlz
KTsKKyAgICB9CisKICAgICBpbnQzMl90IG9iamVjdEluaXRpYWxpemF0aW9uQmxvYigpIGNvbnN0
IHsgcmV0dXJuIG1fYmxvYi5ibG9iRXhjbHVkaW5nU3RydWN0dXJlSUQoKTsgfQotICAgIGludDY0
X3QgaWRCbG9iKCkgY29uc3QgeyByZXR1cm4gbV9ibG9iLmJsb2IoKTsgfQorICAgIGludDMyX3Qg
aWRCbG9iKCkgY29uc3QgeyByZXR1cm4gbV9ibG9iLmJsb2IoKTsgfQogCiAgICAgYm9vbCBpc1By
b3h5KCkgY29uc3QKICAgICB7CkBAIC0zMjYsNyArMzM1LDcgQEAgcHVibGljOgogICAgIC8vIFR5
cGUgYWNjZXNzb3JzLgogICAgIFR5cGVJbmZvIHR5cGVJbmZvKCkgY29uc3QgeyByZXR1cm4gbV9i
bG9iLnR5cGVJbmZvKG1fb3V0T2ZMaW5lVHlwZUZsYWdzKTsgfQogICAgIGJvb2wgaXNPYmplY3Qo
KSBjb25zdCB7IHJldHVybiB0eXBlSW5mbygpLmlzT2JqZWN0KCk7IH0KLSAgICBjb25zdCBDbGFz
c0luZm8qIGNsYXNzSW5mb0ZvckNlbGxzKCkgY29uc3QgeyByZXR1cm4gbV9jbGFzc0luZm87IH0K
KyAgICBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mb0ZvckNlbGxzKCkgY29uc3QgeyByZXR1cm4g
bV9jbGFzc0luZm8uZ2V0KCk7IH0KIHByb3RlY3RlZDoKICAgICAvLyBZb3UgcHJvYmFibHkgd2Fu
dCB0eXBlSW5mbygpLnR5cGUoKQogICAgIEpTVHlwZSB0eXBlKCkgeyByZXR1cm4gSlNDZWxsOjp0
eXBlKCk7IH0KQEAgLTY0NSwxMSArNjU0LDYgQEAgcHVibGljOgogICAgIH0KICAgICB2b2lkIGNh
Y2hlU3BlY2lhbFByb3BlcnR5KEpTR2xvYmFsT2JqZWN0KiwgVk0mLCBKU1ZhbHVlLCBDYWNoZWRT
cGVjaWFsUHJvcGVydHlLZXksIGNvbnN0IFByb3BlcnR5U2xvdCYpOwogCi0gICAgc3RhdGljIHB0
cmRpZmZfdCBzdHJ1Y3R1cmVJRE9mZnNldCgpCi0gICAgewotICAgICAgICByZXR1cm4gT0JKRUNU
X09GRlNFVE9GKFN0cnVjdHVyZSwgbV9ibG9iKSArIFN0cnVjdHVyZUlEQmxvYjo6c3RydWN0dXJl
SURPZmZzZXQoKTsKLSAgICB9Ci0KICAgICBzdGF0aWMgcHRyZGlmZl90IHByb3RvdHlwZU9mZnNl
dCgpCiAgICAgewogICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFN0cnVjdHVyZSwgbV9w
cm90b3R5cGUpOwpAQCAtOTUzLDQwICs5NTcsNDAgQEAgcHJpdmF0ZToKIAogICAgIC8vIFRoZXNl
IG5lZWQgdG8gYmUgcHJvcGVybHkgYWxpZ25lZCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSAnU3Ry
dWN0dXJlJwogICAgIC8vIHBhcnQgb2YgdGhlIG9iamVjdC4KLSAgICBTdHJ1Y3R1cmVJREJsb2Ig
bV9ibG9iOwotICAgIFR5cGVJbmZvOjpPdXRPZkxpbmVUeXBlRmxhZ3MgbV9vdXRPZkxpbmVUeXBl
RmxhZ3M7CisgICAgU3RydWN0dXJlSURCbG9iIG1fYmxvYjsgLy8gbWFjT1N8aU9TOiA0IGJ5dGVz
CisgICAgVHlwZUluZm86Ok91dE9mTGluZVR5cGVGbGFncyBtX291dE9mTGluZVR5cGVGbGFnczsg
Ly8gbWFjT1N8aU9TOiAyIGJ5dGVzCiAKLSAgICB1aW50OF90IG1faW5saW5lQ2FwYWNpdHk7Cisg
ICAgdWludDhfdCBtX2lubGluZUNhcGFjaXR5OyAvLyBtYWNPU3xpT1M6IDEgYnl0ZQogCi0gICAg
Q29uY3VycmVudEpTTG9jayBtX2xvY2s7CisgICAgQ29uY3VycmVudEpTTG9jayBtX2xvY2s7IC8v
IG1hY09TfGlPUzogMSBieXRlCiAKLSAgICB1aW50MzJfdCBtX2JpdEZpZWxkOworICAgIHVpbnQz
Ml90IG1fYml0RmllbGQ7IC8vIG1hY09TfGlPUzogNCBieXRlcwogCi0gICAgV3JpdGVCYXJyaWVy
PEpTR2xvYmFsT2JqZWN0PiBtX2dsb2JhbE9iamVjdDsKLSAgICBXcml0ZUJhcnJpZXI8VW5rbm93
bj4gbV9wcm90b3R5cGU7Ci0gICAgbXV0YWJsZSBXcml0ZUJhcnJpZXI8U3RydWN0dXJlQ2hhaW4+
IG1fY2FjaGVkUHJvdG90eXBlQ2hhaW47CisgICAgdWludDE2X3QgbV90cmFuc2l0aW9uT2Zmc2V0
OyAvLyBtYWNPU3xpT1M6IDIgYnl0ZXMKKyAgICB1aW50MTZfdCBtX21heE9mZnNldDsgLy8gbWFj
T1N8aU9TOiAyIGJ5dGVzCiAKLSAgICBXcml0ZUJhcnJpZXI8SlNDZWxsPiBtX3ByZXZpb3VzT3JS
YXJlRGF0YTsKKyAgICBXcml0ZUJhcnJpZXI8SlNHbG9iYWxPYmplY3Q+IG1fZ2xvYmFsT2JqZWN0
OyAvLyBtYWNPU3xpT1M6IDggYnl0ZXMKKyAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4gbV9wcm90
b3R5cGU7IC8vIG1hY09TfGlPUzogOCBieXRlcworICAgIG11dGFibGUgV3JpdGVCYXJyaWVyPFN0
cnVjdHVyZUNoYWluPiBtX2NhY2hlZFByb3RvdHlwZUNoYWluOyAvLyBtYWNPU3xpT1M6IDggYnl0
ZXMKIAotICAgIFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4gbV90cmFuc2l0aW9uUHJvcGVydHlO
YW1lOworICAgIFdyaXRlQmFycmllcjxKU0NlbGw+IG1fcHJldmlvdXNPclJhcmVEYXRhOyAvLyBt
YWNPU3xpT1M6IDggYnl0ZXMKIAotICAgIGNvbnN0IENsYXNzSW5mbyogbV9jbGFzc0luZm87Cisg
ICAgQ29tcGFjdFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4gbV90cmFuc2l0aW9uUHJvcGVydHlO
YW1lOyAvLyBtYWNPUzogOCBieXRlcywgaU9TOiA0IGJ5dGVzCiAKLSAgICBTdHJ1Y3R1cmVUcmFu
c2l0aW9uVGFibGUgbV90cmFuc2l0aW9uVGFibGU7CisgICAgQ29tcGFjdFB0cjxjb25zdCBDbGFz
c0luZm8+IG1fY2xhc3NJbmZvOyAvLyBtYWNPUzogOCBieXRlcywgaU9TOiA0IGJ5dGVzCisKKyAg
ICBTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGUgbV90cmFuc2l0aW9uVGFibGU7IC8vIG1hY09TfGlP
UzogOCBieXRlcwogCiAgICAgLy8gU2hvdWxkIGJlIGFjY2Vzc2VkIHRocm91Z2ggZW5zdXJlUHJv
cGVydHlUYWJsZSgpLiBEdXJpbmcgR0MsIGl0IG1heSBiZSBzZXQgdG8gMCBieSBhbm90aGVyIHRo
cmVhZC4KICAgICAvLyBEdXJpbmcgYSBIZWFwIFNuYXBzaG90IEdDIHdlIGF2b2lkIGNsZWFyaW5n
IHRoZSB0YWJsZSBzbyBpdCBpcyBzYWZlIHRvIHVzZS4KLSAgICBXcml0ZUJhcnJpZXI8UHJvcGVy
dHlUYWJsZT4gbV9wcm9wZXJ0eVRhYmxlVW5zYWZlOworICAgIFdyaXRlQmFycmllcjxQcm9wZXJ0
eVRhYmxlPiBtX3Byb3BlcnR5VGFibGVVbnNhZmU7IC8vIG1hY09TfGlPUzogOCBieXRlcwogCi0g
ICAgbXV0YWJsZSBJbmxpbmVXYXRjaHBvaW50U2V0IG1fdHJhbnNpdGlvbldhdGNocG9pbnRTZXQ7
CisgICAgbXV0YWJsZSBJbmxpbmVXYXRjaHBvaW50U2V0IG1fdHJhbnNpdGlvbldhdGNocG9pbnRT
ZXQ7IC8vIG1hY09TfGlPUzogOCBieXRlcwogCiAgICAgc3RhdGljX2Fzc2VydChmaXJzdE91dE9m
TGluZU9mZnNldCA8IDI1Nik7CiAKLSAgICB1aW50MTZfdCBtX3RyYW5zaXRpb25PZmZzZXQ7Ci0g
ICAgdWludDE2X3QgbV9tYXhPZmZzZXQ7Ci0KLSAgICB1aW50MzJfdCBtX3Byb3BlcnR5SGFzaDsK
LSAgICBUaW55Qmxvb21GaWx0ZXIgbV9zZWVuUHJvcGVydGllczsKKyAgICB1aW50MzJfdCBtX3By
b3BlcnR5SGFzaDsgLy8gbWFjT1N8aU9TOiA0IGJ5dGVzCisgICAgQ29tcGFjdEJsb29tRmlsdGVy
IG1fc2VlblByb3BlcnRpZXM7IC8vIG1hY09TOiA4IGJ5dGVzLCBpT1M6IDQgYnl0ZXMKIAogICAg
IGZyaWVuZCBjbGFzcyBWTUluc3BlY3RvcjsKICAgICBmcmllbmQgY2xhc3MgSlNEb2xsYXJWTUhl
bHBlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVy
ZUlEQmxvYi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSURCbG9i
LmgKaW5kZXggZDRhYzE1MjkxODU0ZjRjNzk3MDgwZWI5MWM5YWRmMzliYjhjN2Q1Yi4uYmY2NzA1
OGRhNTVhNGM5ZTQxNDgyYWMwYTc3NzA1ZDg1ZmEzMTU0NSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSURCbG9iLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSURCbG9iLmgKQEAgLTM3LDE4ICszNywxNiBAQCBj
bGFzcyBTdHJ1Y3R1cmVJREJsb2IgewogcHVibGljOgogICAgIFN0cnVjdHVyZUlEQmxvYigpID0g
ZGVmYXVsdDsKIAotICAgIFN0cnVjdHVyZUlEQmxvYihTdHJ1Y3R1cmVJRCBzdHJ1Y3R1cmVJRCwg
SW5kZXhpbmdUeXBlIGluZGV4aW5nTW9kZUluY2x1ZGluZ0hpc3RvcnksIGNvbnN0IFR5cGVJbmZv
JiB0eXBlSW5mbykKKyAgICBTdHJ1Y3R1cmVJREJsb2IoSW5kZXhpbmdUeXBlIGluZGV4aW5nTW9k
ZUluY2x1ZGluZ0hpc3RvcnksIGNvbnN0IFR5cGVJbmZvJiB0eXBlSW5mbykKICAgICB7Ci0gICAg
ICAgIHUuZmllbGRzLnN0cnVjdHVyZUlEID0gc3RydWN0dXJlSUQ7CiAgICAgICAgIHUuZmllbGRz
LmluZGV4aW5nTW9kZUluY2x1ZGluZ0hpc3RvcnkgPSBpbmRleGluZ01vZGVJbmNsdWRpbmdIaXN0
b3J5OwogICAgICAgICB1LmZpZWxkcy50eXBlID0gdHlwZUluZm8udHlwZSgpOwogICAgICAgICB1
LmZpZWxkcy5pbmxpbmVUeXBlRmxhZ3MgPSB0eXBlSW5mby5pbmxpbmVUeXBlRmxhZ3MoKTsKICAg
ICAgICAgdS5maWVsZHMuZGVmYXVsdENlbGxTdGF0ZSA9IENlbGxTdGF0ZTo6RGVmaW5pdGVseVdo
aXRlOwogICAgIH0KIAotICAgIHZvaWQgb3BlcmF0b3I9KGNvbnN0IFN0cnVjdHVyZUlEQmxvYiYg
b3RoZXIpIHsgdS5kb3VibGVXb3JkID0gb3RoZXIudS5kb3VibGVXb3JkOyB9Ci0gICAgCi0gICAg
U3RydWN0dXJlSUQgc3RydWN0dXJlSUQoKSBjb25zdCB7IHJldHVybiB1LmZpZWxkcy5zdHJ1Y3R1
cmVJRDsgfQorICAgIHZvaWQgb3BlcmF0b3I9KGNvbnN0IFN0cnVjdHVyZUlEQmxvYiYgb3RoZXIp
IHsgdS53b3JkMiA9IG90aGVyLnUud29yZDI7IH0KKwogICAgIEluZGV4aW5nVHlwZSBpbmRleGlu
Z01vZGVJbmNsdWRpbmdIaXN0b3J5KCkgY29uc3QgeyByZXR1cm4gdS5maWVsZHMuaW5kZXhpbmdN
b2RlSW5jbHVkaW5nSGlzdG9yeTsgfQogICAgIERlcGVuZGVuY3kgZmVuY2VkSW5kZXhpbmdNb2Rl
SW5jbHVkaW5nSGlzdG9yeShJbmRleGluZ1R5cGUmIGluZGV4aW5nVHlwZSkKICAgICB7CkBAIC02
MCwxMyArNTgsOCBAQCBwdWJsaWM6CiAgICAgCiAgICAgVHlwZUluZm8gdHlwZUluZm8oVHlwZUlu
Zm86Ok91dE9mTGluZVR5cGVGbGFncyBvdXRPZkxpbmVUeXBlRmxhZ3MpIGNvbnN0IHsgcmV0dXJu
IFR5cGVJbmZvKHR5cGUoKSwgaW5saW5lVHlwZUZsYWdzKCksIG91dE9mTGluZVR5cGVGbGFncyk7
IH0KICAgICAKLSAgICBpbnQzMl90IGJsb2JFeGNsdWRpbmdTdHJ1Y3R1cmVJRCgpIGNvbnN0IHsg
cmV0dXJuIHUud29yZHMud29yZDI7IH0KLSAgICBpbnQ2NF90IGJsb2IoKSBjb25zdCB7IHJldHVy
biB1LmRvdWJsZVdvcmQ7IH0KLSAgICAKLSAgICBzdGF0aWMgcHRyZGlmZl90IHN0cnVjdHVyZUlE
T2Zmc2V0KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoU3RydWN0dXJl
SURCbG9iLCB1LmZpZWxkcy5zdHJ1Y3R1cmVJRCk7Ci0gICAgfQorICAgIGludDMyX3QgYmxvYkV4
Y2x1ZGluZ1N0cnVjdHVyZUlEKCkgY29uc3QgeyByZXR1cm4gdS53b3JkMTsgfQorICAgIGludDMy
X3QgYmxvYigpIGNvbnN0IHsgcmV0dXJuIHUud29yZDI7IH0KIAogICAgIHN0YXRpYyBwdHJkaWZm
X3QgaW5kZXhpbmdNb2RlSW5jbHVkaW5nSGlzdG9yeU9mZnNldCgpCiAgICAgewpAQCAtNzYsMjAg
KzY5LDE1IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdW5pb24gRGF0YSB7CiAgICAgICAgIHN0
cnVjdCB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHJlbW92ZSB0aGlzIHNpbmNl
IHRoZSBzdHJ1Y3R1cmVJRCBjYW4gYmUgZGlyZWN0bHkgY29tcHV0ZWQgZnJvbSB0aGUgU3RydWN0
dXJlKgotICAgICAgICAgICAgU3RydWN0dXJlSUQgc3RydWN0dXJlSUQ7CiAgICAgICAgICAgICBJ
bmRleGluZ1R5cGUgaW5kZXhpbmdNb2RlSW5jbHVkaW5nSGlzdG9yeTsKICAgICAgICAgICAgIEpT
VHlwZSB0eXBlOwogICAgICAgICAgICAgVHlwZUluZm86OklubGluZVR5cGVGbGFncyBpbmxpbmVU
eXBlRmxhZ3M7CiAgICAgICAgICAgICBDZWxsU3RhdGUgZGVmYXVsdENlbGxTdGF0ZTsKICAgICAg
ICAgfSBmaWVsZHM7Ci0gICAgICAgIHN0cnVjdCB7Ci0gICAgICAgICAgICBpbnQzMl90IHdvcmQx
OwotICAgICAgICAgICAgaW50MzJfdCB3b3JkMjsKLSAgICAgICAgfSB3b3JkczsKLSAgICAgICAg
aW50NjRfdCBkb3VibGVXb3JkOworICAgICAgICBpbnQzMl90IHdvcmQxOworICAgICAgICBpbnQz
Ml90IHdvcmQyOwogCi0gICAgICAgIERhdGEoKSB7IGRvdWJsZVdvcmQgPSAweGJiYWRiZWVmOyB9
CisgICAgICAgIERhdGEoKSB7IHdvcmQyID0gMHhiYmFkYmVlZjsgfQogICAgIH07CiAKICAgICBE
YXRhIHU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3Nl
bWJseUZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2Vt
Ymx5RnVuY3Rpb24uY3BwCmluZGV4IGM0ZDJiOTZjMjkzMDcxNTUxZjk2YjhmYTRkY2VhZjUwOTVh
MDliOTUuLjQ0YjY5MmI3ZWU1MjlmMzkxZGNkMjVlZDk4ZmM3ZDI2ZGY3MTVkMTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24u
Y3BwCkBAIC0yNjgsNyArMjY4LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJU
YWc+IFdlYkFzc2VtYmx5RnVuY3Rpb246OmpzQ2FsbEVudHJ5cG9pbnRTbG93KCkKIAogICAgICAg
ICAgICAgICAgIHN0YWNrTGltaXRHUFJJc0Nsb2JiZXJlZCA9IHRydWU7CiAgICAgICAgICAgICAg
ICAgaml0LmVtaXRMb2FkU3RydWN0dXJlKHZtLCBzY3JhdGNoR1BSLCBzY3JhdGNoR1BSKTsKLSAg
ICAgICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc2NyYXRjaEdQ
UiwgU3RydWN0dXJlOjpjbGFzc0luZm9PZmZzZXQoKSksIHNjcmF0Y2hHUFIpOworICAgICAgICAg
ICAgICAgIGppdC5sb2FkQ29tcGFjdFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc2NyYXRjaEdQ
UiwgU3RydWN0dXJlOjpjbGFzc0luZm9PZmZzZXQoKSksIHNjcmF0Y2hHUFIpOwogCiAgICAgICAg
ICAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2ZpbmFsPFdlYkFzc2VtYmx5RnVuY3Rpb24+
Ojp2YWx1ZSwgIldlIGRvIG5vdCBjaGVjayBmb3Igc3VidHlwZXMgYmVsb3ciKTsKICAgICAgICAg
ICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfZmluYWw8V2ViQXNzZW1ibHlXcmFwcGVyRnVu
Y3Rpb24+Ojp2YWx1ZSwgIldlIGRvIG5vdCBjaGVjayBmb3Igc3VidHlwZXMgYmVsb3ciKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDg4MTkyMGRjMmVmYjUw
NDQxMDZkNWFhNTQ5YzUyN2QwNDA3MGFkMTMuLjUxMTcyMzNmMDIyOWQ0NzljYjk5YWZmMzI4MDgw
YTIyZGJkNTRhYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtODExLDYgKzgxMSw4IEBACiAJCUZFMzVEMDkyMjdEQzVFQ0MwMDlERkE1QiAvKiBTdGFja0No
ZWNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZF
MzVEMDkxMjdEQzVFQ0MwMDlERkE1QiAvKiBTdGFja0NoZWNrLmNwcCAqLzsgfTsKIAkJRkVEQUNE
M0QxNjMwRjgzRjAwQzY5NjM0IC8qIFN0YWNrU3RhdHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVEQUNEM0IxNjMwRjgzRjAwQzY5NjM0IC8qIFN0
YWNrU3RhdHMuY3BwICovOyB9OwogCQlGRUVBNERGOTIxNkQ3QkU0MDBBQzA2MDIgLyogU3RhY2tQ
b2ludGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEZFRUE0REY4MjE2RDdCRTQwMEFDMDYwMiAvKiBTdGFja1BvaW50ZXIuY3BwICovOyB9OworCQlG
Rjg5NUYxMTI4MkFCOTY0MDBFN0JBRTggLyogQ29tcGFjdFJlZlB0ci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkY4OTVGMTAyODJBQjk2NDAwRTdCQUU4
IC8qIENvbXBhY3RSZWZQdHIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQlGRkVFNDZGNDI4MjVERjgwMDAzQkM5ODEgLyogQ29tcGFjdFB0ci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkZFRTQ2RjMyODI1
REY4MDAwM0JDOTgxIC8qIENvbXBhY3RQdHIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCiAKIC8q
IEJlZ2luIFBCWEJ1aWxkUnVsZSBzZWN0aW9uICovCkBAIC0xNzE0LDYgKzE3MTYsOCBAQAogCQlG
RUVBNERGODIxNkQ3QkU0MDBBQzA2MDIgLyogU3RhY2tQb2ludGVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0YWNrUG9pbnRlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUZFRjI5NUJGMjBCNDlEQ0IwMENGMjgzQSAvKiBVVEY4Q29udmVyc2lv
bkVycm9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVURjhDb252ZXJzaW9u
RXJyb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkYwQTQzNjU4ODk1NEYzQ0Iw
N0RCRUNBIC8qIFN0ZExpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3Rk
TGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRjg5NUYxMDI4MkFCOTY0MDBF
N0JBRTggLyogQ29tcGFjdFJlZlB0ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBDb21wYWN0UmVmUHRyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZGRUU0NkYz
MjgyNURGODAwMDNCQzk4MSAvKiBDb21wYWN0UHRyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IENvbXBhY3RQdHIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIC8qIEVu
ZCBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYRnJhbWV3b3Jrc0J1
aWxkUGhhc2Ugc2VjdGlvbiAqLwpAQCAtMTkzMCw2ICsxOTM0LDggQEAKIAkJCQkwRjY2QjI4MTFE
Qzk3QkFCMDA0QTFEM0YgLyogQ2xvY2tUeXBlLmggKi8sCiAJCQkJMEZDNEVERTUxNjk2MTQ5NjAw
RjY1MDQxIC8qIENvbW1hUHJpbnRlci5oICovLAogCQkJCUUzQ0Y3NjkwMjExNUQ2QkEwMDkxREU0
OCAvKiBDb21wYWN0UG9pbnRlclR1cGxlLmggKi8sCisJCQkJRkZFRTQ2RjMyODI1REY4MDAwM0JD
OTgxIC8qIENvbXBhY3RQdHIuaCAqLywKKwkJCQlGRjg5NUYxMDI4MkFCOTY0MDBFN0JBRTggLyog
Q29tcGFjdFJlZlB0ci5oICovLAogCQkJCUUzODAyMERCMjQwMUMwOTMwMDM3Q0E5RSAvKiBDb21w
YWN0UmVmUHRyVHVwbGUuaCAqLywKIAkJCQk5Qjk2RTlCMzI0RkY3N0I4MDAxNzU2QzMgLyogQ29t
cGFjdFVuaXF1ZVB0clR1cGxlLmggKi8sCiAJCQkJMEY4RjJCOEYxNzJFMDBGMDAwN0RCREE1IC8q
IENvbXBpbGF0aW9uVGhyZWFkLmNwcCAqLywKQEAgLTI4NjEsNiArMjg2Nyw4IEBACiAJCQkJRERG
MzA3RjQyN0MwODZFQTAwNkE1MjZGIC8qIENvbGxhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlE
RDNEQzkxNjI3QTRCRjhFMDA3RTVCNjEgLyogQ29tbWFQcmludGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQlERDNEQzhGNjI3QTRCRjhFMDA3RTVCNjEgLyogQ29tcGFjdFBvaW50ZXJUdXBsZS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJRkZFRTQ2RjQyODI1REY4MDAwM0JDOTgxIC8qIENvbXBhY3RQdHIu
aCBpbiBIZWFkZXJzICovLAorCQkJCUZGODk1RjExMjgyQUI5NjQwMEU3QkFFOCAvKiBDb21wYWN0
UmVmUHRyLmggaW4gSGVhZGVycyAqLywKIAkJCQlERDNEQzkzOTI3QTRCRjhFMDA3RTVCNjEgLyog
Q29tcGFjdFJlZlB0clR1cGxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlERDNEQzkzNTI3QTRCRjhF
MDA3RTVCNjEgLyogQ29tcGFjdFVuaXF1ZVB0clR1cGxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlE
RDNEQzkwNzI3QTRCRjhFMDA3RTVCNjEgLyogQ29tcGlsYXRpb25UaHJlYWQuaCBpbiBIZWFkZXJz
ICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2Uv
V1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAppbmRleCA3ZWQwYzY1YmY3MDI1MTAwYjU5MjUwNzU3ZTY3
MzYyNmM2Y2JlNGEyLi5kYTYxNTE2MzlhNzA3YmVhZWY4YTNlMzMzYTJhMDc2MTc3NGY0NjdkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9DTWFrZUxpc3RzLnR4dApAQCAtMzUsNiArMzUsOCBAQCBzZXQoV1RGX1BVQkxJQ19IRUFE
RVJTCiAgICAgQ2xvY2tUeXBlLmgKICAgICBDb21tYVByaW50ZXIuaAogICAgIENvbXBhY3RQb2lu
dGVyVHVwbGUuaAorICAgIENvbXBhY3RQdHIuaAorICAgIENvbXBhY3RSZWZQdHIuaAogICAgIENv
bXBhY3RSZWZQdHJUdXBsZS5oCiAgICAgQ29tcGFjdFVuaXF1ZVB0clR1cGxlLmgKICAgICBDb21w
aWxhdGlvblRocmVhZC5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Db21wYWN0UHRyLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi9Db21wYWN0UHRyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTliZTNmMTk5ZGJjMTQ1
YmE4MWFjZTgzNGZiZmJmMTk3M2IzZmFhMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYv
d3RmL0NvbXBhY3RQdHIuaApAQCAtMCwwICsxLDE0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL0Nv
bXBhY3RSZWZQdHIuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBU
LCB0eXBlbmFtZSBUcmFpdHMgPSBDb21wYWN0UHRyVHJhaXRzPFQ+PgorY2xhc3MgQ29tcGFjdFB0
ciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisKK3B1YmxpYzoKKyAgICBBTFdBWVNf
SU5MSU5FIGNvbnN0ZXhwciBDb21wYWN0UHRyKCkKKyAgICAgICAgOiBtX3B0cihudWxscHRyKQor
ICAgIHsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIGNvbnN0ZXhwciBDb21wYWN0UHRyKHN0
ZDo6bnVsbHB0cl90KQorICAgICAgICA6IG1fcHRyKG51bGxwdHIpCisgICAgeworICAgIH0KKwor
ICAgIEFMV0FZU19JTkxJTkUgQ29tcGFjdFB0cihUKiBwdHIpCisgICAgICAgIDogbV9wdHIocHRy
KQorICAgIHsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIENvbXBhY3RQdHIoY29uc3QgQ29t
cGFjdFB0ciYgbykKKyAgICAgICAgOiBtX3B0cihvLm1fcHRyKQorICAgIHsKKyAgICB9CisKKyAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgWCwgdHlwZW5hbWUgWT4KKyAgICBBTFdBWVNfSU5MSU5FIENv
bXBhY3RQdHIoY29uc3QgQ29tcGFjdFB0cjxYLCBZPiYgbykKKyAgICAgICAgOiBtX3B0cihvLmdl
dCgpKQorICAgIHsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIENvbXBhY3RQdHIoQ29tcGFj
dFB0ciYmIG8pCisgICAgICAgIDogbV9wdHIoby5tX3B0cikKKyAgICB7CisgICAgfQorCisgICAg
dGVtcGxhdGUgPHR5cGVuYW1lIFgsIHR5cGVuYW1lIFk+CisgICAgQUxXQVlTX0lOTElORSBDb21w
YWN0UHRyKENvbXBhY3RQdHI8WCwgWT4mJiBvKQorICAgICAgICA6IG1fcHRyKG8uZ2V0KCkpCisg
ICAgeworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgfkNvbXBhY3RQdHIoKSA9IGRlZmF1bHQ7
CisKKyAgICBUJiBvcGVyYXRvciooKSBjb25zdAorICAgIHsKKyAgICAgICAgVCogcHRyID0gVHJh
aXRzOjp1bndyYXAobV9wdHIpOworICAgICAgICBBU1NFUlQocHRyKTsKKyAgICAgICAgcmV0dXJu
ICpwdHI7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSBUKiBvcGVyYXRvci0+KCkgY29uc3Qg
eyByZXR1cm4gVHJhaXRzOjp1bndyYXAobV9wdHIpOyB9CisKKyAgICBib29sIG9wZXJhdG9yISgp
IGNvbnN0IHsgcmV0dXJuICFtX3B0cjsgfQorCisgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgp
IGNvbnN0IHsgcmV0dXJuICEhbV9wdHI7IH0KKworICAgIENvbXBhY3RQdHI8VD4mIG9wZXJhdG9y
PShzdGQ6Om51bGxwdHJfdCkKKyAgICB7CisgICAgICAgIFRyYWl0czo6ZXhjaGFuZ2UobV9wdHIs
IG51bGxwdHIpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAgQ29tcGFjdFB0
cjxUPiYgb3BlcmF0b3I9KGNvbnN0IENvbXBhY3RQdHImIG8pCisgICAgeworICAgICAgICBtX3B0
ciA9IG8ubV9wdHI7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKKyAgICBDb21wYWN0
UHRyPFQ+JiBvcGVyYXRvcj0oVCogb3B0cikKKyAgICB7CisgICAgICAgIENvbXBhY3RQdHIgY29w
eSA9IG9wdHI7CisgICAgICAgIFRyYWl0czo6c3dhcChtX3B0ciwgY29weS5tX3B0cik7CisgICAg
ICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgWCwgdHlw
ZW5hbWUgWT4KKyAgICBDb21wYWN0UHRyPFQ+JiBvcGVyYXRvcj0oY29uc3QgQ29tcGFjdFB0cjxY
LCBZPiYgbykKKyAgICB7CisgICAgICAgIENvbXBhY3RQdHIgY29weSA9IG87CisgICAgICAgIFRy
YWl0czo6c3dhcChtX3B0ciwgY29weS5tX3B0cik7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAg
ICB9CisKKyAgICBDb21wYWN0UHRyPFQ+JiBvcGVyYXRvcj0oQ29tcGFjdFB0ciYmIG8pCisgICAg
eworICAgICAgICBtX3B0ciA9IG8ubV9wdHI7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9
CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgWCwgdHlwZW5hbWUgWT4KKyAgICBDb21wYWN0UHRy
PFQ+JiBvcGVyYXRvcj0oQ29tcGFjdFB0cjxYLCBZPiYmIG8pCisgICAgeworICAgICAgICBDb21w
YWN0UHRyIGNvcHkgPSBvOworICAgICAgICBUcmFpdHM6OnN3YXAobV9wdHIsIGNvcHkubV9wdHIp
OworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAgVCogZ2V0KCkgY29uc3QgeyBy
ZXR1cm4gVHJhaXRzOjp1bndyYXAobV9wdHIpOyB9CisKK3ByaXZhdGU6CisgICAgdGVtcGxhdGUg
PHR5cGVuYW1lIFgsIHR5cGVuYW1lIFk+CisgICAgZnJpZW5kIGNsYXNzIENvbXBhY3RQdHI7CisK
KyAgICB0eXBlbmFtZSBUcmFpdHM6OlN0b3JhZ2VUeXBlIG1fcHRyOworfTsKKworfSAvLyBuYW1l
c3BhY2UgV1RGCisKK3VzaW5nIFdURjo6Q29tcGFjdFB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL0NvbXBhY3RSZWZQdHIuaCBiL1NvdXJjZS9XVEYvd3RmL0NvbXBhY3RSZWZQdHIuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5mNjc1ZTI4NmYxMzA3NjAxNjY3MDk5Zjk2YjVmNzI1YjM3ZjU2MGRhCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvQ29tcGFjdFJlZlB0ci5oCkBAIC0wLDAgKzEs
MTg1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlIDxjc3RkaW50PgorI2luY2x1ZGUgPHV0aWxpdHk+CisjaW5j
bHVkZSA8d3RmL1Jhd1B0clRyYWl0cy5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNs
dWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KK2NsYXNzIENvbXBhY3RlZCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CisKK3B1YmxpYzoKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIC8vIHN0YXRpY19h
c3NlcnQoTUFDSF9WTV9NQVhfQUREUkVTUyA8PSAoMXVsbCA8PCAzNikpOworICAgIHVzaW5nIFN0
b3JhZ2VTaXplID0gdWludDMyX3Q7CisjZWxzZQorICAgIHVzaW5nIFN0b3JhZ2VTaXplID0gdWlu
dHB0cl90OworI2VuZGlmCisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzQ29tcGFjdGVkVHlw
ZSA9IHRydWU7CisKKyAgICBDb21wYWN0ZWQoKQorICAgIHsKKyAgICAgICAgc2V0KG51bGxwdHIp
OworICAgIH0KKworICAgIENvbXBhY3RlZChudWxscHRyX3QpCisgICAgeworICAgICAgICBzZXQo
bnVsbHB0cik7CisgICAgfQorCisgICAgQ29tcGFjdGVkKFQqIHB0cikKKyAgICB7CisgICAgICAg
IHNldChwdHIpOworICAgIH0KKworICAgIENvbXBhY3RlZDxUPiYgb3BlcmF0b3I9KFQqIHB0cikK
KyAgICB7CisgICAgICAgIHNldChwdHIpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQor
CisgICAgVCogb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuIGdldCgpOyB9CisKKyAgICBUJiBv
cGVyYXRvciooKSBjb25zdCB7IHJldHVybiAqZ2V0KCk7IH0KKworICAgIGJvb2wgb3BlcmF0b3Ih
KCkgY29uc3QgeyByZXR1cm4gIWdldCgpOyB9CisKKyAgICBleHBsaWNpdCBvcGVyYXRvciBib29s
KCkgY29uc3QgeyByZXR1cm4gISFnZXQoKTsgfQorCisgICAgVCogZ2V0KCkgY29uc3QKKyAgICB7
CisgICAgICAgIHJldHVybiBkZWNvZGUobV9wdHIpOworICAgIH0KKworICAgIHZvaWQgc2V0KFQq
IHB0cikKKyAgICB7CisgICAgICAgIG1fcHRyID0gZW5jb2RlKHB0cik7CisgICAgfQorCisgICAg
dGVtcGxhdGUgPGNsYXNzIFU+CisgICAgVCogZXhjaGFuZ2UoVSYmIG5ld1ZhbHVlKQorICAgIHsK
KyAgICAgICAgVCogb2xkVmFsdWUgPSBnZXQoKTsKKyAgICAgICAgc2V0KHN0ZDo6Zm9yd2FyZDxV
PihuZXdWYWx1ZSkpOworICAgICAgICByZXR1cm4gb2xkVmFsdWU7CisgICAgfQorCisgICAgdm9p
ZCBzd2FwKG51bGxwdHJfdCkgeyBzZXQobnVsbHB0cik7IH0KKworICAgIHZvaWQgc3dhcChDb21w
YWN0ZWQmIG90aGVyKQorICAgIHsKKyAgICAgICAgVCogdDEgPSBnZXQoKTsKKyAgICAgICAgVCog
dDIgPSBvdGhlci5nZXQoKTsKKyAgICAgICAgc2V0KHQyKTsKKyAgICAgICAgb3RoZXIuc2V0KHQx
KTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgT3RoZXIsIHR5cGVuYW1lID0gc3Rk
OjplbmFibGVfaWZfdDxPdGhlcjo6aXNDb21wYWN0ZWRUeXBlPj4KKyAgICB2b2lkIHN3YXAoT3Ro
ZXImIG90aGVyKQorICAgIHsKKyAgICAgICAgVCogdDEgPSBnZXQoKTsKKyAgICAgICAgVCogdDIg
PSBvdGhlci5nZXQoKTsKKyAgICAgICAgc2V0KHQyKTsKKyAgICAgICAgb3RoZXIuc2V0KHQxKTsK
KyAgICB9CisKKyAgICB2b2lkIHN3YXAoVCogdDIpCisgICAgeworICAgICAgICBUKiB0MSA9IGdl
dCgpOworICAgICAgICBzdGQ6OnN3YXAodDEsIHQyKTsKKyAgICAgICAgc2V0KHQxKTsKKyAgICB9
CisKKyAgICBzdGF0aWMgQUxXQVlTX0lOTElORSBjb25zdGV4cHIgU3RvcmFnZVNpemUgZW5jb2Rl
KHVpbnRwdHJfdCBwdHIpCisgICAgeworICAgICAgICBBU1NFUlQoIXB0ciAmIDB4Rik7CisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFN0b3JhZ2VT
aXplPihwdHIgPj4gNCk7CisjZWxzZQorICAgICAgICByZXR1cm4gcHRyOworI2VuZGlmCisgICAg
fQorCisgICAgQUxXQVlTX0lOTElORSBjb25zdGV4cHIgU3RvcmFnZVNpemUgZW5jb2RlKFQqIHB0
cikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBlbmNvZGUocmVpbnRlcnByZXRfY2FzdDx1
aW50cHRyX3Q+KHB0cikpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgY29uc3RleHByIFQq
IGRlY29kZShjb25zdCBTdG9yYWdlU2l6ZSYgcHRyKSBjb25zdAorICAgIHsKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQorICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxUKj4oc3RhdGlj
X2Nhc3Q8dWludHB0cl90PihwdHIpIDw8IDQpOworI2Vsc2UKKyAgICAgICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8VCo+KHB0cik7CisjZW5kaWYKKyAgICB9CisKK3ByaXZhdGU6CisgICAgU3Rv
cmFnZVNpemUgbV9wdHI7Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBHZXRQ
dHJIZWxwZXI8Q29tcGFjdGVkPFQ+PiB7CisgICAgdXNpbmcgUHRyVHlwZSA9IFQqOworICAgIHN0
YXRpYyBUKiBnZXRQdHIoY29uc3QgQ29tcGFjdGVkPFQ+JiBwKSB7IHJldHVybiBjb25zdF9jYXN0
PFQqPihwLmdldCgpKTsgfQorfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgSXNT
bWFydFB0cjxDb21wYWN0ZWQ8VD4+IHsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgdmFsdWUg
PSB0cnVlOworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgQ29tcGFjdFB0clRy
YWl0cyB7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+CisgICAgdXNpbmcgUmViaW5kVHJhaXRz
ID0gUmF3UHRyVHJhaXRzPFU+OworCisgICAgdXNpbmcgU3RvcmFnZVR5cGUgPSBDb21wYWN0ZWQ8
VD47CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4KKyAgICBzdGF0aWMgQUxXQVlTX0lOTElO
RSBUKiBleGNoYW5nZShTdG9yYWdlVHlwZSYgcHRyLCBVJiYgbmV3VmFsdWUpIHsgcmV0dXJuIHB0
ci5leGNoYW5nZShuZXdWYWx1ZSk7IH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBPdGhlcj4K
KyAgICBzdGF0aWMgQUxXQVlTX0lOTElORSB2b2lkIHN3YXAoU3RvcmFnZVR5cGUmIGEsIE90aGVy
JiBiKSB7IGEuc3dhcChiKTsgfQorCisgICAgc3RhdGljIEFMV0FZU19JTkxJTkUgVCogdW53cmFw
KGNvbnN0IFN0b3JhZ2VUeXBlJiBwdHIpIHsgcmV0dXJuIHB0ci5nZXQoKTsgfQorCisgICAgc3Rh
dGljIFN0b3JhZ2VUeXBlIGhhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIHsgcmV0dXJuIGJpdHdpc2Vf
Y2FzdDxTdG9yYWdlVHlwZT4oc3RhdGljX2Nhc3Q8dWludHB0cl90PigtMSkpOyB9CisgICAgc3Rh
dGljIEFMV0FZU19JTkxJTkUgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZShjb25zdCBTdG9y
YWdlVHlwZSYgcHRyKSB7IHJldHVybiBwdHIgPT0gaGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7IH0K
K307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgordXNpbmcgQ29tcGFjdFJlZlB0ciA9IFJlZlB0
cjxULCBDb21wYWN0UHRyVHJhaXRzPFQ+PjsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKK3VzaW5n
IFdURjo6Q29tcGFjdFJlZlB0cjsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xz
L0NoYW5nZUxvZwppbmRleCAzMTFkNmQxZjFmZGNhZWE5MmRjY2ZjYjYyMGQxNTViOGI3Mjc5N2Rj
Li45NTVjNWY5MzNiY2I2NzgyYjc3OWQyM2MwYmRhN2QwZTgxYzgyYzUxIDEwMDY0NAotLS0gYS9U
b29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIw
MjItMDUtMTYgIFlpamlhIEh1YW5nICA8eWlqaWFfaHVhbmdAYXBwbGUuY29tPgorCisgICAgICAg
IFJFR1JFU1NJT04gKHIyODU5NTUpOiAyJSByZWdyZXNzaW9uIG9uIFJBTWlmaWNhdGlvbgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQwNDA3CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQ
SS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL0NvbXBhY3RQdHIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRF
U1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0NvbXBhY3RSZWZQdHIuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6ZjEpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Q29uc3RSZWZDb3VudGVkOjpj
cmVhdGUpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6cmV0dXJuQ29uc3RSZWZDb3VudGVkUmVm
KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnJldHVyblJlZkNvdW50ZWRSZWYpOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6Q29tcGFjdFJlZlB0ckNoZWNraW5nUmVmTG9nZ2VyOjpDb21wYWN0
UmVmUHRyQ2hlY2tpbmdSZWZMb2dnZXIpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6bG9nZ2Vy
TmFtZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpDb21wYWN0UmVmUHRyQ2hlY2tpbmdSZWZM
b2dnZXI6OnJlZik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpDb21wYWN0UmVmUHRyQ2hlY2tp
bmdSZWZMb2dnZXI6OmRlcmVmKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRocmVhZFNhZmVS
ZWZDb3VudGVkT2JqZWN0OjpjcmVhdGUpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VGhyZWFk
U2FmZVJlZkNvdW50ZWRPYmplY3Q6On5UaHJlYWRTYWZlUmVmQ291bnRlZE9iamVjdCk6CisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpNYWluVGhyZWFkU2FmZVJlZkNvdW50ZWRPYmplY3Q6OmNyZWF0
ZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpNYWluVGhyZWFkU2FmZVJlZkNvdW50ZWRPYmpl
Y3Q6On5NYWluVGhyZWFkU2FmZVJlZkNvdW50ZWRPYmplY3QpOgorCiAyMDIyLTA1LTA1ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgogCiAgICAgICAgIFN1c3BlbmRhYmxlV29ya1F1
ZXVlOjpzdXNwZW5kIHNob3VsZCBpbnZva2UgY2FsbGJhY2sgaW1tZWRpYXRlbHkgd2hlbiBxdWV1
ZSBpcyBzdXNwZW5kZWQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0
cy50eHQgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CmluZGV4IDNlMzlhNDA2
YjU1MzlkZDU3YmZiYTFhMDFkN2VlYzcyZTlkOGQxYTkuLjM0MjlmZDA5MzcyNWNlNTQwYjljNjJj
ZmIxYWJjOTZjYjM0YTUyMTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VM
aXN0cy50eHQKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dApAQCAtMjks
NiArMjksOCBAQCBzZXQoVGVzdFdURl9TT1VSQ0VTCiAgICAgVGVzdHMvV1RGL0J1bXBQb2ludGVy
QWxsb2NhdG9yLmNwcAogICAgIFRlc3RzL1dURi9DU3RyaW5nLmNwcAogICAgIFRlc3RzL1dURi9D
aGVja2VkQXJpdGhtZXRpY09wZXJhdGlvbnMuY3BwCisgICAgVGVzdHMvV1RGL0NvbXBhY3RQdHIu
Y3BwCisgICAgVGVzdHMvV1RGL0NvbXBhY3RSZWZQdHIuY3BwCiAgICAgVGVzdHMvV1RGL0NvbXBh
Y3RSZWZQdHJUdXBsZS5jcHAKICAgICBUZXN0cy9XVEYvQ29tcGFjdFVuaXF1ZVB0clR1cGxlLmNw
cAogICAgIFRlc3RzL1dURi9Db25jdXJyZW50UHRySGFzaFNldC5jcHAKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggZGFkZGViMjk4Y2QwYjhmZTczODExYjBiMjI3OWVjZTA3M2Q5ZjE2ZC4uNjhj
ODc4N2FjZTI2NzFlZDA0YTFjYWQ1ZjNhMjFkYzMxODZlNmM1ZCAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTExNjUsNiArMTE2NSw4IEBACiAJCUZFMkQ5NDc0MjQ1RUIyRjQwMEU0ODEzNSAv
KiBCaXRtYXAuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRkUyRDk0NzMyNDVFQjJERjAwRTQ4MTM1IC8qIEJpdG1hcC5jcHAgKi87IH07CiAJCUZFQzJB
ODU0MjRDRTk3NUYwMEFEQkMzNSAvKiBEaXNhbGxvd1ZNRW50cnkuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVDMkE4NTMyNENFOTc0RTAwQURCQzM1
IC8qIERpc2FsbG93Vk1FbnRyeS5jcHAgKi87IH07CiAJCUZFQzJBODU2MjRDRUI2NUYwMEFEQkMz
NSAvKiBQcm9wZXJ0eVNsb3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRkVDMkE4NTUyNENFQjY1RjAwQURCQzM1IC8qIFByb3BlcnR5U2xvdC5jcHAg
Ki87IH07CisJCUZGMTBBQUY5MjgzMUIxRTYwMEI5ODc1QiAvKiBDb21wYWN0UHRyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZGMTBBQUY4MjgzMUIx
RTYwMEI5ODc1QiAvKiBDb21wYWN0UHRyLmNwcCAqLzsgfTsKKwkJRkY1RDBDQjQyODMyMjFBRDAw
RjMyNzhBIC8qIENvbXBhY3RSZWZQdHIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRkY1RDBDQjMyODMyMjFBRDAwRjMyNzhBIC8qIENvbXBhY3RSZWZQ
dHIuY3BwICovOyB9OwogLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCiAKIC8qIEJlZ2lu
IFBCWENvbnRhaW5lckl0ZW1Qcm94eSBzZWN0aW9uICovCkBAIC0zMjI5LDYgKzMyMzEsOCBAQAog
CQlGRUI2Rjc0RTFCMkJBNDRFMDA5RTQ5MjIgLyogTmFrZWRQdHIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmFrZWRQdHIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlGRUMyQTg1MzI0Q0U5NzRFMDBBREJDMzUgLyogRGlzYWxsb3dWTUVudHJ5LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERpc2FsbG93Vk1FbnRyeS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFQzJBODU1MjRDRUI2NUYwMEFEQkMz
NSAvKiBQcm9wZXJ0eVNsb3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUHJvcGVydHlTbG90LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkYxMEFB
RjgyODMxQjFFNjAwQjk4NzVCIC8qIENvbXBhY3RQdHIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQ29tcGFjdFB0ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUZGNUQwQ0IzMjgzMjIxQUQwMEYzMjc4QSAvKiBDb21wYWN0UmVmUHRyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbXBhY3RSZWZQdHIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogLyogRW5kIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAq
LwogCiAvKiBCZWdpbiBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9uICovCkBAIC00NjQ3
LDYgKzQ2NTEsOCBAQAogCQkJCUE3QTk2NkRBMTQwRUNDQzgwMDVFRjlCNCAvKiBDaGVja2VkQXJp
dGhtZXRpY09wZXJhdGlvbnMuY3BwICovLAogCQkJCTlCQkNBNERFMjY1QUNBNUIwMERGRTcyMyAv
KiBDaGVja2VkUHRyLmNwcCAqLywKIAkJCQk5QkYwMDEzMjI2N0M0QzU5MDBEQ0ZCM0YgLyogQ2hl
Y2tlZFJlZi5jcHAgKi8sCisJCQkJRkYxMEFBRjgyODMxQjFFNjAwQjk4NzVCIC8qIENvbXBhY3RQ
dHIuY3BwICovLAorCQkJCUZGNUQwQ0IzMjgzMjIxQUQwMEYzMjc4QSAvKiBDb21wYWN0UmVmUHRy
LmNwcCAqLywKIAkJCQlFMzAyQkRBOTI0MDRCOTIzMDA4NjUyNzcgLyogQ29tcGFjdFJlZlB0clR1
cGxlLmNwcCAqLywKIAkJCQk5QjBDMDUxODI0RkRGQjcwMDBGMkZFMzEgLyogQ29tcGFjdFVuaXF1
ZVB0clR1cGxlLmNwcCAqLywKIAkJCQkwRjMwQ0I1QjFGQ0UxNzkyMDA0QjUzMjMgLyogQ29uY3Vy
cmVudFB0ckhhc2hTZXQuY3BwICovLApAQCAtNTQ0Niw2ICs1NDUyLDggQEAKIAkJCQk3QzgzREVB
MDFEMEE1OTBDMDBGRUJDRjMgLyogQ2hlY2tlZEFyaXRobWV0aWNPcGVyYXRpb25zLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTlCQkNBNERGMjY1QUNBNUIwMERGRTcyMyAvKiBDaGVja2VkUHRyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTlCRjAwMTMzMjY3QzRDNTkwMERDRkIzRiAvKiBDaGVja2Vk
UmVmLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUZGMTBBQUY5MjgzMUIxRTYwMEI5ODc1QiAvKiBD
b21wYWN0UHRyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUZGNUQwQ0I0MjgzMjIxQUQwMEYzMjc4
QSAvKiBDb21wYWN0UmVmUHRyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUzMDJCREFBMjQwNEI5
MjQwMDg2NTI3NyAvKiBDb21wYWN0UmVmUHRyVHVwbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
OUIwQzA1MTkyNEZERkI3RDAwRjJGRTMxIC8qIENvbXBhY3RVbmlxdWVQdHJUdXBsZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRjMwQ0I1QzFGQ0UxNzk2MDA0QjUzMjMgLyogQ29uY3VycmVudFB0
ckhhc2hTZXQuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9Db21wYWN0UHRyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL0NvbXBhY3RQdHIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ5YmYyZDI4OGYyMmRjYjI4ZGViNjc2ZjY0
MzJhZWNmY2RkZDk4NmYKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9Db21wYWN0UHRyLmNwcApAQCAtMCwwICsxLDE4NyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIlJlZkxvZ2dlci5oIgorI2luY2x1ZGUgIlV0
aWxpdGllcy5oIgorI2luY2x1ZGUgPHd0Zi9Db21wYWN0UHRyLmg+CisjaW5jbHVkZSA8d3RmL01h
aW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisjaW5jbHVkZSA8d3Rm
L1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgorCitu
YW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK1RFU1QoV1RGX0NvbXBhY3RQdHIsIEJhc2ljKQor
eworICAgIERlcml2ZWRSZWZMb2dnZXIgYSgiYSIpOworCisgICAgQ29tcGFjdFB0cjxSZWZMb2dn
ZXI+IGVtcHR5OworICAgIEVYUEVDVF9FUShudWxscHRyLCBlbXB0eS5nZXQoKSk7CisKKyAgICB7
CisgICAgICAgIENvbXBhY3RQdHI8UmVmTG9nZ2VyPiBwdHIoJmEpOworICAgICAgICBFWFBFQ1Rf
RVEoJmEsIHB0ci5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgJipwdHIpOworICAgICAg
ICBFWFBFQ1RfRVEoJmEubmFtZSwgJnB0ci0+bmFtZSk7CisgICAgfQorCisgICAgeworICAgICAg
ICBDb21wYWN0UHRyPFJlZkxvZ2dlcj4gcHRyID0gJmE7CisgICAgICAgIEVYUEVDVF9FUSgmYSwg
cHRyLmdldCgpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIENvbXBhY3RQdHI8UmVmTG9nZ2Vy
PiBwMSA9ICZhOworICAgICAgICBDb21wYWN0UHRyPFJlZkxvZ2dlcj4gcDIocDEpOworICAgICAg
ICBFWFBFQ1RfRVEoJmEsIHAxLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwMi5nZXQo
KSk7CisgICAgfQorCisgICAgeworICAgICAgICBDb21wYWN0UHRyPFJlZkxvZ2dlcj4gcDEgPSAm
YTsKKyAgICAgICAgQ29tcGFjdFB0cjxSZWZMb2dnZXI+IHAyID0gcDE7CisgICAgICAgIEVYUEVD
VF9FUSgmYSwgcDEuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHAyLmdldCgpKTsKKyAg
ICB9CisKKyAgICB7CisgICAgICAgIENvbXBhY3RQdHI8UmVmTG9nZ2VyPiBwMSA9ICZhOworICAg
ICAgICBDb21wYWN0UHRyPFJlZkxvZ2dlcj4gcDIgPSBXVEZNb3ZlKHAxKTsKKyAgICAgICAgRVhQ
RUNUX0VRKCZhLCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcDIuZ2V0KCkpOwor
ICAgIH0KKworICAgIHsKKyAgICAgICAgQ29tcGFjdFB0cjxSZWZMb2dnZXI+IHAxID0gJmE7Cisg
ICAgICAgIENvbXBhY3RQdHI8UmVmTG9nZ2VyPiBwMihXVEZNb3ZlKHAxKSk7CisgICAgICAgIEVY
UEVDVF9FUSgmYSwgcDEuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHAyLmdldCgpKTsK
KyAgICB9CisKKyAgICB7CisgICAgICAgIENvbXBhY3RQdHI8RGVyaXZlZFJlZkxvZ2dlcj4gcDEg
PSAmYTsKKyAgICAgICAgQ29tcGFjdFB0cjxSZWZMb2dnZXI+IHAyID0gcDE7CisgICAgICAgIEVY
UEVDVF9FUSgmYSwgcDEuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHAyLmdldCgpKTsK
KyAgICB9CisKKyAgICB7CisgICAgICAgIENvbXBhY3RQdHI8RGVyaXZlZFJlZkxvZ2dlcj4gcDEg
PSAmYTsKKyAgICAgICAgQ29tcGFjdFB0cjxSZWZMb2dnZXI+IHAyID0gV1RGTW92ZShwMSk7Cisg
ICAgICAgIEVYUEVDVF9FUSgmYSwgcDEuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHAy
LmdldCgpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIENvbXBhY3RQdHI8UmVmTG9nZ2VyPiBw
dHIoJmEpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHB0ci5nZXQoKSk7CisgICAgICAgIHB0ciA9
IG51bGxwdHI7CisgICAgICAgIEVYUEVDVF9FUShudWxscHRyLCBwdHIuZ2V0KCkpOworICAgIH0K
KworICAgIHsKKyAgICAgICAgQ29tcGFjdFB0cjxSZWZMb2dnZXI+IHB0cihudWxscHRyKTsKKyAg
ICAgICAgRVhQRUNUX0VRKG51bGxwdHIsIHB0ci5nZXQoKSk7CisgICAgfQorCisgICAgeworICAg
ICAgICBDb21wYWN0UHRyPFJlZkxvZ2dlcj4gcHRyID0gbnVsbHB0cjsKKyAgICAgICAgRVhQRUNU
X0VRKG51bGxwdHIsIHB0ci5nZXQoKSk7CisgICAgfQorfQorCitURVNUKFdURl9Db21wYWN0UHRy
LCBBc3NpZ25tZW50KQoreworICAgIERlcml2ZWRSZWZMb2dnZXIgYSgiYSIpOworICAgIFJlZkxv
Z2dlciBiKCJiIik7CisgICAgRGVyaXZlZFJlZkxvZ2dlciBjKCJjIik7CisKKyAgICB7CisgICAg
ICAgIENvbXBhY3RQdHI8UmVmTG9nZ2VyPiBwMSA9ICZhOworICAgICAgICBDb21wYWN0UHRyPFJl
ZkxvZ2dlcj4gcDIgPSAmYjsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwMS5nZXQoKSk7CisgICAg
ICAgIEVYUEVDVF9FUSgmYiwgcDIuZ2V0KCkpOworICAgICAgICBwMSA9IHAyOworICAgICAgICBF
WFBFQ1RfRVEoJmIsIHAxLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZiLCBwMi5nZXQoKSk7
CisgICAgfQorCisgICAgeworICAgICAgICBDb21wYWN0UHRyPFJlZkxvZ2dlcj4gcHRyKCZhKTsK
KyAgICAgICAgRVhQRUNUX0VRKCZhLCBwdHIuZ2V0KCkpOworICAgICAgICBwdHIgPSAmYjsKKyAg
ICAgICAgRVhQRUNUX0VRKCZiLCBwdHIuZ2V0KCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAg
Q29tcGFjdFB0cjxSZWZMb2dnZXI+IHB0cigmYSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcHRy
LmdldCgpKTsKKyAgICAgICAgcHRyID0gbnVsbHB0cjsKKyAgICAgICAgRVhQRUNUX0VRKG51bGxw
dHIsIHB0ci5nZXQoKSk7CisgICAgfQorCisgICAgeworICAgICAgICBDb21wYWN0UHRyPFJlZkxv
Z2dlcj4gcDEgPSAmYTsKKyAgICAgICAgQ29tcGFjdFB0cjxSZWZMb2dnZXI+IHAyID0gJmI7Cisg
ICAgICAgIEVYUEVDVF9FUSgmYSwgcDEuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEoJmIsIHAy
LmdldCgpKTsKKyAgICAgICAgcDEgPSBXVEZNb3ZlKHAyKTsKKyAgICAgICAgRVhQRUNUX0VRKCZi
LCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYiwgcDIuZ2V0KCkpOworICAgIH0KKwor
ICAgIHsKKyAgICAgICAgQ29tcGFjdFB0cjxSZWZMb2dnZXI+IHAxID0gJmE7CisgICAgICAgIENv
bXBhY3RQdHI8RGVyaXZlZFJlZkxvZ2dlcj4gcDIgPSAmYzsKKyAgICAgICAgRVhQRUNUX0VRKCZh
LCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYywgcDIuZ2V0KCkpOworICAgICAgICBw
MSA9IHAyOworICAgICAgICBFWFBFQ1RfRVEoJmMsIHAxLmdldCgpKTsKKyAgICAgICAgRVhQRUNU
X0VRKCZjLCBwMi5nZXQoKSk7CisgICAgfQorCisgICAgeworICAgICAgICBDb21wYWN0UHRyPFJl
ZkxvZ2dlcj4gcDEgPSAmYTsKKyAgICAgICAgQ29tcGFjdFB0cjxEZXJpdmVkUmVmTG9nZ2VyPiBw
MiA9ICZjOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHAxLmdldCgpKTsKKyAgICAgICAgRVhQRUNU
X0VRKCZjLCBwMi5nZXQoKSk7CisgICAgICAgIHAxID0gV1RGTW92ZShwMik7CisgICAgICAgIEVY
UEVDVF9FUSgmYywgcDEuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEoJmMsIHAyLmdldCgpKTsK
KyAgICB9CisKKyAgICB7CisgICAgICAgIENvbXBhY3RQdHI8UmVmTG9nZ2VyPiBwdHIoJmEpOwor
ICAgICAgICBFWFBFQ1RfRVEoJmEsIHB0ci5nZXQoKSk7CisgICAgICAgIHB0ciA9ICZjOworICAg
ICAgICBFWFBFQ1RfRVEoJmMsIHB0ci5nZXQoKSk7CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFj
ZSBUZXN0V2ViS2l0QVBJCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9Db21wYWN0UmVmUHRyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0NvbXBh
Y3RSZWZQdHIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIyMGNmOGY3NWQ5ZjEyMzI0ODVlOWI5NWU4ZWRkNmMy
YzI4NWQ5NTUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9Db21wYWN0UmVmUHRyLmNwcApAQCAtMCwwICsxLDU5OCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMy0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiUmVmTG9nZ2VyLmgiCisjaW5jbHVkZSAi
VXRpbGl0aWVzLmgiCisjaW5jbHVkZSA8d3RmL0NvbXBhY3RSZWZQdHIuaD4KKyNpbmNsdWRlIDx3
dGYvTWFpblRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKyNpbmNsdWRl
IDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+
CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworVEVTVChXVEZfQ29tcGFjdFJlZlB0ciwg
QmFzaWMpCit7CisgICAgRGVyaXZlZFJlZkxvZ2dlciBhKCJhIik7CisKKyAgICBDb21wYWN0UmVm
UHRyPFJlZkxvZ2dlcj4gZW1wdHk7CisgICAgRVhQRUNUX0VRKG51bGxwdHIsIGVtcHR5LmdldCgp
KTsKKworICAgIHsKKyAgICAgICAgQ29tcGFjdFJlZlB0cjxSZWZMb2dnZXI+IHB0cigmYSk7Cisg
ICAgICAgIEVYUEVDVF9FUSgmYSwgcHRyLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCAm
KnB0cik7CisgICAgICAgIEVYUEVDVF9FUSgmYS5uYW1lLCAmcHRyLT5uYW1lKTsKKyAgICB9Cisg
ICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkp
OworCisgICAgeworICAgICAgICBDb21wYWN0UmVmUHRyPFJlZkxvZ2dlcj4gcHRyID0gJmE7Cisg
ICAgICAgIEVYUEVDVF9FUSgmYSwgcHRyLmdldCgpKTsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVR
KCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAgeworICAg
ICAgICBDb21wYWN0UmVmUHRyPFJlZkxvZ2dlcj4gcDEgPSAmYTsKKyAgICAgICAgQ29tcGFjdFJl
ZlB0cjxSZWZMb2dnZXI+IHAyKHAxKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwMS5nZXQoKSk7
CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcDIuZ2V0KCkpOworICAgIH0KKyAgICBFWFBFQ1RfU1RS
RVEoInJlZihhKSByZWYoYSkgZGVyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3Ry
KCkpOworCisgICAgeworICAgICAgICBDb21wYWN0UmVmUHRyPFJlZkxvZ2dlcj4gcDEgPSAmYTsK
KyAgICAgICAgQ29tcGFjdFJlZlB0cjxSZWZMb2dnZXI+IHAyID0gcDE7CisgICAgICAgIEVYUEVD
VF9FUSgmYSwgcDEuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHAyLmdldCgpKTsKKyAg
ICB9CisgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgcmVmKGEpIGRlcmVmKGEpIGRlcmVmKGEpICIs
IHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKworICAgIHsKKyAgICAgICAgQ29tcGFjdFJlZlB0cjxS
ZWZMb2dnZXI+IHAxID0gJmE7CisgICAgICAgIENvbXBhY3RSZWZQdHI8UmVmTG9nZ2VyPiBwMiA9
IFdURk1vdmUocDEpOworICAgICAgICBFWFBFQ1RfRVEobnVsbHB0ciwgcDEuZ2V0KCkpOworICAg
ICAgICBFWFBFQ1RfRVEoJmEsIHAyLmdldCgpKTsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJy
ZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAgeworICAgICAg
ICBDb21wYWN0UmVmUHRyPFJlZkxvZ2dlcj4gcDEgPSAmYTsKKyAgICAgICAgQ29tcGFjdFJlZlB0
cjxSZWZMb2dnZXI+IHAyKFdURk1vdmUocDEpKTsKKyAgICAgICAgRVhQRUNUX0VRKG51bGxwdHIs
IHAxLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwMi5nZXQoKSk7CisgICAgfQorICAg
IEVYUEVDVF9TVFJFUSgicmVmKGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsK
KworICAgIHsKKyAgICAgICAgQ29tcGFjdFJlZlB0cjxEZXJpdmVkUmVmTG9nZ2VyPiBwMSA9ICZh
OworICAgICAgICBDb21wYWN0UmVmUHRyPFJlZkxvZ2dlcj4gcDIgPSBwMTsKKyAgICAgICAgRVhQ
RUNUX0VRKCZhLCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcDIuZ2V0KCkpOwor
ICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSByZWYoYSkgZGVyZWYoYSkgZGVyZWYoYSkg
IiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAgeworICAgICAgICBDb21wYWN0UmVmUHRy
PERlcml2ZWRSZWZMb2dnZXI+IHAxID0gJmE7CisgICAgICAgIENvbXBhY3RSZWZQdHI8UmVmTG9n
Z2VyPiBwMiA9IFdURk1vdmUocDEpOworICAgICAgICBFWFBFQ1RfRVEobnVsbHB0ciwgcDEuZ2V0
KCkpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHAyLmdldCgpKTsKKyAgICB9CisgICAgRVhQRUNU
X1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAg
eworICAgICAgICBDb21wYWN0UmVmUHRyPFJlZkxvZ2dlcj4gcHRyKCZhKTsKKyAgICAgICAgRVhQ
RUNUX0VRKCZhLCBwdHIuZ2V0KCkpOworICAgICAgICBwdHIgPSBudWxscHRyOworICAgICAgICBF
WFBFQ1RfRVEobnVsbHB0ciwgcHRyLmdldCgpKTsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJy
ZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworfQorCitURVNUKFdURl9D
b21wYWN0UmVmUHRyLCBBc3NpZ25QYXNzUmVmVG9Db21wYWN0UmVmUHRyKQoreworICAgIERlcml2
ZWRSZWZMb2dnZXIgYSgiYSIpOworICAgIHsKKyAgICAgICAgUmVmPFJlZkxvZ2dlcj4gcGFzc1Jl
ZihhKTsKKyAgICAgICAgQ29tcGFjdFJlZlB0cjxSZWZMb2dnZXI+IHB0ciA9IFdURk1vdmUocGFz
c1JlZik7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcHRyLmdldCgpKTsKKyAgICB9CisgICAgRVhQ
RUNUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworfQor
CitURVNUKFdURl9Db21wYWN0UmVmUHRyLCBBZG9wdCkKK3sKKyAgICBEZXJpdmVkUmVmTG9nZ2Vy
IGEoImEiKTsKKworICAgIENvbXBhY3RSZWZQdHI8UmVmTG9nZ2VyPiBlbXB0eTsKKyAgICBFWFBF
Q1RfRVEobnVsbHB0ciwgZW1wdHkuZ2V0KCkpOworCisgICAgeworICAgICAgICBDb21wYWN0UmVm
UHRyPFJlZkxvZ2dlcj4gcHRyKGFkb3B0UmVmKCZhKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwg
cHRyLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCAmKnB0cik7CisgICAgICAgIEVYUEVD
VF9FUSgmYS5uYW1lLCAmcHRyLT5uYW1lKTsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJkZXJl
ZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7CisgICAgICAgIENvbXBhY3RS
ZWZQdHI8UmVmTG9nZ2VyPiBwdHIgPSBhZG9wdFJlZigmYSk7CisgICAgICAgIEVYUEVDVF9FUSgm
YSwgcHRyLmdldCgpKTsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJkZXJlZihhKSAiLCB0YWtl
TG9nU3RyKCkuY19zdHIoKSk7Cit9CisKK1RFU1QoV1RGX0NvbXBhY3RSZWZQdHIsIEFzc2lnbm1l
bnQpCit7CisgICAgRGVyaXZlZFJlZkxvZ2dlciBhKCJhIik7CisgICAgUmVmTG9nZ2VyIGIoImIi
KTsKKyAgICBEZXJpdmVkUmVmTG9nZ2VyIGMoImMiKTsKKworICAgIHsKKyAgICAgICAgQ29tcGFj
dFJlZlB0cjxSZWZMb2dnZXI+IHAxKCZhKTsKKyAgICAgICAgQ29tcGFjdFJlZlB0cjxSZWZMb2dn
ZXI+IHAyKCZiKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwMS5nZXQoKSk7CisgICAgICAgIEVY
UEVDVF9FUSgmYiwgcDIuZ2V0KCkpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAgICAgICBw
MSA9IHAyOworICAgICAgICBFWFBFQ1RfRVEoJmIsIHAxLmdldCgpKTsKKyAgICAgICAgRVhQRUNU
X0VRKCZiLCBwMi5nZXQoKSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAgfQorICAgIEVY
UEVDVF9TVFJFUSgicmVmKGEpIHJlZihiKSB8IHJlZihiKSBkZXJlZihhKSB8IGRlcmVmKGIpIGRl
cmVmKGIpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKworICAgIHsKKyAgICAgICAgQ29tcGFj
dFJlZlB0cjxSZWZMb2dnZXI+IHB0cigmYSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcHRyLmdl
dCgpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICAgICAgcHRyID0gJmI7CisgICAgICAg
IEVYUEVDVF9FUSgmYiwgcHRyLmdldCgpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICB9
CisgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgfCByZWYoYikgZGVyZWYoYSkgfCBkZXJlZihiKSAi
LCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7CisgICAgICAgIENvbXBhY3RSZWZQdHI8
UmVmTG9nZ2VyPiBwdHIoJmEpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHB0ci5nZXQoKSk7Cisg
ICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAgICAgIHB0ciA9IGFkb3B0UmVmKCZiKTsKKyAgICAg
ICAgRVhQRUNUX0VRKCZiLCBwdHIuZ2V0KCkpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAg
IH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSB8IGRlcmVmKGEpIHwgZGVyZWYoYikgIiwgdGFr
ZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAgeworICAgICAgICBDb21wYWN0UmVmUHRyPFJlZkxv
Z2dlcj4gcHRyKCZhKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwdHIuZ2V0KCkpOworICAgICAg
ICBwdHIgPSBudWxscHRyOworICAgICAgICBFWFBFQ1RfRVEobnVsbHB0ciwgcHRyLmdldCgpKTsK
KyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigp
LmNfc3RyKCkpOworCisgICAgeworICAgICAgICBDb21wYWN0UmVmUHRyPFJlZkxvZ2dlcj4gcDEo
JmEpOworICAgICAgICBDb21wYWN0UmVmUHRyPFJlZkxvZ2dlcj4gcDIoJmIpOworICAgICAgICBF
WFBFQ1RfRVEoJmEsIHAxLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZiLCBwMi5nZXQoKSk7
CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAgICAgIHAxID0gV1RGTW92ZShwMik7CisgICAg
ICAgIEVYUEVDVF9FUSgmYiwgcDEuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEobnVsbHB0ciwg
cDIuZ2V0KCkpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAgIH0KKyAgICBFWFBFQ1RfU1RS
RVEoInJlZihhKSByZWYoYikgfCBkZXJlZihhKSB8IGRlcmVmKGIpICIsIHRha2VMb2dTdHIoKS5j
X3N0cigpKTsKKworICAgIHsKKyAgICAgICAgQ29tcGFjdFJlZlB0cjxSZWZMb2dnZXI+IHAxKCZh
KTsKKyAgICAgICAgQ29tcGFjdFJlZlB0cjxEZXJpdmVkUmVmTG9nZ2VyPiBwMigmYyk7CisgICAg
ICAgIEVYUEVDVF9FUSgmYSwgcDEuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEoJmMsIHAyLmdl
dCgpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICAgICAgcDEgPSBwMjsKKyAgICAgICAg
RVhQRUNUX0VRKCZjLCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYywgcDIuZ2V0KCkp
OworICAgICAgICBsb2coKSA8PCAifCAiOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihh
KSByZWYoYykgfCByZWYoYykgZGVyZWYoYSkgfCBkZXJlZihjKSBkZXJlZihjKSAiLCB0YWtlTG9n
U3RyKCkuY19zdHIoKSk7CisKKyAgICB7CisgICAgICAgIENvbXBhY3RSZWZQdHI8UmVmTG9nZ2Vy
PiBwdHIoJmEpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHB0ci5nZXQoKSk7CisgICAgICAgIGxv
ZygpIDw8ICJ8ICI7CisgICAgICAgIHB0ciA9ICZjOworICAgICAgICBFWFBFQ1RfRVEoJmMsIHB0
ci5nZXQoKSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAgfQorICAgIEVYUEVDVF9TVFJF
USgicmVmKGEpIHwgcmVmKGMpIGRlcmVmKGEpIHwgZGVyZWYoYykgIiwgdGFrZUxvZ1N0cigpLmNf
c3RyKCkpOworCisgICAgeworICAgICAgICBDb21wYWN0UmVmUHRyPFJlZkxvZ2dlcj4gcHRyKCZh
KTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwdHIuZ2V0KCkpOworICAgICAgICBsb2coKSA8PCAi
fCAiOworICAgICAgICBwdHIgPSBhZG9wdFJlZigmYyk7CisgICAgICAgIEVYUEVDVF9FUSgmYywg
cHRyLmdldCgpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICB9CisgICAgRVhQRUNUX1NU
UkVRKCJyZWYoYSkgfCBkZXJlZihhKSB8IGRlcmVmKGMpICIsIHRha2VMb2dTdHIoKS5jX3N0cigp
KTsKKworICAgIHsKKyAgICAgICAgQ29tcGFjdFJlZlB0cjxSZWZMb2dnZXI+IHAxKCZhKTsKKyAg
ICAgICAgQ29tcGFjdFJlZlB0cjxEZXJpdmVkUmVmTG9nZ2VyPiBwMigmYyk7CisgICAgICAgIEVY
UEVDVF9FUSgmYSwgcDEuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEoJmMsIHAyLmdldCgpKTsK
KyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICAgICAgcDEgPSBXVEZNb3ZlKHAyKTsKKyAgICAg
ICAgRVhQRUNUX0VRKCZjLCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUShudWxscHRyLCBw
Mi5nZXQoKSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAgfQorICAgIEVYUEVDVF9TVFJF
USgicmVmKGEpIHJlZihjKSB8IGRlcmVmKGEpIHwgZGVyZWYoYykgIiwgdGFrZUxvZ1N0cigpLmNf
c3RyKCkpOworCisgICAgeworICAgICAgICBDb21wYWN0UmVmUHRyPFJlZkxvZ2dlcj4gcHRyKCZh
KTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwdHIuZ2V0KCkpOworICAgICAgICBsb2coKSA8PCAi
fCAiOworI2lmIENPTVBJTEVSKENMQU5HKQorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gK
KyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV3Vua25vd24tcHJhZ21hcyIKKyNw
cmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV3Vua25vd24td2FybmluZy1vcHRpb24i
CisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdzZWxmLWFzc2lnbi1vdmVybG9h
ZGVkIgorI2VuZGlmCisgICAgICAgIHB0ciA9IHB0cjsKKyNpZiBDT01QSUxFUihDTEFORykKKyNw
cmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKKyNlbmRpZgorICAgICAgICBFWFBFQ1RfRVEoJmEs
IHB0ci5nZXQoKSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAgfQorICAgIEVYUEVDVF9T
VFJFUSgicmVmKGEpIHwgcmVmKGEpIGRlcmVmKGEpIHwgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigp
LmNfc3RyKCkpOworCisgICAgeworICAgICAgICBDb21wYWN0UmVmUHRyPFJlZkxvZ2dlcj4gcHRy
KCZhKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwdHIuZ2V0KCkpOworI2lmIENPTVBJTEVSKENM
QU5HKQorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKKyNwcmFnbWEgY2xhbmcgZGlhZ25v
c3RpYyBpZ25vcmVkICItV3Vua25vd24tcHJhZ21hcyIKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3Rp
YyBpZ25vcmVkICItV3NlbGYtbW92ZSIKKyNlbmRpZgorICAgICAgICBwdHIgPSBXVEZNb3ZlKHB0
cik7CisjaWYgQ09NUElMRVIoQ0xBTkcpCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCisj
ZW5kaWYKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwdHIuZ2V0KCkpOworICAgIH0KKyAgICBFWFBF
Q1RfU1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7Cit9CisK
K1RFU1QoV1RGX0NvbXBhY3RSZWZQdHIsIFN3YXApCit7CisgICAgUmVmTG9nZ2VyIGEoImEiKTsK
KyAgICBSZWZMb2dnZXIgYigiYiIpOworCisgICAgeworICAgICAgICBDb21wYWN0UmVmUHRyPFJl
ZkxvZ2dlcj4gcDEoJmEpOworICAgICAgICBDb21wYWN0UmVmUHRyPFJlZkxvZ2dlcj4gcDIoJmIp
OworICAgICAgICBsb2coKSA8PCAifCAiOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHAxLmdldCgp
KTsKKyAgICAgICAgRVhQRUNUX0VRKCZiLCBwMi5nZXQoKSk7CisgICAgICAgIHAxLnN3YXAocDIp
OworICAgICAgICBFWFBFQ1RfRVEoJmIsIHAxLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZh
LCBwMi5nZXQoKSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAgfQorICAgIEVYUEVDVF9T
VFJFUSgicmVmKGEpIHJlZihiKSB8IHwgZGVyZWYoYSkgZGVyZWYoYikgIiwgdGFrZUxvZ1N0cigp
LmNfc3RyKCkpOworCisgICAgeworICAgICAgICBDb21wYWN0UmVmUHRyPFJlZkxvZ2dlcj4gcDEo
JmEpOworICAgICAgICBDb21wYWN0UmVmUHRyPFJlZkxvZ2dlcj4gcDIoJmIpOworICAgICAgICBs
b2coKSA8PCAifCAiOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHAxLmdldCgpKTsKKyAgICAgICAg
RVhQRUNUX0VRKCZiLCBwMi5nZXQoKSk7CisgICAgICAgIHN0ZDo6c3dhcChwMSwgcDIpOworICAg
ICAgICBFWFBFQ1RfRVEoJmIsIHAxLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwMi5n
ZXQoKSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgi
cmVmKGEpIHJlZihiKSB8IHwgZGVyZWYoYSkgZGVyZWYoYikgIiwgdGFrZUxvZ1N0cigpLmNfc3Ry
KCkpOworfQorCitURVNUKFdURl9Db21wYWN0UmVmUHRyLCBSZWxlYXNlTm9uTnVsbCkKK3sKKyAg
ICBSZWZMb2dnZXIgYSgiYSIpOworCisgICAgeworICAgICAgICBDb21wYWN0UmVmUHRyPFJlZkxv
Z2dlcj4gcmVmUHRyID0gJmE7CisgICAgICAgIENvbXBhY3RSZWZQdHI8UmVmTG9nZ2VyPiByZWYg
PSByZWZQdHIucmVsZWFzZU5vbk51bGwoKTsKKyAgICB9CisKKyAgICBFWFBFQ1RfU1RSRVEoInJl
ZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7Cit9CisKK1RFU1QoV1RGX0Nv
bXBhY3RSZWZQdHIsIFJlbGVhc2UpCit7CisgICAgRGVyaXZlZFJlZkxvZ2dlciBhKCJhIik7Cisg
ICAgUmVmTG9nZ2VyIGIoImIiKTsKKyAgICBEZXJpdmVkUmVmTG9nZ2VyIGMoImMiKTsKKworICAg
IHsKKyAgICAgICAgQ29tcGFjdFJlZlB0cjxSZWZMb2dnZXI+IHAxID0gJmE7CisgICAgICAgIENv
bXBhY3RSZWZQdHI8UmVmTG9nZ2VyPiBwMiA9IFdURk1vdmUocDEpOworICAgICAgICBFWFBFQ1Rf
RVEobnVsbHB0ciwgcDEuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHAyLmdldCgpKTsK
KyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigp
LmNfc3RyKCkpOworCisgICAgeworICAgICAgICBDb21wYWN0UmVmUHRyPFJlZkxvZ2dlcj4gcDEg
PSAmYTsKKyAgICAgICAgQ29tcGFjdFJlZlB0cjxSZWZMb2dnZXI+IHAyKFdURk1vdmUocDEpKTsK
KyAgICAgICAgRVhQRUNUX0VRKG51bGxwdHIsIHAxLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VR
KCZhLCBwMi5nZXQoKSk7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIGRlcmVmKGEp
ICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKworICAgIHsKKyAgICAgICAgQ29tcGFjdFJlZlB0
cjxEZXJpdmVkUmVmTG9nZ2VyPiBwMSA9ICZhOworICAgICAgICBDb21wYWN0UmVmUHRyPFJlZkxv
Z2dlcj4gcDIgPSBXVEZNb3ZlKHAxKTsKKyAgICAgICAgRVhQRUNUX0VRKG51bGxwdHIsIHAxLmdl
dCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwMi5nZXQoKSk7CisgICAgfQorICAgIEVYUEVD
VF9TVFJFUSgicmVmKGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKworICAg
IHsKKyAgICAgICAgQ29tcGFjdFJlZlB0cjxSZWZMb2dnZXI+IHAxKCZhKTsKKyAgICAgICAgQ29t
cGFjdFJlZlB0cjxSZWZMb2dnZXI+IHAyKCZiKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwMS5n
ZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYiwgcDIuZ2V0KCkpOworICAgICAgICBsb2coKSA8
PCAifCAiOworICAgICAgICBwMSA9IFdURk1vdmUocDIpOworICAgICAgICBFWFBFQ1RfRVEoJmIs
IHAxLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKG51bGxwdHIsIHAyLmdldCgpKTsKKyAgICAg
ICAgbG9nKCkgPDwgInwgIjsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgcmVmKGIp
IHwgZGVyZWYoYSkgfCBkZXJlZihiKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7
CisgICAgICAgIENvbXBhY3RSZWZQdHI8UmVmTG9nZ2VyPiBwMSgmYSk7CisgICAgICAgIENvbXBh
Y3RSZWZQdHI8RGVyaXZlZFJlZkxvZ2dlcj4gcDIoJmMpOworICAgICAgICBFWFBFQ1RfRVEoJmEs
IHAxLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZjLCBwMi5nZXQoKSk7CisgICAgICAgIGxv
ZygpIDw8ICJ8ICI7CisgICAgICAgIHAxID0gV1RGTW92ZShwMik7CisgICAgICAgIEVYUEVDVF9F
USgmYywgcDEuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEobnVsbHB0ciwgcDIuZ2V0KCkpOwor
ICAgICAgICBsb2coKSA8PCAifCAiOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSBy
ZWYoYykgfCBkZXJlZihhKSB8IGRlcmVmKGMpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKK30K
Kworc3RhdGljIENvbXBhY3RSZWZQdHI8UmVmTG9nZ2VyPiBmMShSZWZMb2dnZXImIGxvZ2dlcikK
K3sKKyAgICByZXR1cm4gQ29tcGFjdFJlZlB0cjxSZWZMb2dnZXI+KCZsb2dnZXIpOworfQorCitU
RVNUKFdURl9Db21wYWN0UmVmUHRyLCBSZXR1cm5WYWx1ZSkKK3sKKyAgICBEZXJpdmVkUmVmTG9n
Z2VyIGEoImEiKTsKKworICAgIHsKKyAgICAgICAgZjEoYSk7CisgICAgfQorICAgIEVYUEVDVF9T
VFJFUSgicmVmKGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKworICAgIHsK
KyAgICAgICAgYXV0byBwdHIgPSBmMShhKTsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJyZWYo
YSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworfQorCitzdHJ1Y3QgQ29uc3RS
ZWZDb3VudGVkIDogUmVmQ291bnRlZDxDb25zdFJlZkNvdW50ZWQ+IHsKKyAgICBzdGF0aWMgUmVm
PENvbnN0UmVmQ291bnRlZD4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb25zdFJl
ZkNvdW50ZWQpOyB9Cit9OworCitzdGF0aWMgY29uc3QgQ29uc3RSZWZDb3VudGVkJiByZXR1cm5D
b25zdFJlZkNvdW50ZWRSZWYoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxDb25zdFJl
ZkNvdW50ZWQ+IGluc3RhbmNlOworICAgIHJldHVybiBpbnN0YW5jZS5nZXQoKTsKK30KK3N0YXRp
YyBDb25zdFJlZkNvdW50ZWQmIHJldHVyblJlZkNvdW50ZWRSZWYoKQoreworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxDb25zdFJlZkNvdW50ZWQ+IGluc3RhbmNlOworICAgIHJldHVybiBpbnN0
YW5jZS5nZXQoKTsKK30KKworVEVTVChXVEZfQ29tcGFjdFJlZlB0ciwgQ29uc3QpCit7CisgICAg
Ly8gVGhpcyB0ZXN0IHBhc3NlcyBpZiBpdCBjb21waWxlcyB3aXRob3V0IGFuIGVycm9yLgorICAg
IGF1dG8gYSA9IENvbnN0UmVmQ291bnRlZDo6Y3JlYXRlKCk7CisgICAgUmVmPGNvbnN0IENvbnN0
UmVmQ291bnRlZD4gYiA9IFdURk1vdmUoYSk7CisgICAgQ29tcGFjdFJlZlB0cjxjb25zdCBDb25z
dFJlZkNvdW50ZWQ+IGMgPSBiLnB0cigpOworICAgIFJlZjxjb25zdCBDb25zdFJlZkNvdW50ZWQ+
IGQgPSByZXR1cm5Db25zdFJlZkNvdW50ZWRSZWYoKTsKKyAgICBDb21wYWN0UmVmUHRyPGNvbnN0
IENvbnN0UmVmQ291bnRlZD4gZSA9ICZyZXR1cm5Db25zdFJlZkNvdW50ZWRSZWYoKTsKKyAgICBD
b21wYWN0UmVmUHRyPENvbnN0UmVmQ291bnRlZD4gZiA9IENvbnN0UmVmQ291bnRlZDo6Y3JlYXRl
KCk7CisgICAgQ29tcGFjdFJlZlB0cjxjb25zdCBDb25zdFJlZkNvdW50ZWQ+IGcgPSBmOworICAg
IENvbXBhY3RSZWZQdHI8Y29uc3QgQ29uc3RSZWZDb3VudGVkPiBoKGYpOworICAgIFJlZjxjb25z
dCBDb25zdFJlZkNvdW50ZWQ+IGkocmV0dXJuUmVmQ291bnRlZFJlZigpKTsKK30KKworc3RydWN0
IENvbXBhY3RSZWZQdHJDaGVja2luZ1JlZkxvZ2dlciA6IFJlZkxvZ2dlciB7CisgICAgQ29tcGFj
dFJlZlB0ckNoZWNraW5nUmVmTG9nZ2VyKGNvbnN0IGNoYXIqIG5hbWUpOworICAgIHZvaWQgcmVm
KCk7CisgICAgdm9pZCBkZXJlZigpOworICAgIGNvbnN0IENvbXBhY3RSZWZQdHI8Q29tcGFjdFJl
ZlB0ckNoZWNraW5nUmVmTG9nZ2VyPiogc2xvdFRvQ2hlY2sgeyBudWxscHRyIH07Cit9OworCitD
b21wYWN0UmVmUHRyQ2hlY2tpbmdSZWZMb2dnZXI6OkNvbXBhY3RSZWZQdHJDaGVja2luZ1JlZkxv
Z2dlcihjb25zdCBjaGFyKiBuYW1lKQorICAgIDogUmVmTG9nZ2VyIHsgbmFtZSB9Cit7Cit9CisK
K3N0YXRpYyBjb25zdCBjaGFyKiBsb2dnZXJOYW1lKGNvbnN0IENvbXBhY3RSZWZQdHI8Q29tcGFj
dFJlZlB0ckNoZWNraW5nUmVmTG9nZ2VyPiYgcG9pbnRlcikKK3sKKyAgICByZXR1cm4gcG9pbnRl
ciA/ICZwb2ludGVyLT5uYW1lIDogIm51bGwiOworfQorCit2b2lkIENvbXBhY3RSZWZQdHJDaGVj
a2luZ1JlZkxvZ2dlcjo6cmVmKCkKK3sKKyAgICBpZiAoc2xvdFRvQ2hlY2spCisgICAgICAgIGxv
ZygpIDw8ICJzbG90PSIgPDwgbG9nZ2VyTmFtZSgqc2xvdFRvQ2hlY2spIDw8ICIgIjsKKyAgICBS
ZWZMb2dnZXI6OnJlZigpOworfQorCit2b2lkIENvbXBhY3RSZWZQdHJDaGVja2luZ1JlZkxvZ2dl
cjo6ZGVyZWYoKQoreworICAgIGlmIChzbG90VG9DaGVjaykKKyAgICAgICAgbG9nKCkgPDwgInNs
b3Q9IiA8PCBsb2dnZXJOYW1lKCpzbG90VG9DaGVjaykgPDwgIiAiOworICAgIFJlZkxvZ2dlcjo6
ZGVyZWYoKTsKK30KKworVEVTVChXVEZfQ29tcGFjdFJlZlB0ciwgQXNzaWduQmVmb3JlRGVyZWYp
Cit7CisgICAgQ29tcGFjdFJlZlB0ckNoZWNraW5nUmVmTG9nZ2VyIGEoImEiKTsKKyAgICBDb21w
YWN0UmVmUHRyQ2hlY2tpbmdSZWZMb2dnZXIgYigiYiIpOworCisgICAgeworICAgICAgICBDb21w
YWN0UmVmUHRyPENvbXBhY3RSZWZQdHJDaGVja2luZ1JlZkxvZ2dlcj4gcDEoJmEpOworICAgICAg
ICBDb21wYWN0UmVmUHRyPENvbXBhY3RSZWZQdHJDaGVja2luZ1JlZkxvZ2dlcj4gcDIoJmIpOwor
ICAgICAgICBFWFBFQ1RfRVEoJmEsIHAxLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZiLCBw
Mi5nZXQoKSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAgICAgIGEuc2xvdFRvQ2hlY2sg
PSAmcDE7CisgICAgICAgIGIuc2xvdFRvQ2hlY2sgPSAmcDE7CisgICAgICAgIHAxID0gcDI7Cisg
ICAgICAgIGEuc2xvdFRvQ2hlY2sgPSBudWxscHRyOworICAgICAgICBiLnNsb3RUb0NoZWNrID0g
bnVsbHB0cjsKKyAgICAgICAgRVhQRUNUX0VRKCZiLCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVD
VF9FUSgmYiwgcDIuZ2V0KCkpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAgIH0KKyAgICBF
WFBFQ1RfU1RSRVEoInJlZihhKSByZWYoYikgfCBzbG90PWEgcmVmKGIpIHNsb3Q9YiBkZXJlZihh
KSB8IGRlcmVmKGIpIGRlcmVmKGIpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKworICAgIHsK
KyAgICAgICAgQ29tcGFjdFJlZlB0cjxDb21wYWN0UmVmUHRyQ2hlY2tpbmdSZWZMb2dnZXI+IHB0
cigmYSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcHRyLmdldCgpKTsKKyAgICAgICAgbG9nKCkg
PDwgInwgIjsKKyAgICAgICAgYS5zbG90VG9DaGVjayA9ICZwdHI7CisgICAgICAgIGIuc2xvdFRv
Q2hlY2sgPSAmcHRyOworICAgICAgICBwdHIgPSAmYjsKKyAgICAgICAgYS5zbG90VG9DaGVjayA9
IG51bGxwdHI7CisgICAgICAgIGIuc2xvdFRvQ2hlY2sgPSBudWxscHRyOworICAgICAgICBFWFBF
Q1RfRVEoJmIsIHB0ci5nZXQoKSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAgfQorICAg
IEVYUEVDVF9TVFJFUSgicmVmKGEpIHwgc2xvdD1hIHJlZihiKSBzbG90PWIgZGVyZWYoYSkgfCBk
ZXJlZihiKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7CisgICAgICAgIENvbXBh
Y3RSZWZQdHI8Q29tcGFjdFJlZlB0ckNoZWNraW5nUmVmTG9nZ2VyPiBwdHIoJmEpOworICAgICAg
ICBFWFBFQ1RfRVEoJmEsIHB0ci5nZXQoKSk7CisgICAgICAgIGEuc2xvdFRvQ2hlY2sgPSAmcHRy
OworICAgICAgICBwdHIgPSBudWxscHRyOworICAgICAgICBhLnNsb3RUb0NoZWNrID0gbnVsbHB0
cjsKKyAgICAgICAgRVhQRUNUX0VRKG51bGxwdHIsIHB0ci5nZXQoKSk7CisgICAgfQorICAgIEVY
UEVDVF9TVFJFUSgicmVmKGEpIHNsb3Q9bnVsbCBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19z
dHIoKSk7CisKKyAgICB7CisgICAgICAgIENvbXBhY3RSZWZQdHI8Q29tcGFjdFJlZlB0ckNoZWNr
aW5nUmVmTG9nZ2VyPiBwMSgmYSk7CisgICAgICAgIENvbXBhY3RSZWZQdHI8Q29tcGFjdFJlZlB0
ckNoZWNraW5nUmVmTG9nZ2VyPiBwMigmYik7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcDEuZ2V0
KCkpOworICAgICAgICBFWFBFQ1RfRVEoJmIsIHAyLmdldCgpKTsKKyAgICAgICAgbG9nKCkgPDwg
InwgIjsKKyAgICAgICAgYS5zbG90VG9DaGVjayA9ICZwMTsKKyAgICAgICAgYi5zbG90VG9DaGVj
ayA9ICZwMTsKKyAgICAgICAgcDEgPSBXVEZNb3ZlKHAyKTsKKyAgICAgICAgYS5zbG90VG9DaGVj
ayA9IG51bGxwdHI7CisgICAgICAgIGIuc2xvdFRvQ2hlY2sgPSBudWxscHRyOworICAgICAgICBF
WFBFQ1RfRVEoJmIsIHAxLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKG51bGxwdHIsIHAyLmdl
dCgpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJy
ZWYoYSkgcmVmKGIpIHwgc2xvdD1iIGRlcmVmKGEpIHwgZGVyZWYoYikgIiwgdGFrZUxvZ1N0cigp
LmNfc3RyKCkpOworfQorCitURVNUKFdURl9Db21wYWN0UmVmUHRyLCBSZWxlYXNlTm9uTnVsbEJl
Zm9yZURlcmVmKQoreworICAgIENvbXBhY3RSZWZQdHJDaGVja2luZ1JlZkxvZ2dlciBhKCJhIik7
CisKKyAgICB7CisgICAgICAgIENvbXBhY3RSZWZQdHI8Q29tcGFjdFJlZlB0ckNoZWNraW5nUmVm
TG9nZ2VyPiByZWZQdHIgPSAmYTsKKyAgICAgICAgYS5zbG90VG9DaGVjayA9ICZyZWZQdHI7Cisg
ICAgICAgIHJlZlB0ci5yZWxlYXNlTm9uTnVsbCgpOworICAgICAgICBhLnNsb3RUb0NoZWNrID0g
bnVsbHB0cjsKKyAgICB9CisKKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSBzbG90PW51bGwgZGVy
ZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworfQorCisvLyBGSVhNRTogRW5hYmxlIHRo
ZXNlIHRlc3RzIG9uY2UgV2luIHBsYXRmb3JtIHN1cHBvcnRzIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnJ1bgorI2lmICFQTEFURk9STShXSU4pCisKK3N0YXRpYyBib29sIGRvbmU7CitzdGF0aWMgYm9v
bCBpc0Rlc3Ryb3llZEluTWFpblRocmVhZDsKK3N0cnVjdCBUaHJlYWRTYWZlUmVmQ291bnRlZE9i
amVjdCA6IFRocmVhZFNhZmVSZWZDb3VudGVkPFRocmVhZFNhZmVSZWZDb3VudGVkT2JqZWN0PiB7
CisgICAgc3RhdGljIFJlZjxUaHJlYWRTYWZlUmVmQ291bnRlZE9iamVjdD4gY3JlYXRlKCkgeyBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBUaHJlYWRTYWZlUmVmQ291bnRlZE9iamVjdCk7IH0KKworICAg
IH5UaHJlYWRTYWZlUmVmQ291bnRlZE9iamVjdCgpCisgICAgeworICAgICAgICBpc0Rlc3Ryb3ll
ZEluTWFpblRocmVhZCA9IGlzTWFpblRocmVhZCgpOworICAgICAgICBkb25lID0gdHJ1ZTsKKyAg
ICB9Cit9OworCitzdHJ1Y3QgTWFpblRocmVhZFNhZmVSZWZDb3VudGVkT2JqZWN0IDogVGhyZWFk
U2FmZVJlZkNvdW50ZWQ8TWFpblRocmVhZFNhZmVSZWZDb3VudGVkT2JqZWN0LCBXVEY6OkRlc3Ry
dWN0aW9uVGhyZWFkOjpNYWluPiB7CisgICAgc3RhdGljIFJlZjxNYWluVGhyZWFkU2FmZVJlZkNv
dW50ZWRPYmplY3Q+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWFpblRocmVhZFNh
ZmVSZWZDb3VudGVkT2JqZWN0KTsgfQorCisgICAgfk1haW5UaHJlYWRTYWZlUmVmQ291bnRlZE9i
amVjdCgpCisgICAgeworICAgICAgICBpc0Rlc3Ryb3llZEluTWFpblRocmVhZCA9IGlzTWFpblRo
cmVhZCgpOworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9Cit9OworCitURVNUKFdURl9Db21w
YWN0UmVmUHRyLCBSZWxlYXNlSW5Ob25NYWluVGhyZWFkKQoreworICAgIGRvbmUgPSBmYWxzZTsK
KyAgICBUaHJlYWQ6OmNyZWF0ZSgiIiwgW29iamVjdCA9IFRocmVhZFNhZmVSZWZDb3VudGVkT2Jq
ZWN0OjpjcmVhdGUoKV0geyB9KTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUp
OworCisgICAgRVhQRUNUX0ZBTFNFKGlzRGVzdHJveWVkSW5NYWluVGhyZWFkKTsKK30KKworVEVT
VChXVEZfQ29tcGFjdFJlZlB0ciwgUmVsZWFzZUluTm9uTWFpblRocmVhZERlc3Ryb3lJbk1haW5U
aHJlYWQpCit7CisgICAgV1RGOjppbml0aWFsaXplTWFpblRocmVhZCgpOworICAgIGRvbmUgPSBm
YWxzZTsKKyAgICBUaHJlYWQ6OmNyZWF0ZSgiIiwgW29iamVjdCA9IE1haW5UaHJlYWRTYWZlUmVm
Q291bnRlZE9iamVjdDo6Y3JlYXRlKCldIHsgfSk7CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
cnVuKCZkb25lKTsKKworICAgIEVYUEVDVF9UUlVFKGlzRGVzdHJveWVkSW5NYWluVGhyZWFkKTsK
K30KKworI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>459705</attachid>
            <date>2022-05-24 00:22:26 -0700</date>
            <delta_ts>2022-05-31 10:50:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-240407-20220524002225.patch</filename>
            <type>text/plain</type>
            <size>94172</size>
            <attacher name="Yijia Huang">yijia_huang</attacher>
            
              <data encoding="base64">RnJvbSBmODY4MTQ3MzQyZTQyYjllMDBlNTEzODZlYTIxNDU4OGRiZTZjMGI0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBZaWppYSBIdWFuZyA8eWlqaWFfaHVhbmdAYXBwbGUuY29tPgpE
YXRlOiBUdWUsIDI0IE1heSAyMDIyIDAwOjIxOjAxIC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gQW5k
NjQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0MDQwNwoKUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpXZSBoYXZlIDIlIFJBTWlmaWNhdGlvbiByZWdyZXNzaW9u
IG9uIGlPUywgd2hpY2ggbmVlZHMgYSBtZW1vcnkgcGVyZm9ybWFuY2UKaW1wcm92ZW1lbnQuIFRv
IHdvcmsgdG93YXJkcyByZXNvbHZpbmcgdGhpcyByZWdyZXNzaW9uLCB0aGlzIHBhdGNoIGlzIHRv
CnJlZHVjZSBKUyBvYmplY3QncyBzdHJ1Y3R1cmUgc2l6ZSBmcm9tIDExMiBieXRlcyB0byA5NiBi
eXRlcyBmb3IgaU9TIHN5c3RlbXMuCgoxLiBXZSBjYW4gcmVkdWNlIDM2LWJpdCBhZGRyZXNzZXMg
aW50byA0IGJ5dGVzIHdoZW4gZGVhbGluZyB3aXRoIHBvaW50ZXJzIHRoYXQKaGF2ZSAxNi1ieXRl
IGFsaWdubWVudC4KMi4gU3RydWN0dXJlSUQgY2FuIGJlIHJlbW92ZWQgZnJvbSBTdHJ1Y3R1cmVJ
REJsb2Igc2luY2Ugd2UgY2FuIGRpcmVjdGx5IGNvbXB1dGUKdGhlIGlkIGJ5IGVuY29kaW5nIHRo
ZSBTdHJ1Y3R1cmUgcG9pbnRlci4KCkNvbXBhY3RQdHIgYW5kIENvbXBhY3RSZWZQdHIgY2xhc3Nl
cyBhcmUgaW50cm9kdWNlZCBmb3IgcG9pbnRlcnMsIHdoaWNoIGNhbgphY2hpZXZlIDggYnl0ZXMg
aW4gTWFjT1MgYW5kIDQgYnl0ZXMgaW4gaU9TLgoKKiBQZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVh
bTIvUmV4QmVuY2gvT2ZmbGluZUFzc2VtYmxlci9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgoq
IFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi9SZXhCZW5jaC9PZmZsaW5lQXNzZW1ibGVyL0xv
d0xldmVsSW50ZXJwcmV0ZXI2NC5qczoKKiBQZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvUmV4
QmVuY2gvT2ZmbGluZUFzc2VtYmxlci9leHBlY3RlZC5qczoKKiBQZXJmb3JtYW5jZVRlc3RzL1Jl
eEJlbmNoL09mZmxpbmVBc3NlbWJsZXIvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbToKKiBQZXJm
b3JtYW5jZVRlc3RzL1JleEJlbmNoL09mZmxpbmVBc3NlbWJsZXIvTG93TGV2ZWxJbnRlcnByZXRl
cjY0LmpzOgoqIFBlcmZvcm1hbmNlVGVzdHMvUmV4QmVuY2gvT2ZmbGluZUFzc2VtYmxlci9leHBl
Y3RlZC5qczoKKiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQ6CiogU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CiogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5VmFsSGlzdG9yeS5oOgooSlND
OjpHZXRCeVZhbEhpc3Rvcnk6Om9ic2VydmUpOgoqIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuY3BwOgoqIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJz
dHJhY3RIZWFwUmVwb3NpdG9yeS5jcHA6CihKU0M6OkZUTDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9y
eTo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeSk6CiogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5Lmg6CiogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExMb3dlckRGR1RvQjMuY3BwOgooSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxl
Q29tcGFyZVN0cmljdEVxKToKKiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db25zZXJ2YXRp
dmVSb290cy5jcHA6CihKU0M6OkNvbnNlcnZhdGl2ZVJvb3RzOjpnZW5lcmljQWRkUG9pbnRlcik6
CihKU0M6OkNvbnNlcnZhdGl2ZVJvb3RzOjpnZW5lcmljQWRkU3Bhbik6CiogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvQ29uc2VydmF0aXZlUm9vdHMuaDoKKiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IZWFwU25hcHNob3QuaDoKKiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFw
VXRpbC5oOgooSlNDOjpIZWFwVXRpbDo6ZmluZEdDT2JqZWN0UG9pbnRlcnNGb3JNYXJraW5nKToK
KEpTQzo6SGVhcFV0aWw6OmlzUG9pbnRlckdDT2JqZWN0SlNDZWxsKToKKEpTQzo6SGVhcFV0aWw6
OmlzVmFsdWVHQ09iamVjdCk6CiogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxv
Y2tTZXQuaDoKKEpTQzo6TWFya2VkQmxvY2tTZXQ6OmFkZCk6CihKU0M6Ok1hcmtlZEJsb2NrU2V0
OjpyZWNvbXB1dGVGaWx0ZXIpOgooSlNDOjpNYXJrZWRCbG9ja1NldDo6ZmlsdGVyIGNvbnN0KToK
KiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9UaW55Qmxvb21GaWx0ZXIuaDoKKEpTQzo6VGlu
eUJsb29tRmlsdGVyPEJpdHM+OjpUaW55Qmxvb21GaWx0ZXIpOgooSlNDOjpUaW55Qmxvb21GaWx0
ZXI8Qml0cz46OmFkZCk6CihKU0M6OlRpbnlCbG9vbUZpbHRlcjxCaXRzPjo6cnVsZU91dCBjb25z
dCk6CihKU0M6OlRpbnlCbG9vbUZpbHRlcjxCaXRzPjo6cmVzZXQpOgooSlNDOjpUaW55Qmxvb21G
aWx0ZXI6OlRpbnlCbG9vbUZpbHRlcik6IERlbGV0ZWQuCihKU0M6OlRpbnlCbG9vbUZpbHRlcjo6
YWRkKTogRGVsZXRlZC4KKEpTQzo6VGlueUJsb29tRmlsdGVyOjpydWxlT3V0IGNvbnN0KTogRGVs
ZXRlZC4KKEpTQzo6VGlueUJsb29tRmlsdGVyOjpyZXNldCk6IERlbGV0ZWQuCiogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwOgooSlNDOjpBc3NlbWJseUhlbHBl
cnM6OmVtaXRTdG9yZVN0cnVjdHVyZVdpdGhUeXBlSW5mbyk6CihKU0M6OkFzc2VtYmx5SGVscGVy
czo6ZW1pdEVuY29kZVN0cnVjdHVyZSk6CiogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3Nl
bWJseUhlbHBlcnMuaDoKKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjplbWl0U3RvcmVTdHJ1Y3R1cmVX
aXRoVHlwZUluZm8pOgooSlNDOjpBc3NlbWJseUhlbHBlcnM6OmxvYWRDb21wYWN0UHRyKToKKEpT
Qzo6QXNzZW1ibHlIZWxwZXJzOjpicmFuY2hDb21wYWN0UHRyKToKKiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKEpTQzo6SklUOjpnZW5lcmF0ZU9wR2V0
RnJvbVNjb3BlVGh1bmspOgooSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X3RvX3Njb3BlKToKKiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaDoKKEpTQzo6Q2xhc3NJbmZvOjpv
ZmZzZXRPZlBhcmVudENsYXNzKTogRGVsZXRlZC4KKEpTQzo6Q2xhc3NJbmZvOjppc1N1YkNsYXNz
T2YgY29uc3QpOiBEZWxldGVkLgoqIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NhbXBs
aW5nUHJvZmlsZXIuY3BwOgooSlNDOjpTYW1wbGluZ1Byb2ZpbGVyOjpwcm9jZXNzVW52ZXJpZmll
ZFN0YWNrVHJhY2VzKToKKiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUu
Y3BwOgooSlNDOjpTdHJ1Y3R1cmU6OlN0cnVjdHVyZSk6CiogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RydWN0dXJlLmg6CihKU0M6OlN0cnVjdHVyZTo6aWQgY29uc3QpOgooSlNDOjpT
dHJ1Y3R1cmU6OnR5cGVJbmZvQmxvYiBjb25zdCk6CihKU0M6OlN0cnVjdHVyZTo6Y2xhc3NJbmZv
Rm9yQ2VsbHMgY29uc3QpOgooSlNDOjpTdHJ1Y3R1cmU6OmluZGV4aW5nTW9kZUluY2x1ZGluZ0hp
c3RvcnlPZmZzZXQpOgooSlNDOjpTdHJ1Y3R1cmU6Om9iamVjdEluaXRpYWxpemF0aW9uQmxvYiBj
b25zdCk6IERlbGV0ZWQuCihKU0M6OlN0cnVjdHVyZTo6aWRCbG9iIGNvbnN0KTogRGVsZXRlZC4K
KEpTQzo6U3RydWN0dXJlOjpzdHJ1Y3R1cmVJRE9mZnNldCk6IERlbGV0ZWQuCiogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oOgooSlNDOjpTdHJ1Y3R1cmU6
OmdldCk6CihKU0M6OlN0cnVjdHVyZTo6YWRkKToKKiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9UeXBlSW5mb0Jsb2IuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cnVjdHVyZUlEQmxvYi5oLgooSlNDOjpUeXBlSW5mb0Jsb2I6OlR5cGVJbmZvQmxv
Yik6CihKU0M6OlR5cGVJbmZvQmxvYjo6b3BlcmF0b3I9KToKKEpTQzo6VHlwZUluZm9CbG9iOjpp
bmRleGluZ01vZGVJbmNsdWRpbmdIaXN0b3J5IGNvbnN0KToKKEpTQzo6VHlwZUluZm9CbG9iOjpm
ZW5jZWRJbmRleGluZ01vZGVJbmNsdWRpbmdIaXN0b3J5KToKKEpTQzo6VHlwZUluZm9CbG9iOjpz
ZXRJbmRleGluZ01vZGVJbmNsdWRpbmdIaXN0b3J5KToKKEpTQzo6VHlwZUluZm9CbG9iOjp0eXBl
IGNvbnN0KToKKEpTQzo6VHlwZUluZm9CbG9iOjppbmxpbmVUeXBlRmxhZ3MgY29uc3QpOgooSlND
OjpUeXBlSW5mb0Jsb2I6OnR5cGVJbmZvIGNvbnN0KToKKEpTQzo6VHlwZUluZm9CbG9iOjpibG9i
IGNvbnN0KToKKEpTQzo6VHlwZUluZm9CbG9iOjppbmRleGluZ01vZGVJbmNsdWRpbmdIaXN0b3J5
T2Zmc2V0KToKKiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0
aW9uLmNwcDoKKEpTQzo6V2ViQXNzZW1ibHlGdW5jdGlvbjo6anNDYWxsRW50cnlwb2ludFNsb3cp
OgoqIFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CiogU291cmNlL1dU
Ri93dGYvQ01ha2VMaXN0cy50eHQ6CiogU291cmNlL1dURi93dGYvQ29tcGFjdFB0ci5oOiBBZGRl
ZC4KKFdURjo6Q29tcGFjdFB0cjo6Q29tcGFjdFB0cik6CihXVEY6OkNvbXBhY3RQdHI6Om9wZXJh
dG9yKiBjb25zdCk6CihXVEY6OkNvbXBhY3RQdHI6Om9wZXJhdG9yLT4gY29uc3QpOgooV1RGOjpD
b21wYWN0UHRyOjpvcGVyYXRvciEgY29uc3QpOgooV1RGOjpDb21wYWN0UHRyOjpvcGVyYXRvciBi
b29sIGNvbnN0KToKKFdURjo6Q29tcGFjdFB0cjo6b3BlcmF0b3I9KToKKFdURjo6Q29tcGFjdFB0
cjo6Z2V0IGNvbnN0KToKKFdURjo6Q29tcGFjdFB0cjo6c2V0KToKKFdURjo6Q29tcGFjdFB0cjo6
ZXhjaGFuZ2UpOgooV1RGOjpDb21wYWN0UHRyOjpzd2FwKToKKFdURjo6Q29tcGFjdFB0cjo6ZW5j
b2RlKToKKFdURjo6Q29tcGFjdFB0cjo6ZW5jb2RlIGNvbnN0KToKKFdURjo6Q29tcGFjdFB0cjo6
ZGVjb2RlIGNvbnN0KToKKFdURjo6R2V0UHRySGVscGVyPENvbXBhY3RQdHI8VD4+OjpnZXRQdHIp
OgooV1RGOjpDb21wYWN0UHRyVHJhaXRzOjpleGNoYW5nZSk6CihXVEY6OkNvbXBhY3RQdHJUcmFp
dHM6OnN3YXApOgooV1RGOjpDb21wYWN0UHRyVHJhaXRzOjp1bndyYXApOgooV1RGOjpDb21wYWN0
UHRyVHJhaXRzOjpoYXNoVGFibGVEZWxldGVkVmFsdWUpOgooV1RGOjpDb21wYWN0UHRyVHJhaXRz
Ojppc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSk6CiogU291cmNlL1dURi93dGYvQ29tcGFjdFJlZlB0
ci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU25hcHNob3Qu
aC4KKiBTb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwOgoqIFNvdXJjZS9XVEYvd3Rm
L3RleHQvU3RyaW5nSW1wbC5oOgoqIFRvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQ6
CiogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CiogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQWxpZ25lZFJlZkxvZ2dlci5o
OiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9UaW55Qmxvb21GaWx0ZXIu
aC4KKFRlc3RXZWJLaXRBUEk6OkRlcml2ZWRBbGlnbmVkUmVmTG9nZ2VyOjpEZXJpdmVkQWxpZ25l
ZFJlZkxvZ2dlcik6CiogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ29tcGFjdFB0ci5j
cHA6IEFkZGVkLgooVGVzdFdlYktpdEFQSTo6VEVTVCk6CiogVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvQ29tcGFjdFJlZlB0ci5jcHA6IEFkZGVkLgooVGVzdFdlYktpdEFQSTo6VEVTVCk6
CihUZXN0V2ViS2l0QVBJOjpmMSk6CihUZXN0V2ViS2l0QVBJOjpyZXR1cm5Db25zdFJlZkNvdW50
ZWRSZWYpOgooVGVzdFdlYktpdEFQSTo6cmV0dXJuUmVmQ291bnRlZFJlZik6CihUZXN0V2ViS2l0
QVBJOjpDb21wYWN0UmVmUHRyQ2hlY2tpbmdBbGlnbmVkUmVmTG9nZ2VyOjpDb21wYWN0UmVmUHRy
Q2hlY2tpbmdBbGlnbmVkUmVmTG9nZ2VyKToKKFRlc3RXZWJLaXRBUEk6OmxvZ2dlck5hbWUpOgoo
VGVzdFdlYktpdEFQSTo6Q29tcGFjdFJlZlB0ckNoZWNraW5nQWxpZ25lZFJlZkxvZ2dlcjo6cmVm
KToKKFRlc3RXZWJLaXRBUEk6OkNvbXBhY3RSZWZQdHJDaGVja2luZ0FsaWduZWRSZWZMb2dnZXI6
OmRlcmVmKToKKiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9KU09OVmFsdWUuY3BwOgoo
VGVzdFdlYktpdEFQSTo6VEVTVCk6CiogV2Vic2l0ZXMvYnJvd3NlcmJlbmNoLm9yZy9KZXRTdHJl
YW0yLjAvUmV4QmVuY2gvT2ZmbGluZUFzc2VtYmxlci9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNt
OgoqIFdlYnNpdGVzL2Jyb3dzZXJiZW5jaC5vcmcvSmV0U3RyZWFtMi4wL1JleEJlbmNoL09mZmxp
bmVBc3NlbWJsZXIvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmpzOgoqIFdlYnNpdGVzL2Jyb3dzZXJi
ZW5jaC5vcmcvSmV0U3RyZWFtMi4wL1JleEJlbmNoL09mZmxpbmVBc3NlbWJsZXIvZXhwZWN0ZWQu
anM6Ci0tLQogU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0ICAgICAgICAgIHwg
ICAyICstCiAuLi4vSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiAgfCAg
IDggKy0KIC4uLi9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeVZhbEhpc3RvcnkuaCB8ICAg
MiArLQogLi4uL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgIHwgICA4
ICstCiAuLi4vZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwICAgICAgICAgfCAgIDIg
Ky0KIC4uLi9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oICAgICAgICAgICB8ICAgMSAt
CiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgfCAgMTUgKy0K
IC4uLi9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbnNlcnZhdGl2ZVJvb3RzLmNwcCB8ICAgNCArLQog
Li4uL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29uc2VydmF0aXZlUm9vdHMuaCAgIHwgICAyICstCiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU25hcHNob3QuaCAgICAgfCAgIDIgKy0KIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBVdGlsLmggICAgICAgICB8ICAxMiArLQogU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2tTZXQuaCAgIHwgIDEyICstCiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9UaW55Qmxvb21GaWx0ZXIuaCAgfCAgMTggKy0KIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcCB8ICAxOCArLQogU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaCAgIHwgIDM3ICstCiAuLi4vSmF2
YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcCAgfCAgIDQgKy0KIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NsYXNzSW5mby5oICAgICB8ICAgMiArLQogLi4uL3J1bnRp
bWUvU2FtcGxpbmdQcm9maWxlci5jcHAgICAgICAgICAgICAgIHwgICAyICstCiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwICAgfCAgMTQgKy0KIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oICAgICB8ICAzOSArLQogLi4uL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oIHwgICA1ICstCiAuLi4ve1N0cnVjdHVy
ZUlEQmxvYi5oID0+IFR5cGVJbmZvQmxvYi5ofSAgICAgfCAgMzQgKy0KIC4uLi93YXNtL2pzL1dl
YkFzc2VtYmx5RnVuY3Rpb24uY3BwICAgICAgICAgICB8ICAgMiArLQogU291cmNlL1dURi9XVEYu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiAgICAgIHwgICA4ICsKIFNvdXJjZS9XVEYvd3RmL0NN
YWtlTGlzdHMudHh0ICAgICAgICAgICAgICAgICB8ICAgMiArCiBTb3VyY2UvV1RGL3d0Zi9Db21w
YWN0UHRyLmggICAgICAgICAgICAgICAgICAgfCAyMjggKysrKysrKwogU291cmNlL1dURi93dGYv
Q29tcGFjdFJlZlB0ci5oICAgICAgICAgICAgICAgIHwgIDM4ICsrCiBTb3VyY2UvV1RGL3d0Zi90
ZXh0L1N0cmluZ0ltcGwuY3BwICAgICAgICAgICAgfCAgIDIgKy0KIFNvdXJjZS9XVEYvd3RmL3Rl
eHQvU3RyaW5nSW1wbC5oICAgICAgICAgICAgICB8ICAgMiArLQogVG9vbHMvVGVzdFdlYktpdEFQ
SS9DTWFrZUxpc3RzLnR4dCAgICAgICAgICAgIHwgICAyICsKIC4uLi9UZXN0V2ViS2l0QVBJLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogICB8ICAxMCArCiAuLi4vVGVzdHMvV1RGL0FsaWduZWRS
ZWZMb2dnZXIuaCAgICAgICAgICAgICAgfCAgNTggKysKIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL0NvbXBhY3RQdHIuY3BwICB8IDE4OSArKysrKysKIC4uLi9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9Db21wYWN0UmVmUHRyLmNwcCB8IDU2NyArKysrKysrKysrKysrKysrKysKIFRvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0pTT05WYWx1ZS5jcHAgICB8ICAgNCArLQogMzUgZmls
ZXMgY2hhbmdlZCwgMTI0NiBpbnNlcnRpb25zKCspLCAxMDkgZGVsZXRpb25zKC0pCiByZW5hbWUg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUve1N0cnVjdHVyZUlEQmxvYi5oID0+IFR5cGVJ
bmZvQmxvYi5ofSAoNzMlKQogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XVEYvd3RmL0NvbXBh
Y3RQdHIuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XVEYvd3RmL0NvbXBhY3RSZWZQdHIu
aAogY3JlYXRlIG1vZGUgMTAwNjQ0IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0FsaWdu
ZWRSZWZMb2dnZXIuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL0NvbXBhY3RQdHIuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvQ29tcGFjdFJlZlB0ci5jcHAKCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VM
aXN0cy50eHQKaW5kZXggY2M5NDllODMwNGQ0Li5jZDU0ZjJjMzk3M2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTExNzYsNyArMTE3Niw3IEBAIHNldChKYXZhU2NyaXB0
Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcnVudGltZS9TdHJ1Y3R1cmVDYWNo
ZS5oCiAgICAgcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oCiAgICAgcnVudGltZS9TdHJ1Y3R1cmVJ
RC5oCi0gICAgcnVudGltZS9TdHJ1Y3R1cmVJREJsb2IuaAorICAgIHJ1bnRpbWUvVHlwZUluZm9C
bG9iLmgKICAgICBydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaAogICAgIHJ1bnRpbWUvU3RydWN0
dXJlUmFyZURhdGEuaAogICAgIHJ1bnRpbWUvU3RydWN0dXJlUmFyZURhdGFJbmxpbmVzLmgKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMjRkNGJlODZiOWMxLi44OTdkZWQ0Zjk1N2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04MzgsNyArODM4LDcgQEAKIAkJMkE0
QkI3RjMxOEE0MTE3OTAwOEEwRkNEIC8qIEpTTWFuYWdlZFZhbHVlSW50ZXJuYWwuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBNEJCN0YyMThBNDExNzkw
MDhBMEZDRCAvKiBKU01hbmFnZWRWYWx1ZUludGVybmFsLmggKi87IH07CiAJCTJBODM2Mzg2MThE
N0QwRUUwMDAwRUJDQyAvKiBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQTgzNjM4NDE4RDdEMEVFMDAwMEVCQ0Mg
LyogRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTJBODM2MzhBMThEN0QwRkUwMDAwRUJDQyAvKiBGdWxsR0NB
Y3Rpdml0eUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyQTgzNjM4ODE4RDdEMEZFMDAwMEVCQ0MgLyogRnVsbEdDQWN0aXZpdHlDYWxsYmFj
ay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTJB
QUFBMzEyMThCRDQ5RDEwMDM5NENDOCAvKiBTdHJ1Y3R1cmVJREJsb2IuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBQUFBMzEwMThCRDQ5RDEwMDM5NEND
OCAvKiBTdHJ1Y3R1cmVJREJsb2IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQkyQUFBQTMxMjE4QkQ0OUQxMDAzOTRDQzggLyogVHlwZUluZm9CbG9i
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQUFBQTMx
MDE4QkQ0OUQxMDAzOTRDQzggLyogVHlwZUluZm9CbG9iLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkFBQkNERTcxOEVGMjk0MjAwMDAyMDk2IC8q
IEdDTG9nZ2luZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMkFBQkNERTYxOEVGMjk0MjAwMDAyMDk2IC8qIEdDTG9nZ2luZy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJBQUNFNjNEMThDQTVBMDMwMEVE
MDE5MSAvKiBHQ0FjdGl2aXR5Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDJBQUNFNjNCMThDQTVBMDMwMEVEMDE5MSAvKiBHQ0FjdGl2aXR5
Q2FsbGJhY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQkyQUQyRURGQjE5Nzk5RTM4MDA0RDY0NzggLyogRW51bWVyYXRpb25Nb2RlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQUQyRURGQTE5Nzk5RTM4
MDA0RDY0NzggLyogRW51bWVyYXRpb25Nb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTM3NDMsNyArMzc0Myw3IEBACiAJCTJBODM2Mzg0MThE
N0QwRUUwMDAwRUJDQyAvKiBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMkE4MzYzODcxOEQ3RDBGRTAwMDBFQkNDIC8qIEZ1bGxHQ0FjdGl2
aXR5Q2FsbGJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRnVs
bEdDQWN0aXZpdHlDYWxsYmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJB
ODM2Mzg4MThEN0QwRkUwMDAwRUJDQyAvKiBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMkFBQUEzMTAxOEJENDlEMTAwMzk0Q0M4IC8qIFN0
cnVjdHVyZUlEQmxvYi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJ1Y3R1
cmVJREJsb2IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkFBQUEzMTAxOEJENDlE
MTAwMzk0Q0M4IC8qIFR5cGVJbmZvQmxvYi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBUeXBlSW5mb0Jsb2IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkFBQkNE
RTYxOEVGMjk0MjAwMDAyMDk2IC8qIEdDTG9nZ2luZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBHQ0xvZ2dpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkFB
Q0U2M0ExOENBNUEwMzAwRUQwMTkxIC8qIEdDQWN0aXZpdHlDYWxsYmFjay5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHQ0FjdGl2aXR5Q2FsbGJhY2suY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyQUFDRTYzQjE4Q0E1QTAzMDBFRDAxOTEgLyogR0NB
Y3Rpdml0eUNhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdDQWN0
aXZpdHlDYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODI2MCw3ICs4
MjYwLDcgQEAKIAkJCQk3RTRFRTcwRTBFQkI3QTVCMDA1OTM0QUEgLyogU3RydWN0dXJlQ2hhaW4u
Y3BwICovLAogCQkJCTdFNEVFNzA4MEVCQjc5NjMwMDU5MzRBQSAvKiBTdHJ1Y3R1cmVDaGFpbi5o
ICovLAogCQkJCTUzN0ZFRUM4Mjc0MkJEQTMwMEM5RUZFRSAvKiBTdHJ1Y3R1cmVJRC5oICovLAot
CQkJCTJBQUFBMzEwMThCRDQ5RDEwMDM5NENDOCAvKiBTdHJ1Y3R1cmVJREJsb2IuaCAqLywKKwkJ
CQkyQUFBQTMxMDE4QkQ0OUQxMDAzOTRDQzggLyogVHlwZUluZm9CbG9iLmggKi8sCiAJCQkJMEZE
MkM5MjMxNkQwMUVFOTAwQzc4MDNGIC8qIFN0cnVjdHVyZUlubGluZXMuaCAqLywKIAkJCQlDMkYw
RjJEMDE2QkFFRUU5MDAxODdDMTkgLyogU3RydWN0dXJlUmFyZURhdGEuY3BwICovLAogCQkJCUMy
RkUxOEEzMTZCQUVDNDAwMEFGMzA2MSAvKiBTdHJ1Y3R1cmVSYXJlRGF0YS5oICovLApAQCAtMTEx
MDAsNyArMTExMDAsNyBAQAogCQkJCTc5ODY5NDNCMUY4QzBBQ0MwMDkyMzJBRSAvKiBTdHJ1Y3R1
cmVDYWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0U0RUU3MDkwRUJCNzk2MzAwNTkzNEFBIC8q
IFN0cnVjdHVyZUNoYWluLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MzdGRUVDOTI3NDJCREEzMDBD
OUVGRUUgLyogU3RydWN0dXJlSUQuaCBpbiBIZWFkZXJzICovLAotCQkJCTJBQUFBMzEyMThCRDQ5
RDEwMDM5NENDOCAvKiBTdHJ1Y3R1cmVJREJsb2IuaCBpbiBIZWFkZXJzICovLAorCQkJCTJBQUFB
MzEyMThCRDQ5RDEwMDM5NENDOCAvKiBUeXBlSW5mb0Jsb2IuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGRDJDOTI0MTZEMDFFRTkwMEM3ODAzRiAvKiBTdHJ1Y3R1cmVJbmxpbmVzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlDMkZFMThBNDE2QkFFQzQwMDBBRjMwNjEgLyogU3RydWN0dXJlUmFyZURhdGEu
aCBpbiBIZWFkZXJzICovLAogCQkJCUMyMEJBOTJEMTZCQjFDMTUwMEIzQUVBMiAvKiBTdHJ1Y3R1
cmVSYXJlRGF0YUlubGluZXMuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5VmFsSGlzdG9yeS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0dldEJ5VmFsSGlzdG9yeS5oCmluZGV4IGJkYzBkMzM5YjFlZS4uMzAy
MDMwMTVlNmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0
QnlWYWxIaXN0b3J5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5
VmFsSGlzdG9yeS5oCkBAIC00Nyw3ICs0Nyw3IEBAIHN0cnVjdCBHZXRCeVZhbEhpc3Rvcnkgewog
ICAgICAgICB1aW50cHRyX3QgY291bnQgPSB0aGlzLT5jb3VudCgpOwogICAgICAgICB1aW50cHRy
X3QgZmlsdGVyID0gdGhpcy0+ZmlsdGVyKCk7CiAKLSAgICAgICAgVGlueUJsb29tRmlsdGVyIGJs
b29tRmlsdGVyKGZpbHRlcik7CisgICAgICAgIFRpbnlCbG9vbUZpbHRlcjx1aW50cHRyX3Q+IGJs
b29tRmlsdGVyKGZpbHRlcik7CiAgICAgICAgIHVpbnRwdHJfdCBpbXBsQml0cyA9IGJpdHdpc2Vf
Y2FzdDx1aW50cHRyX3Q+KGltcGwpOwogICAgICAgICBBU1NFUlQoKChzdGF0aWNfY2FzdDx1aW50
NjRfdD4oaW1wbEJpdHMpIDw8IDgpID4+IDgpID09IHN0YXRpY19jYXN0PHVpbnQ2NF90PihpbXBs
Qml0cykpOwogICAgICAgICBpZiAoYmxvb21GaWx0ZXIucnVsZU91dChpbXBsQml0cykpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXgg
ZWRhNzJiNjk0NGUzLi5lMDNhMGFjOGFmMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0xMTA4Myw3ICsxMTA4Myw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDaGVja0pTQ2FzdChOb2RlKiBub2RlKQogICAgICAgICBH
UFJSZWcgc3BlY2lmaWVkR1BSID0gc3BlY2lmaWVkLmdwcigpOwogCiAgICAgICAgIG1faml0LmVt
aXRMb2FkU3RydWN0dXJlKHZtKCksIGJhc2VHUFIsIG90aGVyR1BSKTsKLSAgICAgICAgbV9qaXQu
bG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mob3RoZXJHUFIsIFN0cnVjdHVyZTo6Y2xhc3NJ
bmZvT2Zmc2V0KCkpLCBvdGhlckdQUik7CisgICAgICAgIG1faml0LmxvYWRDb21wYWN0UHRyKEND
YWxsSGVscGVyczo6QWRkcmVzcyhvdGhlckdQUiwgU3RydWN0dXJlOjpjbGFzc0luZm9PZmZzZXQo
KSksIG90aGVyR1BSKTsKICAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyKG5vZGUtPmNs
YXNzSW5mbygpKSwgc3BlY2lmaWVkR1BSKTsKIAogICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVs
IGxvb3AgPSBtX2ppdC5sYWJlbCgpOwpAQCAtMTEyOTQsNyArMTEyOTQsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlRnVuY3Rpb25Ub1N0cmluZyhOb2RlKiBub2RlKQogICAgIHNwZWN1
bGF0ZUZ1bmN0aW9uKG5vZGUtPmNoaWxkMSgpLCBmdW5jdGlvbi5ncHIoKSk7CiAKICAgICBtX2pp
dC5lbWl0TG9hZFN0cnVjdHVyZSh2bSgpLCBmdW5jdGlvbi5ncHIoKSwgcmVzdWx0LmdwcigpKTsK
LSAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdC5ncHIoKSwgU3Ry
dWN0dXJlOjpjbGFzc0luZm9PZmZzZXQoKSksIHJlc3VsdC5ncHIoKSk7CisgICAgbV9qaXQubG9h
ZENvbXBhY3RQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0LmdwcigpLCBTdHJ1Y3R1cmU6
OmNsYXNzSW5mb09mZnNldCgpKSwgcmVzdWx0LmdwcigpKTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0
ZDo6aXNfZmluYWxfdjxKU0JvdW5kRnVuY3Rpb24+LCAiV2UgZG9uJ3QgaGFuZGxlIHN1YmNsYXNz
ZXMgd2hlbiBjb21wYXJpbmcgY2xhc3NJbmZvIGJlbG93Iik7CiAgICAgc2xvd0Nhc2VzLmFwcGVu
ZChtX2ppdC5icmFuY2hQdHIoQ0NhbGxIZWxwZXJzOjpFcXVhbCwgcmVzdWx0LmdwcigpLCBUcnVz
dGVkSW1tUHRyKEpTQm91bmRGdW5jdGlvbjo6aW5mbygpKSkpOwogCkBAIC0xNDg2Myw3ICsxNDg2
Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVQcm9taXNlKE5vZGUqIG5v
ZGUpCiAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hUZXN0MzIoQ0NhbGxIZWxwZXJz
OjpaZXJvLCBzdHJ1Y3R1cmVHUFIpKTsKICAgICBtX2ppdC5lbWl0Tm9uTnVsbERlY29kZVplcm9F
eHRlbmRlZFN0cnVjdHVyZUlEKHN0cnVjdHVyZUdQUiwgc3RydWN0dXJlR1BSKTsKICAgICBtX2pp
dC5tb3ZlKFRydXN0ZWRJbW1QdHIobm9kZS0+aXNJbnRlcm5hbFByb21pc2UoKSA/IEpTSW50ZXJu
YWxQcm9taXNlOjppbmZvKCkgOiBKU1Byb21pc2U6OmluZm8oKSksIHNjcmF0Y2gxR1BSKTsKLSAg
ICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaFB0cihDQ2FsbEhlbHBlcnM6Ok5vdEVxdWFs
LCBzY3JhdGNoMUdQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0cnVjdHVyZUdQUiwgU3RydWN0
dXJlOjpjbGFzc0luZm9PZmZzZXQoKSkpKTsKKyAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJy
YW5jaENvbXBhY3RQdHIoQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwgc2NyYXRjaDFHUFIsIENDYWxs
SGVscGVyczo6QWRkcmVzcyhzdHJ1Y3R1cmVHUFIsIFN0cnVjdHVyZTo6Y2xhc3NJbmZvT2Zmc2V0
KCkpLCBzY3JhdGNoMkdQUikpOwogICAgIG1faml0LmxvYWRMaW5rYWJsZUNvbnN0YW50KEpJVENv
bXBpbGVyOjpMaW5rYWJsZUNvbnN0YW50KG1fZ3JhcGgsIGdsb2JhbE9iamVjdCksIHNjcmF0Y2gx
R1BSKTsKICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaFB0cihDQ2FsbEhlbHBlcnM6
Ok5vdEVxdWFsLCBzY3JhdGNoMUdQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0cnVjdHVyZUdQ
UiwgU3RydWN0dXJlOjpnbG9iYWxPYmplY3RPZmZzZXQoKSkpKTsKIApAQCAtMTQ5MTIsNyArMTQ5
MTIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3JlYXRlSW50ZXJuYWxGaWVsZE9i
amVjdChOb2RlKiBub2RlLCBPcGVyYXRpb24gb3BlcgogICAgIHNsb3dDYXNlcy5hcHBlbmQobV9q
aXQuYnJhbmNoVGVzdDMyKENDYWxsSGVscGVyczo6WmVybywgc3RydWN0dXJlR1BSKSk7CiAgICAg
bV9qaXQuZW1pdE5vbk51bGxEZWNvZGVaZXJvRXh0ZW5kZWRTdHJ1Y3R1cmVJRChzdHJ1Y3R1cmVH
UFIsIHN0cnVjdHVyZUdQUik7CiAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyKEpTQ2xhc3M6
OmluZm8oKSksIHNjcmF0Y2gxR1BSKTsKLSAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5j
aFB0cihDQ2FsbEhlbHBlcnM6Ok5vdEVxdWFsLCBzY3JhdGNoMUdQUiwgQ0NhbGxIZWxwZXJzOjpB
ZGRyZXNzKHN0cnVjdHVyZUdQUiwgU3RydWN0dXJlOjpjbGFzc0luZm9PZmZzZXQoKSkpKTsKKyAg
ICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaENvbXBhY3RQdHIoQ0NhbGxIZWxwZXJzOjpO
b3RFcXVhbCwgc2NyYXRjaDFHUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHJ1Y3R1cmVHUFIs
IFN0cnVjdHVyZTo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBzY3JhdGNoMkdQUikpOwogICAgIG1faml0
LmxvYWRMaW5rYWJsZUNvbnN0YW50KEpJVENvbXBpbGVyOjpMaW5rYWJsZUNvbnN0YW50KG1fZ3Jh
cGgsIGdsb2JhbE9iamVjdCksIHNjcmF0Y2gxR1BSKTsKICAgICBzbG93Q2FzZXMuYXBwZW5kKG1f
aml0LmJyYW5jaFB0cihDQ2FsbEhlbHBlcnM6Ok5vdEVxdWFsLCBzY3JhdGNoMUdQUiwgQ0NhbGxI
ZWxwZXJzOjpBZGRyZXNzKHN0cnVjdHVyZUdQUiwgU3RydWN0dXJlOjpnbG9iYWxPYmplY3RPZmZz
ZXQoKSkpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0
cmFjdEhlYXBSZXBvc2l0b3J5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJz
dHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAKaW5kZXggMjNlMGM4ZTRjYjZiLi5lN2NjZDA2NjMxMzYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVw
b3NpdG9yeS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhl
YXBSZXBvc2l0b3J5LmNwcApAQCAtNzYsNyArNzYsNyBAQCBBYnN0cmFjdEhlYXBSZXBvc2l0b3J5
OjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5KCkKICAgICBKU0NlbGxfaGVhZGVyLmNoYW5nZVBhcmVu
dCgmSlNDZWxsSGVhZGVyQW5kTmFtZWRQcm9wZXJ0aWVzKTsKICAgICBwcm9wZXJ0aWVzLmF0QW55
TnVtYmVyKCkuY2hhbmdlUGFyZW50KCZKU0NlbGxIZWFkZXJBbmROYW1lZFByb3BlcnRpZXMpOwog
Ci0gICAgLy8gTWFrZSBzdXJlIHRoYXQgb3VyIGV4cGxpY2l0IGFzc3VtcHRpb25zIGFib3V0IHRo
ZSBTdHJ1Y3R1cmVJREJsb2IgbWF0Y2ggcmVhbGl0eS4KKyAgICAvLyBNYWtlIHN1cmUgdGhhdCBv
dXIgZXhwbGljaXQgYXNzdW1wdGlvbnMgYWJvdXQgdGhlIFR5cGVJbmZvQmxvYiBtYXRjaCByZWFs
aXR5LgogICAgIFJFTEVBU0VfQVNTRVJUKCEoSlNDZWxsX2luZGV4aW5nVHlwZUFuZE1pc2Mub2Zm
c2V0KCkgJiAoc2l6ZW9mKGludDMyX3QpIC0gMSkpKTsKICAgICBSRUxFQVNFX0FTU0VSVChKU0Nl
bGxfaW5kZXhpbmdUeXBlQW5kTWlzYy5vZmZzZXQoKSArIDEgPT0gSlNDZWxsX3R5cGVJbmZvVHlw
ZS5vZmZzZXQoKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQoSlNDZWxsX2luZGV4aW5nVHlwZUFuZE1p
c2Mub2Zmc2V0KCkgKyAyID09IEpTQ2VsbF90eXBlSW5mb0ZsYWdzLm9mZnNldCgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9y
eS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5
LmgKaW5kZXggZmUyOWRkMmJlN2MyLi5iMjhkZTYyMmIyMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCkBAIC0xNDcs
NyArMTQ3LDYgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewogICAgIG1hY3JvKFN0
cnVjdHVyZV9vdXRPZkxpbmVUeXBlRmxhZ3MsIFN0cnVjdHVyZTo6b3V0T2ZMaW5lVHlwZUZsYWdz
T2Zmc2V0KCkpIFwKICAgICBtYWNybyhTdHJ1Y3R1cmVfcHJldmlvdXNPclJhcmVEYXRhLCBTdHJ1
Y3R1cmU6OnByZXZpb3VzT3JSYXJlRGF0YU9mZnNldCgpKSBcCiAgICAgbWFjcm8oU3RydWN0dXJl
X3Byb3RvdHlwZSwgU3RydWN0dXJlOjpwcm90b3R5cGVPZmZzZXQoKSkgXAotICAgIG1hY3JvKFN0
cnVjdHVyZV9zdHJ1Y3R1cmVJRCwgU3RydWN0dXJlOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSBcCiAg
ICAgbWFjcm8oU3RydWN0dXJlUmFyZURhdGFfY2FjaGVkS2V5cywgU3RydWN0dXJlUmFyZURhdGE6
Om9mZnNldE9mQ2FjaGVkUHJvcGVydHlOYW1lcyhDYWNoZWRQcm9wZXJ0eU5hbWVzS2luZDo6S2V5
cykpIFwKICAgICBtYWNybyhTdHJ1Y3R1cmVSYXJlRGF0YV9jYWNoZWRHZXRPd25Qcm9wZXJ0eU5h
bWVzLCBTdHJ1Y3R1cmVSYXJlRGF0YTo6b2Zmc2V0T2ZDYWNoZWRQcm9wZXJ0eU5hbWVzKENhY2hl
ZFByb3BlcnR5TmFtZXNLaW5kOjpHZXRPd25Qcm9wZXJ0eU5hbWVzKSkgXAogICAgIG1hY3JvKFN0
cnVjdHVyZVJhcmVEYXRhX2NhY2hlZFByb3BlcnR5TmFtZUVudW1lcmF0b3JBbmRGbGFnLCBTdHJ1
Y3R1cmVSYXJlRGF0YTo6b2Zmc2V0T2ZDYWNoZWRQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yQW5kRmxh
ZygpKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZH
VG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAK
aW5kZXggOWM0Y2ZjZTUyNDdkLi4xNzc2NDUzMjI1NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTE2ODMxLDEwICsxNjgzMSwyMSBAQCBJ
R05PUkVfQ0xBTkdfV0FSTklOR1NfRU5ECiAgICAgewogICAgICAgICBtX291dC5zdG9yZTMyKG1f
b3V0LmNvbnN0SW50MzIoc3RydWN0dXJlLT5pZCgpLmJpdHMoKSksIG9iamVjdCwgbV9oZWFwcy5K
U0NlbGxfc3RydWN0dXJlSUQpOwogICAgICAgICBtX291dC5zdG9yZTMyKAotICAgICAgICAgICAg
bV9vdXQuY29uc3RJbnQzMihzdHJ1Y3R1cmUtPm9iamVjdEluaXRpYWxpemF0aW9uQmxvYigpKSwK
KyAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50MzIoc3RydWN0dXJlLT50eXBlSW5mb0Jsb2IoKSks
CiAgICAgICAgICAgICBvYmplY3QsIG1faGVhcHMuSlNDZWxsX3VzZWZ1bEJ5dGVzKTsKICAgICB9
CiAKKyAgICBMVmFsdWUgZW5jb2RlU3RydWN0dXJlSUQoTFZhbHVlIHN0cnVjdHVyZSkKKyAgICB7
CisjaWYgRU5BQkxFKFNUUlVDVFVSRV9JRF9XSVRIX1NISUZUKQorICAgICAgICByZXR1cm4gbV9v
dXQuY2FzdFRvSW50MzIobV9vdXQubFNocihzdHJ1Y3R1cmUsIG1fb3V0LmNvbnN0SW50MzIoU3Ry
dWN0dXJlSUQ6OmVuY29kZVNoaWZ0QW1vdW50KSkpOworI2VsaWYgQ1BVKEFERFJFU1M2NCkKKyAg
ICAgICAgcmV0dXJuIG1fb3V0LmNhc3RUb0ludDMyKG1fb3V0LmJpdEFuZChzdHJ1Y3R1cmUsIG1f
b3V0LmNvbnN0SW50NjQoU3RydWN0dXJlSUQ6OnN0cnVjdHVyZUlETWFzaykpKTsKKyNlbHNlCisg
ICAgICAgIHJldHVybiBtX291dC5jYXN0VG9JbnQzMihzdHJ1Y3R1cmUpOworI2VuZGlmCisgICAg
fQorCiAgICAgdm9pZCBzdG9yZVN0cnVjdHVyZShMVmFsdWUgb2JqZWN0LCBMVmFsdWUgc3RydWN0
dXJlKQogICAgIHsKICAgICAgICAgaWYgKHN0cnVjdHVyZS0+aGFzSW50UHRyKCkpIHsKQEAgLTE2
ODQyLDcgKzE2ODUzLDcgQEAgSUdOT1JFX0NMQU5HX1dBUk5JTkdTX0VORAogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgTFZhbHVlIGlkID0gbV9vdXQubG9hZDMyKHN0
cnVjdHVyZSwgbV9oZWFwcy5TdHJ1Y3R1cmVfc3RydWN0dXJlSUQpOworICAgICAgICBMVmFsdWUg
aWQgPSBlbmNvZGVTdHJ1Y3R1cmVJRChzdHJ1Y3R1cmUpOwogICAgICAgICBtX291dC5zdG9yZTMy
KGlkLCBvYmplY3QsIG1faGVhcHMuSlNDZWxsX3N0cnVjdHVyZUlEKTsKIAogICAgICAgICBMVmFs
dWUgYmxvYiA9IG1fb3V0LmxvYWQzMihzdHJ1Y3R1cmUsIG1faGVhcHMuU3RydWN0dXJlX2luZGV4
aW5nTW9kZUluY2x1ZGluZ0hpc3RvcnkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvQ29uc2VydmF0aXZlUm9vdHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvQ29uc2VydmF0aXZlUm9vdHMuY3BwCmluZGV4IDUxODM4NzBmNDZkMi4uOTMxNTY1MGRlOGI3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db25zZXJ2YXRpdmVSb290
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29uc2VydmF0aXZlUm9vdHMu
Y3BwCkBAIC02Myw3ICs2Myw3IEBAIHZvaWQgQ29uc2VydmF0aXZlUm9vdHM6Omdyb3coKQogfQog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBNYXJrSG9vaz4KLWlubGluZSB2b2lkIENvbnNlcnZhdGl2ZVJv
b3RzOjpnZW5lcmljQWRkUG9pbnRlcih2b2lkKiBwLCBIZWFwVmVyc2lvbiBtYXJraW5nVmVyc2lv
biwgSGVhcFZlcnNpb24gbmV3bHlBbGxvY2F0ZWRWZXJzaW9uLCBUaW55Qmxvb21GaWx0ZXIgZmls
dGVyLCBNYXJrSG9vayYgbWFya0hvb2spCitpbmxpbmUgdm9pZCBDb25zZXJ2YXRpdmVSb290czo6
Z2VuZXJpY0FkZFBvaW50ZXIodm9pZCogcCwgSGVhcFZlcnNpb24gbWFya2luZ1ZlcnNpb24sIEhl
YXBWZXJzaW9uIG5ld2x5QWxsb2NhdGVkVmVyc2lvbiwgVGlueUJsb29tRmlsdGVyPHVpbnRwdHJf
dD4gZmlsdGVyLCBNYXJrSG9vayYgbWFya0hvb2spCiB7CiAgICAgcCA9IHJlbW92ZUFycmF5UHRy
VGFnKHApOwogICAgIG1hcmtIb29rLm1hcmsocCk7CkBAIC05NCw3ICs5NCw3IEBAIHZvaWQgQ29u
c2VydmF0aXZlUm9vdHM6OmdlbmVyaWNBZGRTcGFuKHZvaWQqIGJlZ2luLCB2b2lkKiBlbmQsIE1h
cmtIb29rJiBtYXJrSG9vCiAgICAgUkVMRUFTRV9BU1NFUlQoaXNQb2ludGVyQWxpZ25lZChiZWdp
bikpOwogICAgIFJFTEVBU0VfQVNTRVJUKGlzUG9pbnRlckFsaWduZWQoZW5kKSk7CiAKLSAgICBU
aW55Qmxvb21GaWx0ZXIgZmlsdGVyID0gbV9oZWFwLm9iamVjdFNwYWNlKCkuYmxvY2tzKCkuZmls
dGVyKCk7IC8vIE1ha2UgYSBsb2NhbCBjb3B5IG9mIGZpbHRlciB0byBzaG93IHRoZSBjb21waWxl
ciBpdCB3b24ndCBhbGlhcywgYW5kIGNhbiBiZSByZWdpc3Rlci1hbGxvY2F0ZWQuCisgICAgVGlu
eUJsb29tRmlsdGVyPHVpbnRwdHJfdD4gZmlsdGVyID0gbV9oZWFwLm9iamVjdFNwYWNlKCkuYmxv
Y2tzKCkuZmlsdGVyKCk7IC8vIE1ha2UgYSBsb2NhbCBjb3B5IG9mIGZpbHRlciB0byBzaG93IHRo
ZSBjb21waWxlciBpdCB3b24ndCBhbGlhcywgYW5kIGNhbiBiZSByZWdpc3Rlci1hbGxvY2F0ZWQu
CiAgICAgSGVhcFZlcnNpb24gbWFya2luZ1ZlcnNpb24gPSBtX2hlYXAub2JqZWN0U3BhY2UoKS5t
YXJraW5nVmVyc2lvbigpOwogICAgIEhlYXBWZXJzaW9uIG5ld2x5QWxsb2NhdGVkVmVyc2lvbiA9
IG1faGVhcC5vYmplY3RTcGFjZSgpLm5ld2x5QWxsb2NhdGVkVmVyc2lvbigpOwogICAgIGZvciAo
Y2hhcioqIGl0ID0gc3RhdGljX2Nhc3Q8Y2hhcioqPihiZWdpbik7IGl0ICE9IHN0YXRpY19jYXN0
PGNoYXIqKj4oZW5kKTsgKytpdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0NvbnNlcnZhdGl2ZVJvb3RzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db25z
ZXJ2YXRpdmVSb290cy5oCmluZGV4IGViYmQ4ZDhhZGZhYy4uM2JhNzk1ZjQzZDBiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db25zZXJ2YXRpdmVSb290cy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbnNlcnZhdGl2ZVJvb3RzLmgKQEAgLTQ4LDcg
KzQ4LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBpbmxpbmVDYXBh
Y2l0eSA9IDIwNDg7CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgTWFya0hvb2s+Ci0gICAg
dm9pZCBnZW5lcmljQWRkUG9pbnRlcih2b2lkKiwgSGVhcFZlcnNpb24gbWFya2luZ1ZlcnNpb24s
IEhlYXBWZXJzaW9uIG5ld2x5QWxsb2NhdGVkVmVyc2lvbiwgVGlueUJsb29tRmlsdGVyLCBNYXJr
SG9vayYpOworICAgIHZvaWQgZ2VuZXJpY0FkZFBvaW50ZXIodm9pZCosIEhlYXBWZXJzaW9uIG1h
cmtpbmdWZXJzaW9uLCBIZWFwVmVyc2lvbiBuZXdseUFsbG9jYXRlZFZlcnNpb24sIFRpbnlCbG9v
bUZpbHRlcjx1aW50cHRyX3Q+LCBNYXJrSG9vayYpOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
TWFya0hvb2s+CiAgICAgdm9pZCBnZW5lcmljQWRkU3Bhbih2b2lkKiwgdm9pZCogZW5kLCBNYXJr
SG9vayYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFNuYXBz
aG90LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU25hcHNob3QuaAppbmRleCAz
YTIzMWM3OWQ3MjAuLmQ5Y2VlZGM0YWZhYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvSGVhcFNuYXBzaG90LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcFNuYXBzaG90LmgKQEAgLTUyLDcgKzUyLDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgY29u
c3RleHByIGludHB0cl90IENlbGxUb1N3ZWVwVGFnID0gMTsKIAogICAgIFZlY3RvcjxIZWFwU25h
cHNob3ROb2RlPiBtX25vZGVzOwotICAgIFRpbnlCbG9vbUZpbHRlciBtX2ZpbHRlcjsKKyAgICBU
aW55Qmxvb21GaWx0ZXI8dWludHB0cl90PiBtX2ZpbHRlcjsKICAgICBIZWFwU25hcHNob3QqIG1f
cHJldmlvdXMgeyBudWxscHRyIH07CiAgICAgdW5zaWduZWQgbV9maXJzdE9iamVjdElkZW50aWZp
ZXIgeyAwIH07CiAgICAgdW5zaWduZWQgbV9sYXN0T2JqZWN0SWRlbnRpZmllciB7IDAgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBVdGlsLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwVXRpbC5oCmluZGV4IGQ2YWFjM2U0MGI5MC4uNGMwZDQ1
ZjAzNjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwVXRpbC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBVdGlsLmgKQEAgLTQ2LDcgKzQ2
LDcgQEAgcHVibGljOgogICAgIC8vIGJlZm9yZSBsaXZlbmVzcyBkYXRhIGlzIGNsZWFyZWQgdG8g
YmUgYWNjdXJhdGUuCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KICAgICBzdGF0aWMgdm9p
ZCBmaW5kR0NPYmplY3RQb2ludGVyc0Zvck1hcmtpbmcoCi0gICAgICAgIEhlYXAmIGhlYXAsIEhl
YXBWZXJzaW9uIG1hcmtpbmdWZXJzaW9uLCBIZWFwVmVyc2lvbiBuZXdseUFsbG9jYXRlZFZlcnNp
b24sIFRpbnlCbG9vbUZpbHRlciBmaWx0ZXIsCisgICAgICAgIEhlYXAmIGhlYXAsIEhlYXBWZXJz
aW9uIG1hcmtpbmdWZXJzaW9uLCBIZWFwVmVyc2lvbiBuZXdseUFsbG9jYXRlZFZlcnNpb24sIFRp
bnlCbG9vbUZpbHRlcjx1aW50cHRyX3Q+IGZpbHRlciwKICAgICAgICAgdm9pZCogcGFzc2VkUG9p
bnRlciwgY29uc3QgRnVuYyYgZnVuYykKICAgICB7CiAgICAgICAgIGNvbnN0IEhhc2hTZXQ8TWFy
a2VkQmxvY2sqPiYgc2V0ID0gaGVhcC5vYmplY3RTcGFjZSgpLmJsb2NrcygpLnNldCgpOwpAQCAt
ODYsNyArODYsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAvLyBXZSBtYXkgYmUgaW50ZXJlc3Rl
ZCBpbiB0aGUgbGFzdCBjZWxsIG9mIHRoZSBwcmV2aW91cyBNYXJrZWRCbG9jay4KICAgICAgICAg
ICAgIGNoYXIqIHByZXZpb3VzUG9pbnRlciA9IGJpdHdpc2VfY2FzdDxjaGFyKj4oYml0d2lzZV9j
YXN0PHVpbnRwdHJfdD4ocG9pbnRlcikgLSBzaXplb2YoSW5kZXhpbmdIZWFkZXIpIC0gMSk7CiAg
ICAgICAgICAgICBNYXJrZWRCbG9jayogcHJldmlvdXNDYW5kaWRhdGUgPSBNYXJrZWRCbG9jazo6
YmxvY2tGb3IocHJldmlvdXNQb2ludGVyKTsKLSAgICAgICAgICAgIGlmICghZmlsdGVyLnJ1bGVP
dXQoYml0d2lzZV9jYXN0PEJpdHM+KHByZXZpb3VzQ2FuZGlkYXRlKSkKKyAgICAgICAgICAgIGlm
ICghZmlsdGVyLnJ1bGVPdXQoYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4ocHJldmlvdXNDYW5kaWRh
dGUpKQogICAgICAgICAgICAgICAgICYmIHNldC5jb250YWlucyhwcmV2aW91c0NhbmRpZGF0ZSkK
ICAgICAgICAgICAgICAgICAmJiBtYXlIYXZlSW5kZXhpbmdIZWFkZXIocHJldmlvdXNDYW5kaWRh
dGUtPmhhbmRsZSgpLmNlbGxLaW5kKCkpKSB7CiAgICAgICAgICAgICAgICAgcHJldmlvdXNQb2lu
dGVyID0gc3RhdGljX2Nhc3Q8Y2hhcio+KHByZXZpb3VzQ2FuZGlkYXRlLT5oYW5kbGUoKS5jZWxs
QWxpZ24ocHJldmlvdXNQb2ludGVyKSk7CkBAIC05NSw3ICs5NSw3IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQogICAgIAotICAgICAgICBpZiAoZmlsdGVyLnJ1bGVPdXQoYml0
d2lzZV9jYXN0PEJpdHM+KGNhbmRpZGF0ZSkpKSB7CisgICAgICAgIGlmIChmaWx0ZXIucnVsZU91
dChiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihjYW5kaWRhdGUpKSkgewogICAgICAgICAgICAgQVNT
RVJUKCFjYW5kaWRhdGUgfHwgIXNldC5jb250YWlucyhjYW5kaWRhdGUpKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQpAQCAtMTM0LDcgKzEzNCw3IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgIHRyeVBvaW50ZXIoYWxpZ25lZFBvaW50ZXIgLSBjYW5kaWRhdGUtPmNlbGxTaXplKCkpOwog
ICAgIH0KICAgICAKLSAgICBzdGF0aWMgYm9vbCBpc1BvaW50ZXJHQ09iamVjdEpTQ2VsbChIZWFw
JiBoZWFwLCBUaW55Qmxvb21GaWx0ZXIgZmlsdGVyLCBKU0NlbGwqIHBvaW50ZXIpCisgICAgc3Rh
dGljIGJvb2wgaXNQb2ludGVyR0NPYmplY3RKU0NlbGwoSGVhcCYgaGVhcCwgVGlueUJsb29tRmls
dGVyPHVpbnRwdHJfdD4gZmlsdGVyLCBKU0NlbGwqIHBvaW50ZXIpCiAgICAgewogICAgICAgICAv
LyBJdCBjb3VsZCBwb2ludCB0byBhIGxhcmdlIGFsbG9jYXRpb24uCiAgICAgICAgIGlmIChwb2lu
dGVyLT5pc1ByZWNpc2VBbGxvY2F0aW9uKCkpIHsKQEAgLTE0OCw3ICsxNDgsNyBAQCBwdWJsaWM6
CiAgICAgICAgIGNvbnN0IEhhc2hTZXQ8TWFya2VkQmxvY2sqPiYgc2V0ID0gaGVhcC5vYmplY3RT
cGFjZSgpLmJsb2NrcygpLnNldCgpOwogICAgICAgICAKICAgICAgICAgTWFya2VkQmxvY2sqIGNh
bmRpZGF0ZSA9IE1hcmtlZEJsb2NrOjpibG9ja0Zvcihwb2ludGVyKTsKLSAgICAgICAgaWYgKGZp
bHRlci5ydWxlT3V0KGJpdHdpc2VfY2FzdDxCaXRzPihjYW5kaWRhdGUpKSkgeworICAgICAgICBp
ZiAoZmlsdGVyLnJ1bGVPdXQoYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oY2FuZGlkYXRlKSkpIHsK
ICAgICAgICAgICAgIEFTU0VSVCghY2FuZGlkYXRlIHx8ICFzZXQuY29udGFpbnMoY2FuZGlkYXRl
KSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KQEAgLTE3MCw3ICsxNzAs
NyBAQCBwdWJsaWM6CiAgICAgCiAgICAgLy8gVGhpcyBkb2VzIG5vdCBmaW5kIHRoZSBjZWxsIGlm
IHRoZSBwb2ludGVyIGlzIHBvaW50aW5nIGF0IHRoZSBtaWRkbGUgb2YgYSBKU0NlbGwuCiAgICAg
c3RhdGljIGJvb2wgaXNWYWx1ZUdDT2JqZWN0KAotICAgICAgICBIZWFwJiBoZWFwLCBUaW55Qmxv
b21GaWx0ZXIgZmlsdGVyLCBKU1ZhbHVlIHZhbHVlKQorICAgICAgICBIZWFwJiBoZWFwLCBUaW55
Qmxvb21GaWx0ZXI8dWludHB0cl90PiBmaWx0ZXIsIEpTVmFsdWUgdmFsdWUpCiAgICAgewogICAg
ICAgICBBU1NFUlQoaGVhcC5vYmplY3RTcGFjZSgpLnByZWNpc2VBbGxvY2F0aW9uU2V0KCkpOwog
ICAgICAgICBpZiAoIXZhbHVlLmlzQ2VsbCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTWFya2VkQmxvY2tTZXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L01hcmtlZEJsb2NrU2V0LmgKaW5kZXggZDU0ZTkwMWE2MDQwLi42MjZiZWM5MzVmYWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrU2V0LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2tTZXQuaApAQCAtMzgsMTkgKzM4
LDE5IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZChNYXJrZWRCbG9jayopOwogICAgIHZvaWQgcmVt
b3ZlKE1hcmtlZEJsb2NrKik7CiAKLSAgICBUaW55Qmxvb21GaWx0ZXIgZmlsdGVyKCkgY29uc3Q7
CisgICAgVGlueUJsb29tRmlsdGVyPHVpbnRwdHJfdD4gZmlsdGVyKCkgY29uc3Q7CiAgICAgY29u
c3QgSGFzaFNldDxNYXJrZWRCbG9jayo+JiBzZXQoKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICB2
b2lkIHJlY29tcHV0ZUZpbHRlcigpOwogCi0gICAgVGlueUJsb29tRmlsdGVyIG1fZmlsdGVyOwor
ICAgIFRpbnlCbG9vbUZpbHRlcjx1aW50cHRyX3Q+IG1fZmlsdGVyOwogICAgIEhhc2hTZXQ8TWFy
a2VkQmxvY2sqPiBtX3NldDsKIH07CiAKIGlubGluZSB2b2lkIE1hcmtlZEJsb2NrU2V0OjphZGQo
TWFya2VkQmxvY2sqIGJsb2NrKQogewotICAgIG1fZmlsdGVyLmFkZChyZWludGVycHJldF9jYXN0
PEJpdHM+KGJsb2NrKSk7CisgICAgbV9maWx0ZXIuYWRkKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0
cl90PihibG9jaykpOwogICAgIG1fc2V0LmFkZChibG9jayk7CiB9CiAKQEAgLTY0LDEzICs2NCwx
MyBAQCBpbmxpbmUgdm9pZCBNYXJrZWRCbG9ja1NldDo6cmVtb3ZlKE1hcmtlZEJsb2NrKiBibG9j
aykKIAogaW5saW5lIHZvaWQgTWFya2VkQmxvY2tTZXQ6OnJlY29tcHV0ZUZpbHRlcigpCiB7Ci0g
ICAgVGlueUJsb29tRmlsdGVyIGZpbHRlcjsKKyAgICBUaW55Qmxvb21GaWx0ZXI8dWludHB0cl90
PiBmaWx0ZXI7CiAgICAgZm9yIChIYXNoU2V0PE1hcmtlZEJsb2NrKj46Oml0ZXJhdG9yIGl0ID0g
bV9zZXQuYmVnaW4oKTsgaXQgIT0gbV9zZXQuZW5kKCk7ICsraXQpCi0gICAgICAgIGZpbHRlci5h
ZGQocmVpbnRlcnByZXRfY2FzdDxCaXRzPigqaXQpKTsKKyAgICAgICAgZmlsdGVyLmFkZChyZWlu
dGVycHJldF9jYXN0PHVpbnRwdHJfdD4oKml0KSk7CiAgICAgbV9maWx0ZXIgPSBmaWx0ZXI7CiB9
CiAKLWlubGluZSBUaW55Qmxvb21GaWx0ZXIgTWFya2VkQmxvY2tTZXQ6OmZpbHRlcigpIGNvbnN0
CitpbmxpbmUgVGlueUJsb29tRmlsdGVyPHVpbnRwdHJfdD4gTWFya2VkQmxvY2tTZXQ6OmZpbHRl
cigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fZmlsdGVyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvVGlueUJsb29tRmlsdGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9UaW55Qmxvb21GaWx0ZXIuaAppbmRleCAzOGE3YmNmMzEyZWYuLmI5M2U1OGNh
MDg5OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvVGlueUJsb29tRmls
dGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvVGlueUJsb29tRmlsdGVyLmgK
QEAgLTI3LDggKzI3LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXR5cGVkZWYgdWludHB0cl90
IEJpdHM7Ci0KK3RlbXBsYXRlIDx0eXBlbmFtZSBCaXRzID0gdWludHB0cl90PgogY2xhc3MgVGlu
eUJsb29tRmlsdGVyIHsKIHB1YmxpYzoKICAgICBUaW55Qmxvb21GaWx0ZXIoKSA9IGRlZmF1bHQ7
CkBAIC00NCwyMiArNDMsMjYgQEAgcHJpdmF0ZToKICAgICBCaXRzIG1fYml0cyB7IDAgfTsKIH07
CiAKLWlubGluZSBUaW55Qmxvb21GaWx0ZXI6OlRpbnlCbG9vbUZpbHRlcihCaXRzIGJpdHMpCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgQml0cz4KK2lubGluZSBUaW55Qmxvb21GaWx0ZXI8Qml0cz46OlRp
bnlCbG9vbUZpbHRlcihCaXRzIGJpdHMpCiAgICAgOiBtX2JpdHMoYml0cykKIHsKIH0KIAotaW5s
aW5lIHZvaWQgVGlueUJsb29tRmlsdGVyOjphZGQoQml0cyBiaXRzKQordGVtcGxhdGUgPHR5cGVu
YW1lIEJpdHM+CitpbmxpbmUgdm9pZCBUaW55Qmxvb21GaWx0ZXI8Qml0cz46OmFkZChCaXRzIGJp
dHMpCiB7CiAgICAgbV9iaXRzIHw9IGJpdHM7CiB9CiAKLWlubGluZSB2b2lkIFRpbnlCbG9vbUZp
bHRlcjo6YWRkKFRpbnlCbG9vbUZpbHRlciYgb3RoZXIpCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQml0
cz4KK2lubGluZSB2b2lkIFRpbnlCbG9vbUZpbHRlcjxCaXRzPjo6YWRkKFRpbnlCbG9vbUZpbHRl
ciYgb3RoZXIpCiB7CiAgICAgbV9iaXRzIHw9IG90aGVyLm1fYml0czsKIH0KIAotaW5saW5lIGJv
b2wgVGlueUJsb29tRmlsdGVyOjpydWxlT3V0KEJpdHMgYml0cykgY29uc3QKK3RlbXBsYXRlIDx0
eXBlbmFtZSBCaXRzPgoraW5saW5lIGJvb2wgVGlueUJsb29tRmlsdGVyPEJpdHM+OjpydWxlT3V0
KEJpdHMgYml0cykgY29uc3QKIHsKICAgICBpZiAoIWJpdHMpCiAgICAgICAgIHJldHVybiB0cnVl
OwpAQCAtNzAsNyArNzMsOCBAQCBpbmxpbmUgYm9vbCBUaW55Qmxvb21GaWx0ZXI6OnJ1bGVPdXQo
Qml0cyBiaXRzKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotaW5saW5lIHZvaWQgVGlu
eUJsb29tRmlsdGVyOjpyZXNldCgpCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQml0cz4KK2lubGluZSB2
b2lkIFRpbnlCbG9vbUZpbHRlcjxCaXRzPjo6cmVzZXQoKQogewogICAgIG1fYml0cyA9IDA7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAKaW5kZXgg
ZmVkOTExNmY2ZTNlLi5jZWQ0NjM5ZmQ0ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0Fzc2VtYmx5SGVscGVycy5jcHAKQEAgLTMzMiw3ICszMzIsOCBAQCB2b2lkIEFzc2VtYmx5
SGVscGVyczo6ZW1pdFN0b3JlU3RydWN0dXJlV2l0aFR5cGVJbmZvKEFzc2VtYmx5SGVscGVycyYg
aml0LCBUcnVzdAogewogICAgIGNvbnN0IFN0cnVjdHVyZSogc3RydWN0dXJlUHRyID0gcmVpbnRl
cnByZXRfY2FzdDxjb25zdCBTdHJ1Y3R1cmUqPihzdHJ1Y3R1cmUubV92YWx1ZSk7CiAjaWYgVVNF
KEpTVkFMVUU2NCkKLSAgICBqaXQuc3RvcmU2NChUcnVzdGVkSW1tNjQoc3RydWN0dXJlUHRyLT5p
ZEJsb2IoKSksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRlc3QsIEpTQ2VsbDo6c3RydWN0dXJl
SURPZmZzZXQoKSkpOworICAgIGppdC5zdG9yZTMyKFRydXN0ZWRJbW0zMihzdHJ1Y3R1cmVQdHIt
PmlkKCkuYml0cygpKSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGVzdCwgSlNDZWxsOjpzdHJ1
Y3R1cmVJRE9mZnNldCgpKSk7CisgICAgaml0LnN0b3JlMzIoVHJ1c3RlZEltbTMyKHN0cnVjdHVy
ZVB0ci0+dHlwZUluZm9CbG9iKCkpLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkZXN0LCBKU0Nl
bGw6OmluZGV4aW5nVHlwZUFuZE1pc2NPZmZzZXQoKSkpOwogICAgIGlmIChBU1NFUlRfRU5BQkxF
RCkgewogICAgICAgICBKdW1wIGNvcnJlY3RTdHJ1Y3R1cmUgPSBqaXQuYnJhbmNoMzIoRXF1YWws
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRlc3QsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQo
KSksIFRydXN0ZWRJbW0zMihzdHJ1Y3R1cmVQdHItPmlkKCkuYml0cygpKSk7CiAgICAgICAgIGpp
dC5hYm9ydFdpdGhSZWFzb24oQUhTdHJ1Y3R1cmVJRElzVmFsaWQpOwpAQCAtMzUyLDcgKzM1Myw3
IEBAIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjplbWl0U3RvcmVTdHJ1Y3R1cmVXaXRoVHlwZUluZm8o
QXNzZW1ibHlIZWxwZXJzJiBqaXQsIFRydXN0CiAgICAgfQogI2Vsc2UKICAgICAvLyBEbyBhIDMy
LWJpdCB3aWRlIHN0b3JlIHRvIGluaXRpYWxpemUgdGhlIGNlbGwncyBmaWVsZHMuCi0gICAgaml0
LnN0b3JlMzIoVHJ1c3RlZEltbTMyKHN0cnVjdHVyZVB0ci0+b2JqZWN0SW5pdGlhbGl6YXRpb25C
bG9iKCkpLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkZXN0LCBKU0NlbGw6OmluZGV4aW5nVHlw
ZUFuZE1pc2NPZmZzZXQoKSkpOworICAgIGppdC5zdG9yZTMyKFRydXN0ZWRJbW0zMihzdHJ1Y3R1
cmVQdHItPnR5cGVJbmZvQmxvYigpKSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGVzdCwgSlND
ZWxsOjppbmRleGluZ1R5cGVBbmRNaXNjT2Zmc2V0KCkpKTsKICAgICBqaXQuc3RvcmVQdHIoc3Ry
dWN0dXJlLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkZXN0LCBKU0NlbGw6OnN0cnVjdHVyZUlE
T2Zmc2V0KCkpKTsKICNlbmRpZgogfQpAQCAtNDI4LDYgKzQyOSwxOSBAQCB2b2lkIEFzc2VtYmx5
SGVscGVyczo6ZW1pdExvYWRTdHJ1Y3R1cmUoVk0mLCBSZWdpc3RlcklEIHNvdXJjZSwgUmVnaXN0
ZXJJRCBkZXN0KQogICAgIGVtaXROb25OdWxsRGVjb2RlWmVyb0V4dGVuZGVkU3RydWN0dXJlSUQo
ZGVzdCwgZGVzdCk7CiB9CiAKK3ZvaWQgQXNzZW1ibHlIZWxwZXJzOjplbWl0RW5jb2RlU3RydWN0
dXJlKFJlZ2lzdGVySUQgc291cmNlLCBSZWdpc3RlcklEIGRlc3QpCit7CisjaWYgRU5BQkxFKFNU
UlVDVFVSRV9JRF9XSVRIX1NISUZUKQorICAgIHVyc2hpZnQ2NChzb3VyY2UsIFRydXN0ZWRJbW0z
MihTdHJ1Y3R1cmVJRDo6ZW5jb2RlU2hpZnRBbW91bnQpLCBkZXN0KTsKKyNlbGlmIENQVShBRERS
RVNTNjQpCisgICAgbW92ZShzb3VyY2UsIGRlc3QpOworICAgIHN0YXRpY19hc3NlcnQoU3RydWN0
dXJlSUQ6OnN0cnVjdHVyZUlETWFzayA8PSBVSU5UMzJfTUFYKTsKKyAgICBhbmQ2NChUcnVzdGVk
SW1tMzIoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KFN0cnVjdHVyZUlEOjpzdHJ1Y3R1cmVJRE1hc2sp
KSwgZGVzdCk7CisjZWxzZQorICAgIG1vdmUoc291cmNlLCBkZXN0KTsKKyNlbmRpZgorfQorCiB2
b2lkIEFzc2VtYmx5SGVscGVyczo6ZW1pdExvYWRQcm90b3R5cGUoVk0mIHZtLCBHUFJSZWcgb2Jq
ZWN0R1BSLCBKU1ZhbHVlUmVncyByZXN1bHRSZWdzLCBKdW1wTGlzdCYgc2xvd1BhdGgpCiB7CiAg
ICAgQVNTRVJUKHJlc3VsdFJlZ3MucGF5bG9hZEdQUigpICE9IG9iamVjdEdQUik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAppbmRleCBmYzU5ZWE5NGNjYTMu
LjhkNmM2MzljMzQwZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3Nl
bWJseUhlbHBlcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVs
cGVycy5oCkBAIC0xNjEzLDYgKzE2MTMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBlbWl0Tm9uTnVs
bERlY29kZVplcm9FeHRlbmRlZFN0cnVjdHVyZUlEKFJlZ2lzdGVySUQgc291cmNlLCBSZWdpc3Rl
cklEIGRlc3QpOwogICAgIHZvaWQgZW1pdExvYWRTdHJ1Y3R1cmUoVk0mLCBSZWdpc3RlcklEIHNv
dXJjZSwgUmVnaXN0ZXJJRCBkZXN0KTsKICAgICB2b2lkIGVtaXRMb2FkUHJvdG90eXBlKFZNJiwg
R1BSUmVnIG9iamVjdEdQUiwgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncywgSnVtcExpc3QmIHNsb3dQ
YXRoKTsKKyAgICB2b2lkIGVtaXRFbmNvZGVTdHJ1Y3R1cmUoUmVnaXN0ZXJJRCBzb3VyY2UsIFJl
Z2lzdGVySUQgZGVzdCk7CiAKICAgICB2b2lkIGVtaXRTdG9yZVN0cnVjdHVyZVdpdGhUeXBlSW5m
byhUcnVzdGVkSW1tUHRyIHN0cnVjdHVyZSwgUmVnaXN0ZXJJRCBkZXN0LCBSZWdpc3RlcklEKQog
ICAgIHsKQEAgLTE2MjEsMTcgKzE2MjIsMTYgQEAgcHVibGljOgogCiAgICAgdm9pZCBlbWl0U3Rv
cmVTdHJ1Y3R1cmVXaXRoVHlwZUluZm8oUmVnaXN0ZXJJRCBzdHJ1Y3R1cmUsIFJlZ2lzdGVySUQg
ZGVzdCwgUmVnaXN0ZXJJRCBzY3JhdGNoKQogICAgIHsKKyAgICAgICAgLy8gU3RvcmUgdGhlIFN0
cnVjdHVyZUlECiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgbG9hZDY0KE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKHN0cnVjdHVyZSwgU3RydWN0dXJlOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwg
c2NyYXRjaCk7Ci0gICAgICAgIHN0b3JlNjQoc2NyYXRjaCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MoZGVzdCwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSk7CisgICAgICAgIGVtaXRFbmNv
ZGVTdHJ1Y3R1cmUoc3RydWN0dXJlLCBzY3JhdGNoKTsKKyAgICAgICAgc3RvcmUzMihzY3JhdGNo
LCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkZXN0LCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0
KCkpKTsKICNlbHNlCisgICAgICAgIHN0b3JlUHRyKHN0cnVjdHVyZSwgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MoZGVzdCwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSk7CisjZW5kaWYKICAg
ICAgICAgLy8gU3RvcmUgYWxsIHRoZSBpbmZvIGZsYWdzIHVzaW5nIGEgc2luZ2xlIDMyLWJpdCB3
aWRlIGxvYWQgYW5kIHN0b3JlLgogICAgICAgICBsb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3Moc3RydWN0dXJlLCBTdHJ1Y3R1cmU6OmluZGV4aW5nTW9kZUluY2x1ZGluZ0hpc3RvcnlPZmZz
ZXQoKSksIHNjcmF0Y2gpOwogICAgICAgICBzdG9yZTMyKHNjcmF0Y2gsIE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKGRlc3QsIEpTQ2VsbDo6aW5kZXhpbmdUeXBlQW5kTWlzY09mZnNldCgpKSk7Ci0K
LSAgICAgICAgLy8gU3RvcmUgdGhlIFN0cnVjdHVyZUlECi0gICAgICAgIHN0b3JlUHRyKHN0cnVj
dHVyZSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGVzdCwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9m
ZnNldCgpKSk7Ci0jZW5kaWYKICAgICB9CiAKICAgICBzdGF0aWMgdm9pZCBlbWl0U3RvcmVTdHJ1
Y3R1cmVXaXRoVHlwZUluZm8oQXNzZW1ibHlIZWxwZXJzJiBqaXQsIFRydXN0ZWRJbW1QdHIgc3Ry
dWN0dXJlLCBSZWdpc3RlcklEIGRlc3QpOwpAQCAtMTkxNCw3ICsxOTE0LDMwIEBAIHB1YmxpYzoK
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG91dE9mTGluZUNhcGFjaXR5OyArK2kp
CiAgICAgICAgICAgICBzdG9yZVRydXN0ZWRWYWx1ZShKU1ZhbHVlKCksIEFkZHJlc3MoYnV0dGVy
Zmx5R1BSLCAtc2l6ZW9mKEluZGV4aW5nSGVhZGVyKSAtIChpICsgMSkgKiBzaXplb2YoRW5jb2Rl
ZEpTVmFsdWUpKSk7CiAgICAgfQotICAgIAorCisgICAgdm9pZCBsb2FkQ29tcGFjdFB0cihBZGRy
ZXNzIGFkZHJlc3MsIEdQUlJlZyBkZXN0KQorICAgIHsKKyNpZiBIQVZFKDM2QklUX0FERFJFU1Mp
CisgICAgICAgIGxvYWQzMihhZGRyZXNzLCBkZXN0KTsKKyAgICAgICAgbHNoaWZ0NjQoVHJ1c3Rl
ZEltbTMyKDQpLCBkZXN0KTsKKyNlbHNlCisgICAgICAgIGxvYWRQdHIoYWRkcmVzcywgZGVzdCk7
CisjZW5kaWYKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaENvbXBhY3RQdHIoUmVsYXRpb25hbENv
bmRpdGlvbiBjb25kLCBHUFJSZWcgbGVmdCwgQWRkcmVzcyByaWdodCwgR1BSUmVnIHNjcmF0Y2gp
CisgICAgeworI2lmIEhBVkUoMzZCSVRfQUREUkVTUykKKyAgICAgICAgQVNTRVJUKGxlZnQgIT0g
c2NyYXRjaCk7CisgICAgICAgIGxvYWQzMihyaWdodCwgc2NyYXRjaCk7CisgICAgICAgIGxzaGlm
dDY0KFRydXN0ZWRJbW0zMig0KSwgc2NyYXRjaCk7CisgICAgICAgIHJldHVybiBicmFuY2hQdHIo
Y29uZCwgbGVmdCwgQWRkcmVzcyhzY3JhdGNoKSk7CisjZWxzZQorICAgICAgICBVTlVTRURfUEFS
QU0oc2NyYXRjaCk7CisgICAgICAgIHJldHVybiBicmFuY2hQdHIoY29uZCwgbGVmdCwgcmlnaHQp
OworI2VuZGlmCisgICAgfSAgIAorCiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICB2b2lkIHdhbmdz
SW50NjRIYXNoKEdQUlJlZyBpbnB1dEFuZFJlc3VsdCwgR1BSUmVnIHNjcmF0Y2gpOwogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCmlu
ZGV4IGUyODNmMTU1ZmVhNy4uMGI4Y2ZkMWExMGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcApAQCAtMTgwOSw3ICsxODA5LDcgQEAgTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OmdlbmVyYXRlT3BHZXRGcm9t
U2NvcGVUaHVuayhWTSYgdm0pCiAgICAgICAgICAgICAvLyBTdHJ1Y3R1cmUgY2hlY2sgY292ZXJz
IHZhciBpbmplY3Rpb24gc2luY2Ugd2UgZG9uJ3QgY2FjaGUgc3RydWN0dXJlcyBmb3IgYW55dGhp
bmcgYnV0IHRoZSBHbG9iYWxPYmplY3QuIEFkZGl0aW9uYWxseSwgcmVzb2x2ZV9zY29wZSBoYW5k
bGVzIGNoZWNraW5nIGZvciB0aGUgdmFyIGluamVjdGlvbi4KICAgICAgICAgICAgIGppdC5sb2Fk
UHRyKEFkZHJlc3MobWV0YWRhdGFHUFIsIE9wR2V0RnJvbVNjb3BlOjpNZXRhZGF0YTo6b2Zmc2V0
T2ZTdHJ1Y3R1cmUoKSksIHNjcmF0Y2hHUFIpOwogICAgICAgICAgICAgc2xvd0Nhc2UuYXBwZW5k
KGppdC5icmFuY2hUZXN0UHRyKFplcm8sIHNjcmF0Y2hHUFIpKTsKLSAgICAgICAgICAgIGppdC5s
b2FkMzIoQWRkcmVzcyhzY3JhdGNoR1BSLCBTdHJ1Y3R1cmU6OnN0cnVjdHVyZUlET2Zmc2V0KCkp
LCBzY3JhdGNoR1BSKTsKKyAgICAgICAgICAgIGppdC5lbWl0RW5jb2RlU3RydWN0dXJlKHNjcmF0
Y2hHUFIsIHNjcmF0Y2hHUFIpOwogICAgICAgICAgICAgc2xvd0Nhc2UuYXBwZW5kKGppdC5icmFu
Y2gzMihOb3RFcXVhbCwgQWRkcmVzcyhzY29wZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNl
dCgpKSwgc2NyYXRjaEdQUikpOwogCiAgICAgICAgICAgICBqaXQuaml0QXNzZXJ0KHNjb3BlZExh
bWJkYTxKdW1wKHZvaWQpPihbJl0gKCkgLT4gSnVtcCB7CkBAIC0xOTgyLDcgKzE5ODIsNyBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9wdXRfdG9fc2NvcGUoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQogICAgICAgICAgICAgbG9hZFB0ckZyb21NZXRhZGF0YShieXRlY29kZSwg
T3BQdXRUb1Njb3BlOjpNZXRhZGF0YTo6b2Zmc2V0T2ZTdHJ1Y3R1cmUoKSwgc2NyYXRjaEdQUjEp
OwogICAgICAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlclBheWxvYWQoc2NvcGUsIHNjb3Bl
R1BSKTsKICAgICAgICAgICAgIGFkZFNsb3dDYXNlKGJyYW5jaFRlc3RQdHIoWmVybywgc2NyYXRj
aEdQUjEpKTsKLSAgICAgICAgICAgIGxvYWQzMihBZGRyZXNzKHNjcmF0Y2hHUFIxLCBTdHJ1Y3R1
cmU6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBzY3JhdGNoR1BSMSk7CisgICAgICAgICAgICBlbWl0
RW5jb2RlU3RydWN0dXJlKHNjcmF0Y2hHUFIxLCBzY3JhdGNoR1BSMSk7CiAgICAgICAgICAgICBh
ZGRTbG93Q2FzZShicmFuY2gzMihOb3RFcXVhbCwgQWRkcmVzcyhzY29wZUdQUiwgSlNDZWxsOjpz
dHJ1Y3R1cmVJRE9mZnNldCgpKSwgc2NyYXRjaEdQUjEpKTsKIAogICAgICAgICAgICAgZW1pdEdl
dFZpcnR1YWxSZWdpc3Rlcih2YWx1ZSwgdmFsdWVKU1IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9DbGFzc0luZm8uaAppbmRleCBhNTc2OTI4ZWQ4YWIuLjU4NGVkMjFhZjkyNyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmgKQEAgLTE3Miw3ICsxNzIs
NyBAQCBzdHJ1Y3QgTWV0aG9kVGFibGUgewogICAgIENsYXNzTmFtZTo6VHlwZWRBcnJheVN0b3Jh
Z2VUeXBlLCBcCiAgICAgc2l6ZW9mKENsYXNzTmFtZSksCiAKLXN0cnVjdCBDbGFzc0luZm8gewor
c3RydWN0IGFsaWduYXMoMTYpIENsYXNzSW5mbyB7CiAgICAgdXNpbmcgQ2hlY2tKU0Nhc3RTbmlw
cGV0RnVuY3Rpb25QdHIgPSBSZWY8U25pcHBldD4gKCopKHZvaWQpOwogCiAgICAgLy8gQSBzdHJp
bmcgZGVub3RpbmcgdGhlIGNsYXNzIG5hbWUuIEV4YW1wbGU6ICJXaW5kb3ciLgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcAppbmRleCAx
OTBlNDVjNThjNzIuLjg5Y2U5NGZiZDc4MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5jcHAKQEAgLTQ2OCw3ICs0NjgsNyBAQCB2b2lk
IFNhbXBsaW5nUHJvZmlsZXI6OnByb2Nlc3NVbnZlcmlmaWVkU3RhY2tUcmFjZXMoKQogICAgIC8v
IFRoaXMgZnVuY3Rpb24gbmVlZHMgdG8gYmUgY2FsbGVkIGZyb20gdGhlIEpTQyBleGVjdXRpb24g
dGhyZWFkLgogICAgIFJFTEVBU0VfQVNTRVJUKG1fbG9jay5pc0xvY2tlZCgpKTsKIAotICAgIFRp
bnlCbG9vbUZpbHRlciBmaWx0ZXIgPSBtX3ZtLmhlYXAub2JqZWN0U3BhY2UoKS5ibG9ja3MoKS5m
aWx0ZXIoKTsKKyAgICBUaW55Qmxvb21GaWx0ZXI8dWludHB0cl90PiBmaWx0ZXIgPSBtX3ZtLmhl
YXAub2JqZWN0U3BhY2UoKS5ibG9ja3MoKS5maWx0ZXIoKTsKIAogICAgIGZvciAoVW5wcm9jZXNz
ZWRTdGFja1RyYWNlJiB1bnByb2Nlc3NlZFN0YWNrVHJhY2UgOiBtX3VucHJvY2Vzc2VkU3RhY2tU
cmFjZXMpIHsKICAgICAgICAgbV9zdGFja1RyYWNlcy5hcHBlbmQoU3RhY2tUcmFjZSgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCmluZGV4IGFjZmQ4NmM0
NTZkNy4uNTBlZDcxNmJlMDRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJ1Y3R1cmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZS5jcHAKQEAgLTE5NywxNSArMTk3LDE1IEBAIGlubGluZSB2b2lkIFN0cnVjdHVyZTo6
dmFsaWRhdGVGbGFncygpIHsgfQogCiBTdHJ1Y3R1cmU6OlN0cnVjdHVyZShWTSYgdm0sIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlLCBjb25zdCBUeXBlSW5m
byYgdHlwZUluZm8sIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvLCBJbmRleGluZ1R5cGUgaW5k
ZXhpbmdUeXBlLCB1bnNpZ25lZCBpbmxpbmVDYXBhY2l0eSkKICAgICA6IEpTQ2VsbCh2bSwgdm0u
c3RydWN0dXJlU3RydWN0dXJlLmdldCgpKQotICAgICwgbV9ibG9iKFN0cnVjdHVyZUlEOjplbmNv
ZGUodGhpcyksIGluZGV4aW5nVHlwZSwgdHlwZUluZm8pCisgICAgLCBtX2Jsb2IoaW5kZXhpbmdU
eXBlLCB0eXBlSW5mbykKICAgICAsIG1fb3V0T2ZMaW5lVHlwZUZsYWdzKHR5cGVJbmZvLm91dE9m
TGluZVR5cGVGbGFncygpKQogICAgICwgbV9pbmxpbmVDYXBhY2l0eShpbmxpbmVDYXBhY2l0eSkK
ICAgICAsIG1fYml0RmllbGQoMCkKKyAgICAsIG1fcHJvcGVydHlIYXNoKDApCiAgICAgLCBtX2ds
b2JhbE9iamVjdCh2bSwgdGhpcywgZ2xvYmFsT2JqZWN0LCBXcml0ZUJhcnJpZXI8SlNHbG9iYWxP
YmplY3Q+OjpNYXlCZU51bGwpCiAgICAgLCBtX3Byb3RvdHlwZSh2bSwgdGhpcywgcHJvdG90eXBl
KQogICAgICwgbV9jbGFzc0luZm8oY2xhc3NJbmZvKQogICAgICwgbV90cmFuc2l0aW9uV2F0Y2hw
b2ludFNldChJc1dhdGNoZWQpCi0gICAgLCBtX3Byb3BlcnR5SGFzaCgwKQogewogICAgIHNldERp
Y3Rpb25hcnlLaW5kKE5vbmVEaWN0aW9uYXJ5S2luZCk7CiAgICAgc2V0SXNQaW5uZWRQcm9wZXJ0
eVRhYmxlKGZhbHNlKTsKQEAgLTI0NCwxMCArMjQ0LDEwIEBAIFN0cnVjdHVyZTo6U3RydWN0dXJl
KFZNJiB2bSwgQ3JlYXRpbmdFYXJseUNlbGxUYWcpCiAgICAgOiBKU0NlbGwoQ3JlYXRpbmdFYXJs
eUNlbGwpCiAgICAgLCBtX2lubGluZUNhcGFjaXR5KDApCiAgICAgLCBtX2JpdEZpZWxkKDApCisg
ICAgLCBtX3Byb3BlcnR5SGFzaCgwKQogICAgICwgbV9wcm90b3R5cGUodm0sIHRoaXMsIGpzTnVs
bCgpKQogICAgICwgbV9jbGFzc0luZm8oaW5mbygpKQogICAgICwgbV90cmFuc2l0aW9uV2F0Y2hw
b2ludFNldChJc1dhdGNoZWQpCi0gICAgLCBtX3Byb3BlcnR5SGFzaCgwKQogewogICAgIHNldERp
Y3Rpb25hcnlLaW5kKE5vbmVEaWN0aW9uYXJ5S2luZCk7CiAgICAgc2V0SXNQaW5uZWRQcm9wZXJ0
eVRhYmxlKGZhbHNlKTsKQEAgLTI2OCw3ICsyNjgsNyBAQCBTdHJ1Y3R1cmU6OlN0cnVjdHVyZShW
TSYgdm0sIENyZWF0aW5nRWFybHlDZWxsVGFnKQogICAgIHNldE1heE9mZnNldCh2bSwgaW52YWxp
ZE9mZnNldCk7CiAgCiAgICAgVHlwZUluZm8gdHlwZUluZm8gPSBUeXBlSW5mbyhTdHJ1Y3R1cmVU
eXBlLCBTdHJ1Y3R1cmVGbGFncyk7Ci0gICAgbV9ibG9iID0gU3RydWN0dXJlSURCbG9iKFN0cnVj
dHVyZUlEOjplbmNvZGUodGhpcyksIDAsIHR5cGVJbmZvKTsKKyAgICBtX2Jsb2IgPSBUeXBlSW5m
b0Jsb2IoMCwgdHlwZUluZm8pOwogICAgIG1fb3V0T2ZMaW5lVHlwZUZsYWdzID0gdHlwZUluZm8u
b3V0T2ZMaW5lVHlwZUZsYWdzKCk7CiAKICAgICBBU1NFUlQoaGFzUmVhZE9ubHlPckdldHRlclNl
dHRlclByb3BlcnRpZXNFeGNsdWRpbmdQcm90bygpIHx8ICFtX2NsYXNzSW5mby0+aGFzU3RhdGlj
U2V0dGVyT3JSZWFkb25seVByb3BlcnRpZXMoKSk7CkBAIC0yODQsMTEgKzI4NCwxMSBAQCBTdHJ1
Y3R1cmU6OlN0cnVjdHVyZShWTSYgdm0sIFN0cnVjdHVyZSogcHJldmlvdXMpCiAgICAgOiBKU0Nl
bGwodm0sIHZtLnN0cnVjdHVyZVN0cnVjdHVyZS5nZXQoKSkKICAgICAsIG1faW5saW5lQ2FwYWNp
dHkocHJldmlvdXMtPm1faW5saW5lQ2FwYWNpdHkpCiAgICAgLCBtX2JpdEZpZWxkKDApCisgICAg
LCBtX3Byb3BlcnR5SGFzaChwcmV2aW91cy0+bV9wcm9wZXJ0eUhhc2gpCisgICAgLCBtX3NlZW5Q
cm9wZXJ0aWVzKHByZXZpb3VzLT5tX3NlZW5Qcm9wZXJ0aWVzKQogICAgICwgbV9wcm90b3R5cGUo
dm0sIHRoaXMsIHByZXZpb3VzLT5tX3Byb3RvdHlwZS5nZXQoKSkKICAgICAsIG1fY2xhc3NJbmZv
KHByZXZpb3VzLT5tX2NsYXNzSW5mbykKICAgICAsIG1fdHJhbnNpdGlvbldhdGNocG9pbnRTZXQo
SXNXYXRjaGVkKQotICAgICwgbV9wcm9wZXJ0eUhhc2gocHJldmlvdXMtPm1fcHJvcGVydHlIYXNo
KQotICAgICwgbV9zZWVuUHJvcGVydGllcyhwcmV2aW91cy0+bV9zZWVuUHJvcGVydGllcykKIHsK
ICAgICBzZXREaWN0aW9uYXJ5S2luZChwcmV2aW91cy0+ZGljdGlvbmFyeUtpbmQoKSk7CiAgICAg
c2V0SXNQaW5uZWRQcm9wZXJ0eVRhYmxlKGZhbHNlKTsKQEAgLTMwOSw3ICszMDksNyBAQCBTdHJ1
Y3R1cmU6OlN0cnVjdHVyZShWTSYgdm0sIFN0cnVjdHVyZSogcHJldmlvdXMpCiAgICAgc2V0TWF4
T2Zmc2V0KHZtLCBpbnZhbGlkT2Zmc2V0KTsKICAKICAgICBUeXBlSW5mbyB0eXBlSW5mbyA9IHBy
ZXZpb3VzLT50eXBlSW5mbygpOwotICAgIG1fYmxvYiA9IFN0cnVjdHVyZUlEQmxvYihTdHJ1Y3R1
cmVJRDo6ZW5jb2RlKHRoaXMpLCBwcmV2aW91cy0+aW5kZXhpbmdNb2RlSW5jbHVkaW5nSGlzdG9y
eSgpLCB0eXBlSW5mbyk7CisgICAgbV9ibG9iID0gVHlwZUluZm9CbG9iKHByZXZpb3VzLT5pbmRl
eGluZ01vZGVJbmNsdWRpbmdIaXN0b3J5KCksIHR5cGVJbmZvKTsKICAgICBtX291dE9mTGluZVR5
cGVGbGFncyA9IHR5cGVJbmZvLm91dE9mTGluZVR5cGVGbGFncygpOwogCiAgICAgQVNTRVJUKCFw
cmV2aW91cy0+dHlwZUluZm8oKS5zdHJ1Y3R1cmVJc0ltbW9ydGFsKCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAppbmRleCBiMzM0MzMyY2E1ZjQuLmI1YjA4YTMz
NDM5YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKQEAgLTM4
LDE0ICszOCwxNSBAQAogI2luY2x1ZGUgIlByb3BlcnR5TmFtZUFycmF5LmgiCiAjaW5jbHVkZSAi
UHJvcGVydHlPZmZzZXQuaCIKICNpbmNsdWRlICJQdXRQcm9wZXJ0eVNsb3QuaCIKLSNpbmNsdWRl
ICJTdHJ1Y3R1cmVJREJsb2IuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVSYXJlRGF0YS5oIgogI2lu
Y2x1ZGUgIlN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZS5oIgotI2luY2x1ZGUgIlRpbnlCbG9vbUZp
bHRlci5oIgorI2luY2x1ZGUgIlR5cGVJbmZvQmxvYi5oIgogI2luY2x1ZGUgIldhdGNocG9pbnQu
aCIKICNpbmNsdWRlICJXcml0ZUJhcnJpZXJJbmxpbmVzLmgiCiAjaW5jbHVkZSA8d3RmL0F0b21p
Y3MuaD4KICNpbmNsdWRlIDx3dGYvQ29tcGFjdFBvaW50ZXJUdXBsZS5oPgorI2luY2x1ZGUgPHd0
Zi9Db21wYWN0UHRyLmg+CisjaW5jbHVkZSA8d3RmL0NvbXBhY3RSZWZQdHIuaD4KICNpbmNsdWRl
IDx3dGYvUHJpbnRTdHJlYW0uaD4KIAogbmFtZXNwYWNlIFdURiB7CkBAIC0yMzAsOSArMjMxLDkg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHZhbGlkYXRlRmxhZ3MoKTsKIAogcHVibGljOgotICAgIFN0
cnVjdHVyZUlEIGlkKCkgY29uc3QgeyBBU1NFUlQobV9ibG9iLnN0cnVjdHVyZUlEKCkgPT0gU3Ry
dWN0dXJlSUQ6OmVuY29kZSh0aGlzKSk7IHJldHVybiBtX2Jsb2Iuc3RydWN0dXJlSUQoKTsgfQot
ICAgIGludDMyX3Qgb2JqZWN0SW5pdGlhbGl6YXRpb25CbG9iKCkgY29uc3QgeyByZXR1cm4gbV9i
bG9iLmJsb2JFeGNsdWRpbmdTdHJ1Y3R1cmVJRCgpOyB9Ci0gICAgaW50NjRfdCBpZEJsb2IoKSBj
b25zdCB7IHJldHVybiBtX2Jsb2IuYmxvYigpOyB9CisgICAgU3RydWN0dXJlSUQgaWQoKSBjb25z
dCB7IHJldHVybiBTdHJ1Y3R1cmVJRDo6ZW5jb2RlKHRoaXMpOyB9CisKKyAgICBpbnQzMl90IHR5
cGVJbmZvQmxvYigpIGNvbnN0IHsgcmV0dXJuIG1fYmxvYi5ibG9iKCk7IH0KIAogICAgIGJvb2wg
aXNQcm94eSgpIGNvbnN0CiAgICAgewpAQCAtMzMwLDcgKzMzMSw3IEBAIHB1YmxpYzoKICAgICAv
LyBUeXBlIGFjY2Vzc29ycy4KICAgICBUeXBlSW5mbyB0eXBlSW5mbygpIGNvbnN0IHsgcmV0dXJu
IG1fYmxvYi50eXBlSW5mbyhtX291dE9mTGluZVR5cGVGbGFncyk7IH0KICAgICBib29sIGlzT2Jq
ZWN0KCkgY29uc3QgeyByZXR1cm4gdHlwZUluZm8oKS5pc09iamVjdCgpOyB9Ci0gICAgY29uc3Qg
Q2xhc3NJbmZvKiBjbGFzc0luZm9Gb3JDZWxscygpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NJbmZv
OyB9CisgICAgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm9Gb3JDZWxscygpIGNvbnN0IHsgcmV0
dXJuIG1fY2xhc3NJbmZvLmdldCgpOyB9CiBwcm90ZWN0ZWQ6CiAgICAgLy8gWW91IHByb2JhYmx5
IHdhbnQgdHlwZUluZm8oKS50eXBlKCkKICAgICBKU1R5cGUgdHlwZSgpIHsgcmV0dXJuIEpTQ2Vs
bDo6dHlwZSgpOyB9CkBAIC02NDksMTEgKzY1MCw2IEBAIHB1YmxpYzoKICAgICB9CiAgICAgdm9p
ZCBjYWNoZVNwZWNpYWxQcm9wZXJ0eShKU0dsb2JhbE9iamVjdCosIFZNJiwgSlNWYWx1ZSwgQ2Fj
aGVkU3BlY2lhbFByb3BlcnR5S2V5LCBjb25zdCBQcm9wZXJ0eVNsb3QmKTsKIAotICAgIHN0YXRp
YyBwdHJkaWZmX3Qgc3RydWN0dXJlSURPZmZzZXQoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIE9C
SkVDVF9PRkZTRVRPRihTdHJ1Y3R1cmUsIG1fYmxvYikgKyBTdHJ1Y3R1cmVJREJsb2I6OnN0cnVj
dHVyZUlET2Zmc2V0KCk7Ci0gICAgfQotCiAgICAgc3RhdGljIHB0cmRpZmZfdCBwcm90b3R5cGVP
ZmZzZXQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihTdHJ1Y3R1cmUs
IG1fcHJvdG90eXBlKTsKQEAgLTY3Niw3ICs2NzIsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMg
cHRyZGlmZl90IGluZGV4aW5nTW9kZUluY2x1ZGluZ0hpc3RvcnlPZmZzZXQoKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihTdHJ1Y3R1cmUsIG1fYmxvYikgKyBTdHJ1Y3R1
cmVJREJsb2I6OmluZGV4aW5nTW9kZUluY2x1ZGluZ0hpc3RvcnlPZmZzZXQoKTsKKyAgICAgICAg
cmV0dXJuIE9CSkVDVF9PRkZTRVRPRihTdHJ1Y3R1cmUsIG1fYmxvYikgKyBUeXBlSW5mb0Jsb2I6
OmluZGV4aW5nTW9kZUluY2x1ZGluZ0hpc3RvcnlPZmZzZXQoKTsKICAgICB9CiAgICAgCiAgICAg
c3RhdGljIHB0cmRpZmZfdCBwcm9wZXJ0eVRhYmxlVW5zYWZlT2Zmc2V0KCkKQEAgLTk1Nyw3ICs5
NTMsNyBAQCBwcml2YXRlOgogCiAgICAgLy8gVGhlc2UgbmVlZCB0byBiZSBwcm9wZXJseSBhbGln
bmVkIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlICdTdHJ1Y3R1cmUnCiAgICAgLy8gcGFydCBvZiB0
aGUgb2JqZWN0LgotICAgIFN0cnVjdHVyZUlEQmxvYiBtX2Jsb2I7CisgICAgVHlwZUluZm9CbG9i
IG1fYmxvYjsKICAgICBUeXBlSW5mbzo6T3V0T2ZMaW5lVHlwZUZsYWdzIG1fb3V0T2ZMaW5lVHlw
ZUZsYWdzOwogCiAgICAgdWludDhfdCBtX2lubGluZUNhcGFjaXR5OwpAQCAtOTY2LDE1ICs5NjIs
MjIgQEAgcHJpdmF0ZToKIAogICAgIHVpbnQzMl90IG1fYml0RmllbGQ7CiAKKyAgICB1aW50MTZf
dCBtX3RyYW5zaXRpb25PZmZzZXQ7CisgICAgdWludDE2X3QgbV9tYXhPZmZzZXQ7CisKKyAgICB1
aW50MzJfdCBtX3Byb3BlcnR5SGFzaDsKKyAgICBUaW55Qmxvb21GaWx0ZXI8Q29tcGFjdFB0cjxV
bmlxdWVkU3RyaW5nSW1wbD46OlN0b3JhZ2VUeXBlPiBtX3NlZW5Qcm9wZXJ0aWVzOworCisKICAg
ICBXcml0ZUJhcnJpZXI8SlNHbG9iYWxPYmplY3Q+IG1fZ2xvYmFsT2JqZWN0OwogICAgIFdyaXRl
QmFycmllcjxVbmtub3duPiBtX3Byb3RvdHlwZTsKICAgICBtdXRhYmxlIFdyaXRlQmFycmllcjxT
dHJ1Y3R1cmVDaGFpbj4gbV9jYWNoZWRQcm90b3R5cGVDaGFpbjsKIAogICAgIFdyaXRlQmFycmll
cjxKU0NlbGw+IG1fcHJldmlvdXNPclJhcmVEYXRhOwogCi0gICAgUmVmUHRyPFVuaXF1ZWRTdHJp
bmdJbXBsPiBtX3RyYW5zaXRpb25Qcm9wZXJ0eU5hbWU7CisgICAgQ29tcGFjdFJlZlB0cjxVbmlx
dWVkU3RyaW5nSW1wbD4gbV90cmFuc2l0aW9uUHJvcGVydHlOYW1lOwogCi0gICAgY29uc3QgQ2xh
c3NJbmZvKiBtX2NsYXNzSW5mbzsKKyAgICBDb21wYWN0UHRyPGNvbnN0IENsYXNzSW5mbz4gbV9j
bGFzc0luZm87CiAKICAgICBTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGUgbV90cmFuc2l0aW9uVGFi
bGU7CiAKQEAgLTk4NiwxMiArOTg5LDYgQEAgcHJpdmF0ZToKIAogICAgIHN0YXRpY19hc3NlcnQo
Zmlyc3RPdXRPZkxpbmVPZmZzZXQgPCAyNTYpOwogCi0gICAgdWludDE2X3QgbV90cmFuc2l0aW9u
T2Zmc2V0OwotICAgIHVpbnQxNl90IG1fbWF4T2Zmc2V0OwotCi0gICAgdWludDMyX3QgbV9wcm9w
ZXJ0eUhhc2g7Ci0gICAgVGlueUJsb29tRmlsdGVyIG1fc2VlblByb3BlcnRpZXM7Ci0KICAgICBm
cmllbmQgY2xhc3MgVk1JbnNwZWN0b3I7CiAgICAgZnJpZW5kIGNsYXNzIEpTRG9sbGFyVk1IZWxw
ZXI7CiAgICAgZnJpZW5kIGNsYXNzIEludGVncml0eTo6QW5hbHl6ZXI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgKaW5kZXggNjU4ZGUzNWZj
MTE3Li5iMjE0OTFjNDAyMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cnVjdHVyZUlubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJ1Y3R1cmVJbmxpbmVzLmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJTdHJ1Y3R1
cmUuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVDaGFpbi5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZVJh
cmVEYXRhSW5saW5lcy5oIgorI2luY2x1ZGUgPHd0Zi9Db21wYWN0UmVmUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL1RocmVhZGluZy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTE2NCw3ICsxNjUsNyBA
QCBBTFdBWVNfSU5MSU5FIFByb3BlcnR5T2Zmc2V0IFN0cnVjdHVyZTo6Z2V0KFZNJiB2bSwgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgdQogICAgIEFTU0VSVCghaXNDb21waWxhdGlvblRocmVh
ZCgpKTsKICAgICBBU1NFUlQoc3RydWN0dXJlKCktPmNsYXNzSW5mb0ZvckNlbGxzKCkgPT0gaW5m
bygpKTsKIAotICAgIGlmIChtX3NlZW5Qcm9wZXJ0aWVzLnJ1bGVPdXQoYml0d2lzZV9jYXN0PHVp
bnRwdHJfdD4ocHJvcGVydHlOYW1lLnVpZCgpKSkpCisgICAgaWYgKG1fc2VlblByb3BlcnRpZXMu
cnVsZU91dChDb21wYWN0UHRyPFVuaXF1ZWRTdHJpbmdJbXBsPjo6ZW5jb2RlKGJpdHdpc2VfY2Fz
dDx1aW50cHRyX3Q+KHByb3BlcnR5TmFtZS51aWQoKSkpKSkKICAgICAgICAgcmV0dXJuIGludmFs
aWRPZmZzZXQ7CiAKICAgICBQcm9wZXJ0eVRhYmxlKiBwcm9wZXJ0eVRhYmxlID0gZW5zdXJlUHJv
cGVydHlUYWJsZUlmTm90RW1wdHkodm0pOwpAQCAtNDg5LDcgKzQ5MCw3IEBAIGlubGluZSBQcm9w
ZXJ0eU9mZnNldCBTdHJ1Y3R1cmU6OmFkZChWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIHVuc2lnbmVkCiAgICAgUHJvcGVydHlPZmZzZXQgbmV3T2Zmc2V0ID0gdGFibGUtPm5leHRP
ZmZzZXQobV9pbmxpbmVDYXBhY2l0eSk7CiAKICAgICBtX3Byb3BlcnR5SGFzaCA9IG1fcHJvcGVy
dHlIYXNoIF4gcmVwLT5leGlzdGluZ1N5bWJvbEF3YXJlSGFzaCgpOwotICAgIG1fc2VlblByb3Bl
cnRpZXMuYWRkKGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KHJlcCkpOworICAgIG1fc2VlblByb3Bl
cnRpZXMuYWRkKENvbXBhY3RQdHI8VW5pcXVlZFN0cmluZ0ltcGw+OjplbmNvZGUoYml0d2lzZV9j
YXN0PHVpbnRwdHJfdD4ocmVwKSkpOwogCiAgICAgYXV0byBbb2Zmc2V0LCBhdHRyaWJ1dGUsIHJl
c3VsdF0gPSB0YWJsZS0+YWRkKHZtLCBQcm9wZXJ0eVRhYmxlRW50cnkocmVwLCBuZXdPZmZzZXQs
IGF0dHJpYnV0ZXMpKTsKICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlEQmxvYi5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZUluZm9CbG9iLmgKc2ltaWxhcml0eSBp
bmRleCA3MyUKcmVuYW1lIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlSURCbG9iLmgKcmVuYW1lIHRvIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVJ
bmZvQmxvYi5oCmluZGV4IGQ0YWMxNTI5MTg1NC4uZTQ3ZWM1ODA1ZTVlIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJREJsb2IuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlSW5mb0Jsb2IuaApAQCAtMzIsMjMgKzMyLDIx
IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1jbGFzcyBTdHJ1Y3R1cmVJREJsb2IgeworY2xhc3Mg
VHlwZUluZm9CbG9iIHsKICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwog
cHVibGljOgotICAgIFN0cnVjdHVyZUlEQmxvYigpID0gZGVmYXVsdDsKKyAgICBUeXBlSW5mb0Js
b2IoKSA9IGRlZmF1bHQ7CiAKLSAgICBTdHJ1Y3R1cmVJREJsb2IoU3RydWN0dXJlSUQgc3RydWN0
dXJlSUQsIEluZGV4aW5nVHlwZSBpbmRleGluZ01vZGVJbmNsdWRpbmdIaXN0b3J5LCBjb25zdCBU
eXBlSW5mbyYgdHlwZUluZm8pCisgICAgVHlwZUluZm9CbG9iKEluZGV4aW5nVHlwZSBpbmRleGlu
Z01vZGVJbmNsdWRpbmdIaXN0b3J5LCBjb25zdCBUeXBlSW5mbyYgdHlwZUluZm8pCiAgICAgewot
ICAgICAgICB1LmZpZWxkcy5zdHJ1Y3R1cmVJRCA9IHN0cnVjdHVyZUlEOwogICAgICAgICB1LmZp
ZWxkcy5pbmRleGluZ01vZGVJbmNsdWRpbmdIaXN0b3J5ID0gaW5kZXhpbmdNb2RlSW5jbHVkaW5n
SGlzdG9yeTsKICAgICAgICAgdS5maWVsZHMudHlwZSA9IHR5cGVJbmZvLnR5cGUoKTsKICAgICAg
ICAgdS5maWVsZHMuaW5saW5lVHlwZUZsYWdzID0gdHlwZUluZm8uaW5saW5lVHlwZUZsYWdzKCk7
CiAgICAgICAgIHUuZmllbGRzLmRlZmF1bHRDZWxsU3RhdGUgPSBDZWxsU3RhdGU6OkRlZmluaXRl
bHlXaGl0ZTsKICAgICB9CiAKLSAgICB2b2lkIG9wZXJhdG9yPShjb25zdCBTdHJ1Y3R1cmVJREJs
b2ImIG90aGVyKSB7IHUuZG91YmxlV29yZCA9IG90aGVyLnUuZG91YmxlV29yZDsgfQotICAgIAot
ICAgIFN0cnVjdHVyZUlEIHN0cnVjdHVyZUlEKCkgY29uc3QgeyByZXR1cm4gdS5maWVsZHMuc3Ry
dWN0dXJlSUQ7IH0KKyAgICB2b2lkIG9wZXJhdG9yPShjb25zdCBUeXBlSW5mb0Jsb2ImIG90aGVy
KSB7IHUud29yZCA9IG90aGVyLnUud29yZDsgfQorCiAgICAgSW5kZXhpbmdUeXBlIGluZGV4aW5n
TW9kZUluY2x1ZGluZ0hpc3RvcnkoKSBjb25zdCB7IHJldHVybiB1LmZpZWxkcy5pbmRleGluZ01v
ZGVJbmNsdWRpbmdIaXN0b3J5OyB9CiAgICAgRGVwZW5kZW5jeSBmZW5jZWRJbmRleGluZ01vZGVJ
bmNsdWRpbmdIaXN0b3J5KEluZGV4aW5nVHlwZSYgaW5kZXhpbmdUeXBlKQogICAgIHsKQEAgLTU5
LDM3ICs1NywyNSBAQCBwdWJsaWM6CiAgICAgVHlwZUluZm86OklubGluZVR5cGVGbGFncyBpbmxp
bmVUeXBlRmxhZ3MoKSBjb25zdCB7IHJldHVybiB1LmZpZWxkcy5pbmxpbmVUeXBlRmxhZ3M7IH0K
ICAgICAKICAgICBUeXBlSW5mbyB0eXBlSW5mbyhUeXBlSW5mbzo6T3V0T2ZMaW5lVHlwZUZsYWdz
IG91dE9mTGluZVR5cGVGbGFncykgY29uc3QgeyByZXR1cm4gVHlwZUluZm8odHlwZSgpLCBpbmxp
bmVUeXBlRmxhZ3MoKSwgb3V0T2ZMaW5lVHlwZUZsYWdzKTsgfQotICAgIAotICAgIGludDMyX3Qg
YmxvYkV4Y2x1ZGluZ1N0cnVjdHVyZUlEKCkgY29uc3QgeyByZXR1cm4gdS53b3Jkcy53b3JkMjsg
fQotICAgIGludDY0X3QgYmxvYigpIGNvbnN0IHsgcmV0dXJuIHUuZG91YmxlV29yZDsgfQotICAg
IAotICAgIHN0YXRpYyBwdHJkaWZmX3Qgc3RydWN0dXJlSURPZmZzZXQoKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihTdHJ1Y3R1cmVJREJsb2IsIHUuZmllbGRzLnN0cnVj
dHVyZUlEKTsKLSAgICB9CisKKyAgICBpbnQzMl90IGJsb2IoKSBjb25zdCB7IHJldHVybiB1Lndv
cmQ7IH0KIAogICAgIHN0YXRpYyBwdHJkaWZmX3QgaW5kZXhpbmdNb2RlSW5jbHVkaW5nSGlzdG9y
eU9mZnNldCgpCiAgICAgewotICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFN0cnVjdHVy
ZUlEQmxvYiwgdS5maWVsZHMuaW5kZXhpbmdNb2RlSW5jbHVkaW5nSGlzdG9yeSk7CisgICAgICAg
IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoVHlwZUluZm9CbG9iLCB1LmZpZWxkcy5pbmRleGluZ01v
ZGVJbmNsdWRpbmdIaXN0b3J5KTsKICAgICB9CiAKIHByaXZhdGU6CiAgICAgdW5pb24gRGF0YSB7
CiAgICAgICAgIHN0cnVjdCB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHJlbW92
ZSB0aGlzIHNpbmNlIHRoZSBzdHJ1Y3R1cmVJRCBjYW4gYmUgZGlyZWN0bHkgY29tcHV0ZWQgZnJv
bSB0aGUgU3RydWN0dXJlKgotICAgICAgICAgICAgU3RydWN0dXJlSUQgc3RydWN0dXJlSUQ7CiAg
ICAgICAgICAgICBJbmRleGluZ1R5cGUgaW5kZXhpbmdNb2RlSW5jbHVkaW5nSGlzdG9yeTsKICAg
ICAgICAgICAgIEpTVHlwZSB0eXBlOwogICAgICAgICAgICAgVHlwZUluZm86OklubGluZVR5cGVG
bGFncyBpbmxpbmVUeXBlRmxhZ3M7CiAgICAgICAgICAgICBDZWxsU3RhdGUgZGVmYXVsdENlbGxT
dGF0ZTsKICAgICAgICAgfSBmaWVsZHM7Ci0gICAgICAgIHN0cnVjdCB7Ci0gICAgICAgICAgICBp
bnQzMl90IHdvcmQxOwotICAgICAgICAgICAgaW50MzJfdCB3b3JkMjsKLSAgICAgICAgfSB3b3Jk
czsKLSAgICAgICAgaW50NjRfdCBkb3VibGVXb3JkOworICAgICAgICBpbnQzMl90IHdvcmQ7CiAK
LSAgICAgICAgRGF0YSgpIHsgZG91YmxlV29yZCA9IDB4YmJhZGJlZWY7IH0KKyAgICAgICAgRGF0
YSgpIHsgd29yZCA9IDB4YmJhZGJlZWY7IH0KICAgICB9OwogCiAgICAgRGF0YSB1OwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNw
cAppbmRleCBjNGQyYjk2YzI5MzAuLjQ0YjY5MmI3ZWU1MiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAKQEAgLTI2OCw3
ICsyNjgsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4gV2ViQXNzZW1i
bHlGdW5jdGlvbjo6anNDYWxsRW50cnlwb2ludFNsb3coKQogCiAgICAgICAgICAgICAgICAgc3Rh
Y2tMaW1pdEdQUklzQ2xvYmJlcmVkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBqaXQuZW1pdExv
YWRTdHJ1Y3R1cmUodm0sIHNjcmF0Y2hHUFIsIHNjcmF0Y2hHUFIpOwotICAgICAgICAgICAgICAg
IGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhzY3JhdGNoR1BSLCBTdHJ1Y3R1cmU6
OmNsYXNzSW5mb09mZnNldCgpKSwgc2NyYXRjaEdQUik7CisgICAgICAgICAgICAgICAgaml0Lmxv
YWRDb21wYWN0UHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhzY3JhdGNoR1BSLCBTdHJ1Y3R1cmU6
OmNsYXNzSW5mb09mZnNldCgpKSwgc2NyYXRjaEdQUik7CiAKICAgICAgICAgICAgICAgICBzdGF0
aWNfYXNzZXJ0KHN0ZDo6aXNfZmluYWw8V2ViQXNzZW1ibHlGdW5jdGlvbj46OnZhbHVlLCAiV2Ug
ZG8gbm90IGNoZWNrIGZvciBzdWJ0eXBlcyBiZWxvdyIpOwogICAgICAgICAgICAgICAgIHN0YXRp
Y19hc3NlcnQoc3RkOjppc19maW5hbDxXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbj46OnZhbHVl
LCAiV2UgZG8gbm90IGNoZWNrIGZvciBzdWJ0eXBlcyBiZWxvdyIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XVEYvV1RGLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggODgxOTIwZGMyZWZiLi41MTE3MjMzZjAyMjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtODExLDYgKzgx
MSw4IEBACiAJCUZFMzVEMDkyMjdEQzVFQ0MwMDlERkE1QiAvKiBTdGFja0NoZWNrLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMzVEMDkxMjdEQzVF
Q0MwMDlERkE1QiAvKiBTdGFja0NoZWNrLmNwcCAqLzsgfTsKIAkJRkVEQUNEM0QxNjMwRjgzRjAw
QzY5NjM0IC8qIFN0YWNrU3RhdHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRkVEQUNEM0IxNjMwRjgzRjAwQzY5NjM0IC8qIFN0YWNrU3RhdHMuY3Bw
ICovOyB9OwogCQlGRUVBNERGOTIxNkQ3QkU0MDBBQzA2MDIgLyogU3RhY2tQb2ludGVyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFRUE0REY4MjE2
RDdCRTQwMEFDMDYwMiAvKiBTdGFja1BvaW50ZXIuY3BwICovOyB9OworCQlGRjg5NUYxMTI4MkFC
OTY0MDBFN0JBRTggLyogQ29tcGFjdFJlZlB0ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRkY4OTVGMTAyODJBQjk2NDAwRTdCQUU4IC8qIENvbXBhY3RS
ZWZQdHIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQlGRkVFNDZGNDI4MjVERjgwMDAzQkM5ODEgLyogQ29tcGFjdFB0ci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkZFRTQ2RjMyODI1REY4MDAwM0JDOTgx
IC8qIENvbXBhY3RQdHIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWEJ1
aWxkUnVsZSBzZWN0aW9uICovCkBAIC0xNzE0LDYgKzE3MTYsOCBAQAogCQlGRUVBNERGODIxNkQ3
QkU0MDBBQzA2MDIgLyogU3RhY2tQb2ludGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFN0YWNrUG9pbnRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUZFRjI5NUJGMjBCNDlEQ0IwMENGMjgzQSAvKiBVVEY4Q29udmVyc2lvbkVycm9yLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVURjhDb252ZXJzaW9uRXJyb3IuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkYwQTQzNjU4ODk1NEYzQ0IwN0RCRUNBIC8qIFN0
ZExpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RkTGlzdC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRjg5NUYxMDI4MkFCOTY0MDBFN0JBRTggLyogQ29t
cGFjdFJlZlB0ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb21wYWN0UmVm
UHRyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZGRUU0NkYzMjgyNURGODAwMDNC
Qzk4MSAvKiBDb21wYWN0UHRyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENv
bXBhY3RQdHIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIC8qIEVuZCBQQlhGaWxlUmVm
ZXJlbmNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2Ugc2Vj
dGlvbiAqLwpAQCAtMTkzMCw2ICsxOTM0LDggQEAKIAkJCQkwRjY2QjI4MTFEQzk3QkFCMDA0QTFE
M0YgLyogQ2xvY2tUeXBlLmggKi8sCiAJCQkJMEZDNEVERTUxNjk2MTQ5NjAwRjY1MDQxIC8qIENv
bW1hUHJpbnRlci5oICovLAogCQkJCUUzQ0Y3NjkwMjExNUQ2QkEwMDkxREU0OCAvKiBDb21wYWN0
UG9pbnRlclR1cGxlLmggKi8sCisJCQkJRkZFRTQ2RjMyODI1REY4MDAwM0JDOTgxIC8qIENvbXBh
Y3RQdHIuaCAqLywKKwkJCQlGRjg5NUYxMDI4MkFCOTY0MDBFN0JBRTggLyogQ29tcGFjdFJlZlB0
ci5oICovLAogCQkJCUUzODAyMERCMjQwMUMwOTMwMDM3Q0E5RSAvKiBDb21wYWN0UmVmUHRyVHVw
bGUuaCAqLywKIAkJCQk5Qjk2RTlCMzI0RkY3N0I4MDAxNzU2QzMgLyogQ29tcGFjdFVuaXF1ZVB0
clR1cGxlLmggKi8sCiAJCQkJMEY4RjJCOEYxNzJFMDBGMDAwN0RCREE1IC8qIENvbXBpbGF0aW9u
VGhyZWFkLmNwcCAqLywKQEAgLTI4NjEsNiArMjg2Nyw4IEBACiAJCQkJRERGMzA3RjQyN0MwODZF
QTAwNkE1MjZGIC8qIENvbGxhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlERDNEQzkxNjI3QTRC
RjhFMDA3RTVCNjEgLyogQ29tbWFQcmludGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlERDNEQzhG
NjI3QTRCRjhFMDA3RTVCNjEgLyogQ29tcGFjdFBvaW50ZXJUdXBsZS5oIGluIEhlYWRlcnMgKi8s
CisJCQkJRkZFRTQ2RjQyODI1REY4MDAwM0JDOTgxIC8qIENvbXBhY3RQdHIuaCBpbiBIZWFkZXJz
ICovLAorCQkJCUZGODk1RjExMjgyQUI5NjQwMEU3QkFFOCAvKiBDb21wYWN0UmVmUHRyLmggaW4g
SGVhZGVycyAqLywKIAkJCQlERDNEQzkzOTI3QTRCRjhFMDA3RTVCNjEgLyogQ29tcGFjdFJlZlB0
clR1cGxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlERDNEQzkzNTI3QTRCRjhFMDA3RTVCNjEgLyog
Q29tcGFjdFVuaXF1ZVB0clR1cGxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlERDNEQzkwNzI3QTRC
RjhFMDA3RTVCNjEgLyogQ29tcGlsYXRpb25UaHJlYWQuaCBpbiBIZWFkZXJzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFr
ZUxpc3RzLnR4dAppbmRleCA3ZWQwYzY1YmY3MDIuLmRhNjE1MTYzOWE3MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dURi93dGYvQ01ha2VM
aXN0cy50eHQKQEAgLTM1LDYgKzM1LDggQEAgc2V0KFdURl9QVUJMSUNfSEVBREVSUwogICAgIENs
b2NrVHlwZS5oCiAgICAgQ29tbWFQcmludGVyLmgKICAgICBDb21wYWN0UG9pbnRlclR1cGxlLmgK
KyAgICBDb21wYWN0UHRyLmgKKyAgICBDb21wYWN0UmVmUHRyLmgKICAgICBDb21wYWN0UmVmUHRy
VHVwbGUuaAogICAgIENvbXBhY3RVbmlxdWVQdHJUdXBsZS5oCiAgICAgQ29tcGlsYXRpb25UaHJl
YWQuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ29tcGFjdFB0ci5oIGIvU291cmNlL1dU
Ri93dGYvQ29tcGFjdFB0ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MC4uZGY5YTAxZTZlZTkzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvQ29tcGFj
dFB0ci5oCkBAIC0wLDAgKzEsMjI4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxjc3RkaW50PgorI2luY2x1
ZGUgPHV0aWxpdHk+CisjaW5jbHVkZSA8d3RmL1Jhd1B0clRyYWl0cy5oPgorI2luY2x1ZGUgPHd0
Zi9TdGRMaWJFeHRyYXMuaD4KKworbmFtZXNwYWNlIFdURiB7CisKKyNpZiBDUFUoQUREUkVTUzY0
KQorI2lmIENQVShBUk02NCkgJiYgT1MoREFSV0lOKQorI2lmIE1BQ0hfVk1fTUFYX0FERFJFU1Nf
UkFXIDwgKDFVTEwgPDwgMzYpCisjZGVmaW5lIEhBVkVfMzZCSVRfQUREUkVTUyAxCisjZW5kaWYK
KyNlbmRpZgorI2VuZGlmIC8vIENQVShBRERSRVNTNjQpCisKK3RlbXBsYXRlIDx0eXBlbmFtZSBU
PgorY2xhc3MgQ29tcGFjdFB0ciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisKK3B1
YmxpYzoKKyNpZiBIQVZFKDM2QklUX0FERFJFU1MpCisgICAgLy8gVGhlIENvbXBhY3RQdHIgYWxn
b3JpdGhtIHJlbGllcyBvbiBiZWluZyBhYmxlIHRvIHNoaWZ0CisgICAgLy8gYSAzNi1iaXQgYWRk
cmVzcyByaWdodCBieSA0IGluIG9yZGVyIHRvIGZpdCBpbiAzMi1iaXRzLgorICAgIC8vIFRoZSBv
bmx5IHdheSB0aGlzIGlzIGFuIG9rIHRoaW5nIHRvIGRvIHdpdGhvdXQgaW5mb3JtYXRpb24KKyAg
ICAvLyBsb3NzIGlzIGlmIHRoZSBpZiB0aGUgYWRkcmVzcyBpcyBhbHdheXMgMTYgYnl0ZXMgYWxp
Z25lZCBpLmUuCisgICAgLy8gdGhlIGxvd2VyIDQgYml0cyBpcyBhbHdheXMgMC4KKyAgICB1c2lu
ZyBTdG9yYWdlVHlwZSA9IHVpbnQzMl90OworI2Vsc2UKKyAgICB1c2luZyBTdG9yYWdlVHlwZSA9
IHVpbnRwdHJfdDsKKyNlbmRpZgorICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0NvbXBhY3Rl
ZFR5cGUgPSB0cnVlOworCisgICAgQUxXQVlTX0lOTElORSBjb25zdGV4cHIgQ29tcGFjdFB0cigp
IHsgc2V0KG51bGxwdHIpOyB9CisKKyAgICBBTFdBWVNfSU5MSU5FIGNvbnN0ZXhwciBDb21wYWN0
UHRyKHN0ZDo6bnVsbHB0cl90KSB7IHNldChudWxscHRyKTsgfQorCisgICAgQUxXQVlTX0lOTElO
RSBDb21wYWN0UHRyKFQqIHB0cikgeyBzZXQocHRyKTsgfQorCisgICAgQUxXQVlTX0lOTElORSBD
b21wYWN0UHRyKGNvbnN0IENvbXBhY3RQdHImIG8pIDogbV9wdHIoby5tX3B0cikgeyB9CisKKyAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgWD4KKyAgICBBTFdBWVNfSU5MSU5FIENvbXBhY3RQdHIoY29u
c3QgQ29tcGFjdFB0cjxYPiYgbykgOiBtX3B0cihvLm1fcHRyKSB7IH0KKworICAgIEFMV0FZU19J
TkxJTkUgQ29tcGFjdFB0cihDb21wYWN0UHRyJiYgbykgOiBtX3B0cihvLm1fcHRyKSB7IH0KKwor
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBYPgorICAgIEFMV0FZU19JTkxJTkUgQ29tcGFjdFB0cihD
b21wYWN0UHRyPFg+JiYgbykgOiBtX3B0cihvLm1fcHRyKSB7IH0KKworICAgIEFMV0FZU19JTkxJ
TkUgfkNvbXBhY3RQdHIoKSA9IGRlZmF1bHQ7CisKKyAgICBUJiBvcGVyYXRvciooKSBjb25zdCB7
IHJldHVybiAqZ2V0KCk7IH0KKworICAgIEFMV0FZU19JTkxJTkUgVCogb3BlcmF0b3ItPigpIGNv
bnN0IHsgcmV0dXJuIGdldCgpOyB9CisKKyAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0
dXJuICFnZXQoKTsgfQorCisgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0
dXJuICEhZ2V0KCk7IH0KKworICAgIENvbXBhY3RQdHI8VD4mIG9wZXJhdG9yPShzdGQ6Om51bGxw
dHJfdCkKKyAgICB7CisgICAgICAgIGV4Y2hhbmdlKG51bGxwdHIpOworICAgICAgICByZXR1cm4g
KnRoaXM7CisgICAgfQorCisgICAgQ29tcGFjdFB0cjxUPiYgb3BlcmF0b3I9KGNvbnN0IENvbXBh
Y3RQdHImIG8pCisgICAgeworICAgICAgICBDb21wYWN0UHRyIGNvcHkgPSBvOworICAgICAgICBz
d2FwKGNvcHkpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAgdGVtcGxhdGUg
PHR5cGVuYW1lIFg+CisgICAgQ29tcGFjdFB0cjxUPiYgb3BlcmF0b3I9KGNvbnN0IENvbXBhY3RQ
dHI8WD4mIG8pCisgICAgeworICAgICAgICBDb21wYWN0UHRyIGNvcHkgPSBvOworICAgICAgICBz
d2FwKGNvcHkpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAgQ29tcGFjdFB0
cjxUPiYgb3BlcmF0b3I9KFQqIG9wdHIpCisgICAgeworICAgICAgICBDb21wYWN0UHRyIGNvcHkg
PSBvcHRyOworICAgICAgICBzd2FwKGNvcHkpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAg
fQorCisgICAgQ29tcGFjdFB0cjxUPiYgb3BlcmF0b3I9KENvbXBhY3RQdHImJiBvKQorICAgIHsK
KyAgICAgICAgQ29tcGFjdFB0ciBjb3B5ID0gbzsKKyAgICAgICAgc3dhcChjb3B5KTsKKyAgICAg
ICAgcmV0dXJuICp0aGlzOworICAgIH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBYPgorICAg
IENvbXBhY3RQdHI8VD4mIG9wZXJhdG9yPShDb21wYWN0UHRyPFg+JiYgbykKKyAgICB7CisgICAg
ICAgIENvbXBhY3RQdHIgY29weSA9IG87CisgICAgICAgIHN3YXAoY29weSk7CisgICAgICAgIHJl
dHVybiAqdGhpczsKKyAgICB9CisKKyAgICBUKiBnZXQoKSBjb25zdCB7IHJldHVybiBkZWNvZGUo
bV9wdHIpOyB9CisKKyAgICB2b2lkIHNldChUKiBwdHIpIHsgbV9wdHIgPSBlbmNvZGUocHRyKTsg
fQorCisgICAgdGVtcGxhdGUgPGNsYXNzIFU+CisgICAgVCogZXhjaGFuZ2UoVSYmIG5ld1ZhbHVl
KQorICAgIHsKKyAgICAgICAgVCogb2xkVmFsdWUgPSBnZXQoKTsKKyAgICAgICAgc2V0KHN0ZDo6
Zm9yd2FyZDxVPihuZXdWYWx1ZSkpOworICAgICAgICByZXR1cm4gb2xkVmFsdWU7CisgICAgfQor
CisgICAgdm9pZCBzd2FwKG51bGxwdHJfdCkgeyBzZXQobnVsbHB0cik7IH0KKworICAgIHZvaWQg
c3dhcChDb21wYWN0UHRyJiBvdGhlcikgeyBzdGQ6OnN3YXAobV9wdHIsIG90aGVyLm1fcHRyKTsg
fQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIE90aGVyLCB0eXBlbmFtZSA9IHN0ZDo6ZW5hYmxl
X2lmX3Q8T3RoZXI6OmlzQ29tcGFjdGVkVHlwZT4+CisgICAgdm9pZCBzd2FwKE90aGVyJiBvdGhl
cikKKyAgICB7CisgICAgICAgIFQqIHQxID0gZ2V0KCk7CisgICAgICAgIFQqIHQyID0gb3RoZXIu
Z2V0KCk7CisgICAgICAgIHNldCh0Mik7CisgICAgICAgIG90aGVyLnNldCh0MSk7CisgICAgfQor
CisgICAgdm9pZCBzd2FwKFQqIHQyKQorICAgIHsKKyAgICAgICAgVCogdDEgPSBnZXQoKTsKKyAg
ICAgICAgc3RkOjpzd2FwKHQxLCB0Mik7CisgICAgICAgIHNldCh0MSk7CisgICAgfQorCisgICAg
c3RhdGljIEFMV0FZU19JTkxJTkUgY29uc3RleHByIFN0b3JhZ2VUeXBlIGVuY29kZSh1aW50cHRy
X3QgcHRyKQorICAgIHsKKyNpZiBIQVZFKDM2QklUX0FERFJFU1MpCisgICAgICAgIEFTU0VSVF9V
TkRFUl9DT05TVEVYUFJfQ09OVEVYVCghKHB0ciAmIGFsaWdubWVudE1hc2spKTsKKyAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PHVpbnQzMl90PihwdHIgPj4gYml0c1NoaWZ0KTsKKyNlbHNlCisg
ICAgICAgIHJldHVybiBwdHI7CisjZW5kaWYKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIGNv
bnN0ZXhwciBTdG9yYWdlVHlwZSBlbmNvZGUoVCogcHRyKSBjb25zdAorICAgIHsKKyAgICAgICAg
cmV0dXJuIGVuY29kZShyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4ocHRyKSk7CisgICAgfQor
CisgICAgQUxXQVlTX0lOTElORSBjb25zdGV4cHIgVCogZGVjb2RlKGNvbnN0IFN0b3JhZ2VUeXBl
JiBwdHIpIGNvbnN0CisgICAgeworI2lmIEhBVkUoMzZCSVRfQUREUkVTUykKKyAgICAgICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8VCo+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4ocHRyKSA8PCBi
aXRzU2hpZnQpOworI2Vsc2UKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8VCo+KHB0
cik7CisjZW5kaWYKKyAgICB9CisKK3ByaXZhdGU6CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFg+
CisgICAgZnJpZW5kIGNsYXNzIENvbXBhY3RQdHI7CisKKyAgICBzdGF0aWMgY29uc3RleHByIHVp
bnQzMl90IGJpdHNTaGlmdCA9IDQ7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50cHRyX3QgYWxp
Z25tZW50TWFzayA9ICgxdWxsIDw8IGJpdHNTaGlmdCkgLSAxOworCisgICAgU3RvcmFnZVR5cGUg
bV9wdHI7Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBHZXRQdHJIZWxwZXI8
Q29tcGFjdFB0cjxUPj4geworICAgIHVzaW5nIFB0clR5cGUgPSBUKjsKKyAgICBzdGF0aWMgVCog
Z2V0UHRyKGNvbnN0IENvbXBhY3RQdHI8VD4mIHApIHsgcmV0dXJuIGNvbnN0X2Nhc3Q8VCo+KHAu
Z2V0KCkpOyB9Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBJc1NtYXJ0UHRy
PENvbXBhY3RQdHI8VD4+IHsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgdmFsdWUgPSB0cnVl
OworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgQ29tcGFjdFB0clRyYWl0cyB7
CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+CisgICAgdXNpbmcgUmViaW5kVHJhaXRzID0gUmF3
UHRyVHJhaXRzPFU+OworCisgICAgdXNpbmcgU3RvcmFnZVR5cGUgPSBDb21wYWN0UHRyPFQ+Owor
CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+CisgICAgc3RhdGljIEFMV0FZU19JTkxJTkUgVCog
ZXhjaGFuZ2UoU3RvcmFnZVR5cGUmIHB0ciwgVSYmIG5ld1ZhbHVlKSB7IHJldHVybiBwdHIuZXhj
aGFuZ2UobmV3VmFsdWUpOyB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgT3RoZXI+CisgICAg
c3RhdGljIEFMV0FZU19JTkxJTkUgdm9pZCBzd2FwKFN0b3JhZ2VUeXBlJiBhLCBPdGhlciYgYikg
eyBhLnN3YXAoYik7IH0KKworICAgIHN0YXRpYyBBTFdBWVNfSU5MSU5FIFQqIHVud3JhcChjb25z
dCBTdG9yYWdlVHlwZSYgcHRyKSB7IHJldHVybiBwdHIuZ2V0KCk7IH0KKworICAgIHN0YXRpYyBT
dG9yYWdlVHlwZSBoYXNoVGFibGVEZWxldGVkVmFsdWUoKSB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8
U3RvcmFnZVR5cGU+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oLTEpKTsgfQorICAgIHN0YXRpYyBB
TFdBWVNfSU5MSU5FIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoY29uc3QgU3RvcmFnZVR5
cGUmIHB0cikgeyByZXR1cm4gcHRyID09IGhhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOyB9Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXVEYKKwordXNpbmcgV1RGOjpDb21wYWN0UHRyOwordXNpbmcgV1RG
OjpDb21wYWN0UHRyVHJhaXRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ29tcGFjdFJl
ZlB0ci5oIGIvU291cmNlL1dURi93dGYvQ29tcGFjdFJlZlB0ci5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMWYxNGZmMGYzODk4Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dURi93dGYvQ29tcGFjdFJlZlB0ci5oCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgPHd0Zi9Db21wYWN0UHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1l
c3BhY2UgV1RGIHsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cit1c2luZyBDb21wYWN0UmVmUHRy
ID0gUmVmUHRyPFQsIENvbXBhY3RQdHJUcmFpdHM8VD4+OworCit9IC8vIG5hbWVzcGFjZSBXVEYK
KwordXNpbmcgV1RGOjpDb21wYWN0UmVmUHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
dGV4dC9TdHJpbmdJbXBsLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAK
aW5kZXggNDJmOWI3NjgwNDZkLi5mMjllNGY1YTcwNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL3RleHQvU3RyaW5nSW1wbC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJ
bXBsLmNwcApAQCAtNDUsNyArNDUsNyBAQCBuYW1lc3BhY2UgV1RGIHsKIAogdXNpbmcgbmFtZXNw
YWNlIFVuaWNvZGU7CiAKLXN0YXRpY19hc3NlcnQoc2l6ZW9mKFN0cmluZ0ltcGwpID09IDIgKiBz
aXplb2YoaW50KSArIDIgKiBzaXplb2Yodm9pZCopLCAiU3RyaW5nSW1wbCBzaG91bGQgc3RheSBz
bWFsbCIpOworc3RhdGljX2Fzc2VydChzaXplb2YoU3RyaW5nSW1wbCkgPT0gcm91bmRVcFRvTXVs
dGlwbGVPZkltcGwoMTYsIDIgKiBzaXplb2YoaW50KSArIDIgKiBzaXplb2Yodm9pZCopKSwgIlN0
cmluZ0ltcGwgc2hvdWxkIHN0YXkgc21hbGwiKTsKIAogI2lmIFNUUklOR19TVEFUUwogU3RyaW5n
U3RhdHMgU3RyaW5nSW1wbDo6bV9zdHJpbmdTdGF0czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL3RleHQvU3RyaW5nSW1wbC5oIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgK
aW5kZXggZGU4MDEyMTlhYTZjLi4zY2UyOTg0ZjAyNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL3RleHQvU3RyaW5nSW1wbC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1w
bC5oCkBAIC0xMzIsNyArMTMyLDcgQEAgc3RydWN0IFN0cmluZ1N0YXRzIHsKIAogI2VuZGlmCiAK
LWNsYXNzIFN0cmluZ0ltcGxTaGFwZSB7CitjbGFzcyBhbGlnbmFzKDE2KSBTdHJpbmdJbXBsU2hh
cGUgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFN0cmluZ0ltcGxTaGFwZSk7CiBwdWJsaWM6
CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBNYXhMZW5ndGggPSBzdGQ6Om51bWVyaWNf
bGltaXRzPGludDMyX3Q+OjptYXgoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
Q01ha2VMaXN0cy50eHQgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CmluZGV4
IDNlMzlhNDA2YjU1My4uMzQyOWZkMDkzNzI1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL0NNYWtlTGlzdHMudHh0CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50
eHQKQEAgLTI5LDYgKzI5LDggQEAgc2V0KFRlc3RXVEZfU09VUkNFUwogICAgIFRlc3RzL1dURi9C
dW1wUG9pbnRlckFsbG9jYXRvci5jcHAKICAgICBUZXN0cy9XVEYvQ1N0cmluZy5jcHAKICAgICBU
ZXN0cy9XVEYvQ2hlY2tlZEFyaXRobWV0aWNPcGVyYXRpb25zLmNwcAorICAgIFRlc3RzL1dURi9D
b21wYWN0UHRyLmNwcAorICAgIFRlc3RzL1dURi9Db21wYWN0UmVmUHRyLmNwcAogICAgIFRlc3Rz
L1dURi9Db21wYWN0UmVmUHRyVHVwbGUuY3BwCiAgICAgVGVzdHMvV1RGL0NvbXBhY3RVbmlxdWVQ
dHJUdXBsZS5jcHAKICAgICBUZXN0cy9XVEYvQ29uY3VycmVudFB0ckhhc2hTZXQuY3BwCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IDNjNDE0YjczNTM2Yy4uZTNmYmMyN2E0YTk1IDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtMTE2Niw2ICsxMTY2LDggQEAKIAkJRkUyRDk0NzQyNDVFQjJG
NDAwRTQ4MTM1IC8qIEJpdG1hcC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGRTJEOTQ3MzI0NUVCMkRGMDBFNDgxMzUgLyogQml0bWFwLmNwcCAqLzsg
fTsKIAkJRkVDMkE4NTQyNENFOTc1RjAwQURCQzM1IC8qIERpc2FsbG93Vk1FbnRyeS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUMyQTg1MzI0Q0U5
NzRFMDBBREJDMzUgLyogRGlzYWxsb3dWTUVudHJ5LmNwcCAqLzsgfTsKIAkJRkVDMkE4NTYyNENF
QjY1RjAwQURCQzM1IC8qIFByb3BlcnR5U2xvdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUMyQTg1NTI0Q0VCNjVGMDBBREJDMzUgLyogUHJvcGVy
dHlTbG90LmNwcCAqLzsgfTsKKwkJRkYxMEFBRjkyODMxQjFFNjAwQjk4NzVCIC8qIENvbXBhY3RQ
dHIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkYx
MEFBRjgyODMxQjFFNjAwQjk4NzVCIC8qIENvbXBhY3RQdHIuY3BwICovOyB9OworCQlGRjVEMENC
NDI4MzIyMUFEMDBGMzI3OEEgLyogQ29tcGFjdFJlZlB0ci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRjVEMENCMzI4MzIyMUFEMDBGMzI3OEEgLyog
Q29tcGFjdFJlZlB0ci5jcHAgKi87IH07CiAvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8K
IAogLyogQmVnaW4gUEJYQ29udGFpbmVySXRlbVByb3h5IHNlY3Rpb24gKi8KQEAgLTMyMzIsNiAr
MzIzNCw5IEBACiAJCUZFQjZGNzRFMUIyQkE0NEUwMDlFNDkyMiAvKiBOYWtlZFB0ci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOYWtlZFB0ci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFQzJBODUzMjRDRTk3NEUwMEFEQkMzNSAvKiBEaXNhbGxv
d1ZNRW50cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGlzYWxs
b3dWTUVudHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVDMkE4NTUyNENF
QjY1RjAwQURCQzM1IC8qIFByb3BlcnR5U2xvdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBQcm9wZXJ0eVNsb3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlGRjEwQUFGODI4MzFCMUU2MDBCOTg3NUIgLyogQ29tcGFjdFB0ci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb21wYWN0UHRyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRkYyNTk0MkEyODM0QjdBNzAwNjg5MkQ2IC8qIEFsaWduZWRSZWZM
b2dnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWxpZ25lZFJlZkxvZ2dl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRjVEMENCMzI4MzIyMUFEMDBGMzI3
OEEgLyogQ29tcGFjdFJlZlB0ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBDb21wYWN0UmVmUHRyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIC8qIEVu
ZCBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYRnJhbWV3b3Jrc0J1
aWxkUGhhc2Ugc2VjdGlvbiAqLwpAQCAtNDY1MSw2ICs0NjU2LDggQEAKIAkJCQlBN0E5NjZEQTE0
MEVDQ0M4MDA1RUY5QjQgLyogQ2hlY2tlZEFyaXRobWV0aWNPcGVyYXRpb25zLmNwcCAqLywKIAkJ
CQk5QkJDQTRERTI2NUFDQTVCMDBERkU3MjMgLyogQ2hlY2tlZFB0ci5jcHAgKi8sCiAJCQkJOUJG
MDAxMzIyNjdDNEM1OTAwRENGQjNGIC8qIENoZWNrZWRSZWYuY3BwICovLAorCQkJCUZGMTBBQUY4
MjgzMUIxRTYwMEI5ODc1QiAvKiBDb21wYWN0UHRyLmNwcCAqLywKKwkJCQlGRjVEMENCMzI4MzIy
MUFEMDBGMzI3OEEgLyogQ29tcGFjdFJlZlB0ci5jcHAgKi8sCiAJCQkJRTMwMkJEQTkyNDA0Qjky
MzAwODY1Mjc3IC8qIENvbXBhY3RSZWZQdHJUdXBsZS5jcHAgKi8sCiAJCQkJOUIwQzA1MTgyNEZE
RkI3MDAwRjJGRTMxIC8qIENvbXBhY3RVbmlxdWVQdHJUdXBsZS5jcHAgKi8sCiAJCQkJMEYzMENC
NUIxRkNFMTc5MjAwNEI1MzIzIC8qIENvbmN1cnJlbnRQdHJIYXNoU2V0LmNwcCAqLywKQEAgLTQ2
NTgsNiArNDY2NSw3IEBACiAJCQkJMjc4REU2NEIyMkI4RDYxMTAwNEUwRTdBIC8qIENyb3NzVGhy
ZWFkQ29waWVyLmNwcCAqLywKIAkJCQk1MTcxNEVCOTFEMDg3NDE2MDA0NzIzQzQgLyogQ3Jvc3NU
aHJlYWRUYXNrLmNwcCAqLywKIAkJCQkyNkEyQzcyRTE1RTJFNzNDMDA1QjFBMTQgLyogQ1N0cmlu
Zy5jcHAgKi8sCisJCQkJRkYyNTk0MkEyODM0QjdBNzAwNjg5MkQ2IC8qIEFsaWduZWRSZWZMb2dn
ZXIuaCAqLywKIAkJCQk3QUEwMjFCQTFBQjA5RUE3MDA1Mjk1M0YgLyogRGF0ZU1hdGguY3BwICov
LAogCQkJCTFBMzUyNEE5MUQ2MjdCRDQwMDMxNzI5QiAvKiBEZWxldGVkQWRkcmVzc09mT3BlcmF0
b3IuaCAqLywKIAkJCQlFNEE3NTdEMzE3OEFFQTVCMDBCNUQ3QTQgLyogRGVxdWUuY3BwICovLApA
QCAtNTQ1MCw2ICs1NDU4LDggQEAKIAkJCQk3QzgzREVBMDFEMEE1OTBDMDBGRUJDRjMgLyogQ2hl
Y2tlZEFyaXRobWV0aWNPcGVyYXRpb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTlCQkNBNERG
MjY1QUNBNUIwMERGRTcyMyAvKiBDaGVja2VkUHRyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTlC
RjAwMTMzMjY3QzRDNTkwMERDRkIzRiAvKiBDaGVja2VkUmVmLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCUZGMTBBQUY5MjgzMUIxRTYwMEI5ODc1QiAvKiBDb21wYWN0UHRyLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCUZGNUQwQ0I0MjgzMjIxQUQwMEYzMjc4QSAvKiBDb21wYWN0UmVmUHRyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUUzMDJCREFBMjQwNEI5MjQwMDg2NTI3NyAvKiBDb21wYWN0UmVm
UHRyVHVwbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOUIwQzA1MTkyNEZERkI3RDAwRjJGRTMx
IC8qIENvbXBhY3RVbmlxdWVQdHJUdXBsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjMwQ0I1
QzFGQ0UxNzk2MDA0QjUzMjMgLyogQ29uY3VycmVudFB0ckhhc2hTZXQuY3BwIGluIFNvdXJjZXMg
Ki8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9BbGlnbmVkUmVm
TG9nZ2VyLmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9BbGlnbmVkUmVmTG9nZ2Vy
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4xZDYxZTUwZmUxNjYK
LS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9BbGlnbmVk
UmVmTG9nZ2VyLmgKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSAiTG9nZ2VyLmgiCisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworc3Ry
dWN0IGFsaWduYXMoMTYpIEFsaWduZWRSZWZMb2dnZXIgeworICAgIEFsaWduZWRSZWZMb2dnZXIo
Y29uc3QgY2hhciogbmFtZSkKKyAgICAgICAgOiBuYW1lIHsgKm5hbWUgfQorICAgIHsKKyAgICB9
CisKKyAgICB2b2lkIHJlZigpCisgICAgeworICAgICAgICBsb2coKSA8PCAicmVmKCIgPDwgJm5h
bWUgPDwgIikgIjsKKyAgICB9CisKKyAgICB2b2lkIGRlcmVmKCkKKyAgICB7CisgICAgICAgIGxv
ZygpIDw8ICJkZXJlZigiIDw8ICZuYW1lIDw8ICIpICI7CisgICAgfQorCisgICAgY29uc3QgY2hh
ciYgbmFtZTsKK307CisKK3N0cnVjdCBEZXJpdmVkQWxpZ25lZFJlZkxvZ2dlciA6IEFsaWduZWRS
ZWZMb2dnZXIgeworICAgIERlcml2ZWRBbGlnbmVkUmVmTG9nZ2VyKGNvbnN0IGNoYXIqIG5hbWUp
CisgICAgICAgIDogQWxpZ25lZFJlZkxvZ2dlciB7IG5hbWUgfQorICAgIHsKKyAgICB9Cit9Owor
Cit9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Db21wYWN0UHRy
LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0NvbXBhY3RQdHIuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYTE2M2IwMDczNGZjCi0tLSAvZGV2
L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ29tcGFjdFB0ci5jcHAK
QEAgLTAsMCArMSwxODkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSA8d3RmL0NvbXBhY3RQdHIuaD4KKworI2luY2x1ZGUgIkFsaWduZWRSZWZMb2dnZXIuaCIK
KyNpbmNsdWRlICJVdGlsaXRpZXMuaCIKKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorI2lu
Y2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CisjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNv
dW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CisKK25hbWVzcGFjZSBUZXN0V2Vi
S2l0QVBJIHsKKworVEVTVChXVEZfQ29tcGFjdFB0ciwgQmFzaWMpCit7CisgICAgRGVyaXZlZEFs
aWduZWRSZWZMb2dnZXIgYSgiYSIpOworCisgICAgQ29tcGFjdFB0cjxBbGlnbmVkUmVmTG9nZ2Vy
PiBlbXB0eTsKKyAgICBFWFBFQ1RfRVEobnVsbHB0ciwgZW1wdHkuZ2V0KCkpOworCisgICAgewor
ICAgICAgICBDb21wYWN0UHRyPEFsaWduZWRSZWZMb2dnZXI+IHB0cigmYSk7CisgICAgICAgIEVY
UEVDVF9FUSgmYSwgcHRyLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCAmKnB0cik7Cisg
ICAgICAgIEVYUEVDVF9FUSgmYS5uYW1lLCAmcHRyLT5uYW1lKTsKKyAgICB9CisKKyAgICB7Cisg
ICAgICAgIENvbXBhY3RQdHI8QWxpZ25lZFJlZkxvZ2dlcj4gcHRyID0gJmE7CisgICAgICAgIEVY
UEVDVF9FUSgmYSwgcHRyLmdldCgpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIENvbXBhY3RQ
dHI8QWxpZ25lZFJlZkxvZ2dlcj4gcDEgPSAmYTsKKyAgICAgICAgQ29tcGFjdFB0cjxBbGlnbmVk
UmVmTG9nZ2VyPiBwMihwMSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcDEuZ2V0KCkpOworICAg
ICAgICBFWFBFQ1RfRVEoJmEsIHAyLmdldCgpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIENv
bXBhY3RQdHI8QWxpZ25lZFJlZkxvZ2dlcj4gcDEgPSAmYTsKKyAgICAgICAgQ29tcGFjdFB0cjxB
bGlnbmVkUmVmTG9nZ2VyPiBwMiA9IHAxOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHAxLmdldCgp
KTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwMi5nZXQoKSk7CisgICAgfQorCisgICAgeworICAg
ICAgICBDb21wYWN0UHRyPEFsaWduZWRSZWZMb2dnZXI+IHAxID0gJmE7CisgICAgICAgIENvbXBh
Y3RQdHI8QWxpZ25lZFJlZkxvZ2dlcj4gcDIgPSBXVEZNb3ZlKHAxKTsKKyAgICAgICAgRVhQRUNU
X0VRKCZhLCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcDIuZ2V0KCkpOworICAg
IH0KKworICAgIHsKKyAgICAgICAgQ29tcGFjdFB0cjxBbGlnbmVkUmVmTG9nZ2VyPiBwMSA9ICZh
OworICAgICAgICBDb21wYWN0UHRyPEFsaWduZWRSZWZMb2dnZXI+IHAyKFdURk1vdmUocDEpKTsK
KyAgICAgICAgRVhQRUNUX0VRKCZhLCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwg
cDIuZ2V0KCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgQ29tcGFjdFB0cjxEZXJpdmVkQWxp
Z25lZFJlZkxvZ2dlcj4gcDEgPSAmYTsKKyAgICAgICAgQ29tcGFjdFB0cjxBbGlnbmVkUmVmTG9n
Z2VyPiBwMiA9IHAxOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHAxLmdldCgpKTsKKyAgICAgICAg
RVhQRUNUX0VRKCZhLCBwMi5nZXQoKSk7CisgICAgfQorCisgICAgeworICAgICAgICBDb21wYWN0
UHRyPERlcml2ZWRBbGlnbmVkUmVmTG9nZ2VyPiBwMSA9ICZhOworICAgICAgICBDb21wYWN0UHRy
PEFsaWduZWRSZWZMb2dnZXI+IHAyID0gV1RGTW92ZShwMSk7CisgICAgICAgIEVYUEVDVF9FUSgm
YSwgcDEuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHAyLmdldCgpKTsKKyAgICB9CisK
KyAgICB7CisgICAgICAgIENvbXBhY3RQdHI8QWxpZ25lZFJlZkxvZ2dlcj4gcHRyKCZhKTsKKyAg
ICAgICAgRVhQRUNUX0VRKCZhLCBwdHIuZ2V0KCkpOworICAgICAgICBwdHIgPSBudWxscHRyOwor
ICAgICAgICBFWFBFQ1RfRVEobnVsbHB0ciwgcHRyLmdldCgpKTsKKyAgICB9CisKKyAgICB7Cisg
ICAgICAgIENvbXBhY3RQdHI8QWxpZ25lZFJlZkxvZ2dlcj4gcHRyKG51bGxwdHIpOworICAgICAg
ICBFWFBFQ1RfRVEobnVsbHB0ciwgcHRyLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKGZhbHNl
LCBzdGF0aWNfY2FzdDxib29sPihwdHIpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIENvbXBh
Y3RQdHI8QWxpZ25lZFJlZkxvZ2dlcj4gcHRyID0gbnVsbHB0cjsKKyAgICAgICAgRVhQRUNUX0VR
KG51bGxwdHIsIHB0ci5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUSh0cnVlLCAhcHRyKTsKKyAg
ICB9Cit9CisKK1RFU1QoV1RGX0NvbXBhY3RQdHIsIEFzc2lnbm1lbnQpCit7CisgICAgRGVyaXZl
ZEFsaWduZWRSZWZMb2dnZXIgYSgiYSIpOworICAgIEFsaWduZWRSZWZMb2dnZXIgYigiYiIpOwor
ICAgIERlcml2ZWRBbGlnbmVkUmVmTG9nZ2VyIGMoImMiKTsKKworICAgIHsKKyAgICAgICAgQ29t
cGFjdFB0cjxBbGlnbmVkUmVmTG9nZ2VyPiBwMSA9ICZhOworICAgICAgICBDb21wYWN0UHRyPEFs
aWduZWRSZWZMb2dnZXI+IHAyID0gJmI7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcDEuZ2V0KCkp
OworICAgICAgICBFWFBFQ1RfRVEoJmIsIHAyLmdldCgpKTsKKyAgICAgICAgcDEgPSBwMjsKKyAg
ICAgICAgRVhQRUNUX0VRKCZiLCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYiwgcDIu
Z2V0KCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgQ29tcGFjdFB0cjxBbGlnbmVkUmVmTG9n
Z2VyPiBwdHIoJmEpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHB0ci5nZXQoKSk7CisgICAgICAg
IHB0ciA9ICZiOworICAgICAgICBFWFBFQ1RfRVEoJmIsIHB0ci5nZXQoKSk7CisgICAgfQorCisg
ICAgeworICAgICAgICBDb21wYWN0UHRyPEFsaWduZWRSZWZMb2dnZXI+IHB0cigmYSk7CisgICAg
ICAgIEVYUEVDVF9FUSgmYSwgcHRyLmdldCgpKTsKKyAgICAgICAgcHRyID0gbnVsbHB0cjsKKyAg
ICAgICAgRVhQRUNUX0VRKG51bGxwdHIsIHB0ci5nZXQoKSk7CisgICAgfQorCisgICAgeworICAg
ICAgICBDb21wYWN0UHRyPEFsaWduZWRSZWZMb2dnZXI+IHAxID0gJmE7CisgICAgICAgIENvbXBh
Y3RQdHI8QWxpZ25lZFJlZkxvZ2dlcj4gcDIgPSAmYjsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBw
MS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYiwgcDIuZ2V0KCkpOworICAgICAgICBwMSA9
IFdURk1vdmUocDIpOworICAgICAgICBFWFBFQ1RfRVEoJmIsIHAxLmdldCgpKTsKKyAgICAgICAg
RVhQRUNUX0VRKCZiLCBwMi5nZXQoKSk7CisgICAgfQorCisgICAgeworICAgICAgICBDb21wYWN0
UHRyPEFsaWduZWRSZWZMb2dnZXI+IHAxID0gJmE7CisgICAgICAgIENvbXBhY3RQdHI8RGVyaXZl
ZEFsaWduZWRSZWZMb2dnZXI+IHAyID0gJmM7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcDEuZ2V0
KCkpOworICAgICAgICBFWFBFQ1RfRVEoJmMsIHAyLmdldCgpKTsKKyAgICAgICAgcDEgPSBwMjsK
KyAgICAgICAgRVhQRUNUX0VRKCZjLCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYywg
cDIuZ2V0KCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgQ29tcGFjdFB0cjxBbGlnbmVkUmVm
TG9nZ2VyPiBwMSA9ICZhOworICAgICAgICBDb21wYWN0UHRyPERlcml2ZWRBbGlnbmVkUmVmTG9n
Z2VyPiBwMiA9ICZjOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHAxLmdldCgpKTsKKyAgICAgICAg
RVhQRUNUX0VRKCZjLCBwMi5nZXQoKSk7CisgICAgICAgIHAxID0gV1RGTW92ZShwMik7CisgICAg
ICAgIEVYUEVDVF9FUSgmYywgcDEuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEoJmMsIHAyLmdl
dCgpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIENvbXBhY3RQdHI8QWxpZ25lZFJlZkxvZ2dl
cj4gcHRyKCZhKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwdHIuZ2V0KCkpOworICAgICAgICBw
dHIgPSAmYzsKKyAgICAgICAgRVhQRUNUX0VRKCZjLCBwdHIuZ2V0KCkpOworICAgIH0KK30KKwor
fSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvQ29tcGFjdFJlZlB0ci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9Db21wYWN0UmVmUHRyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAuLmZmZTYyOTJhYmU5YwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL0NvbXBhY3RSZWZQdHIuY3BwCkBAIC0wLDAgKzEsNTY3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHd0Zi9Db21wYWN0UmVmUHRy
Lmg+CisKKyNpbmNsdWRlICJBbGlnbmVkUmVmTG9nZ2VyLmgiCisjaW5jbHVkZSAiVXRpbGl0aWVz
LmgiCisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0
cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SdW5M
b29wLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8
d3RmL1RocmVhZGluZy5oPgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK1RFU1QoV1RG
X0NvbXBhY3RSZWZQdHIsIEJhc2ljKQoreworICAgIERlcml2ZWRBbGlnbmVkUmVmTG9nZ2VyIGEo
ImEiKTsKKworICAgIENvbXBhY3RSZWZQdHI8QWxpZ25lZFJlZkxvZ2dlcj4gZW1wdHk7CisgICAg
RVhQRUNUX0VRKG51bGxwdHIsIGVtcHR5LmdldCgpKTsKKworICAgIHsKKyAgICAgICAgQ29tcGFj
dFJlZlB0cjxBbGlnbmVkUmVmTG9nZ2VyPiBwdHIoJmEpOworICAgICAgICBFWFBFQ1RfRVEoJmEs
IHB0ci5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgJipwdHIpOworICAgICAgICBFWFBF
Q1RfRVEoJmEubmFtZSwgJnB0ci0+bmFtZSk7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgicmVm
KGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKworICAgIHsKKyAgICAgICAg
Q29tcGFjdFJlZlB0cjxBbGlnbmVkUmVmTG9nZ2VyPiBwdHIgPSAmYTsKKyAgICAgICAgRVhQRUNU
X0VRKCZhLCBwdHIuZ2V0KCkpOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSBkZXJl
ZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7CisgICAgICAgIENvbXBhY3RS
ZWZQdHI8QWxpZ25lZFJlZkxvZ2dlcj4gcDEgPSAmYTsKKyAgICAgICAgQ29tcGFjdFJlZlB0cjxB
bGlnbmVkUmVmTG9nZ2VyPiBwMihwMSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcDEuZ2V0KCkp
OworICAgICAgICBFWFBFQ1RfRVEoJmEsIHAyLmdldCgpKTsKKyAgICB9CisgICAgRVhQRUNUX1NU
UkVRKCJyZWYoYSkgcmVmKGEpIGRlcmVmKGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0
cigpKTsKKworICAgIHsKKyAgICAgICAgQ29tcGFjdFJlZlB0cjxBbGlnbmVkUmVmTG9nZ2VyPiBw
MSA9ICZhOworICAgICAgICBDb21wYWN0UmVmUHRyPEFsaWduZWRSZWZMb2dnZXI+IHAyID0gcDE7
CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcDEuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEoJmEs
IHAyLmdldCgpKTsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgcmVmKGEpIGRlcmVm
KGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKworICAgIHsKKyAgICAgICAg
Q29tcGFjdFJlZlB0cjxBbGlnbmVkUmVmTG9nZ2VyPiBwMSA9ICZhOworICAgICAgICBDb21wYWN0
UmVmUHRyPEFsaWduZWRSZWZMb2dnZXI+IHAyID0gV1RGTW92ZShwMSk7CisgICAgICAgIEVYUEVD
VF9FUShudWxscHRyLCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcDIuZ2V0KCkp
OworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3Ry
KCkuY19zdHIoKSk7CisKKyAgICB7CisgICAgICAgIENvbXBhY3RSZWZQdHI8QWxpZ25lZFJlZkxv
Z2dlcj4gcDEgPSAmYTsKKyAgICAgICAgQ29tcGFjdFJlZlB0cjxBbGlnbmVkUmVmTG9nZ2VyPiBw
MihXVEZNb3ZlKHAxKSk7CisgICAgICAgIEVYUEVDVF9FUShudWxscHRyLCBwMS5nZXQoKSk7Cisg
ICAgICAgIEVYUEVDVF9FUSgmYSwgcDIuZ2V0KCkpOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEo
InJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7CisgICAg
ICAgIENvbXBhY3RSZWZQdHI8RGVyaXZlZEFsaWduZWRSZWZMb2dnZXI+IHAxID0gJmE7CisgICAg
ICAgIENvbXBhY3RSZWZQdHI8QWxpZ25lZFJlZkxvZ2dlcj4gcDIgPSBwMTsKKyAgICAgICAgRVhQ
RUNUX0VRKCZhLCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcDIuZ2V0KCkpOwor
ICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSByZWYoYSkgZGVyZWYoYSkgZGVyZWYoYSkg
IiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAgeworICAgICAgICBDb21wYWN0UmVmUHRy
PERlcml2ZWRBbGlnbmVkUmVmTG9nZ2VyPiBwMSA9ICZhOworICAgICAgICBDb21wYWN0UmVmUHRy
PEFsaWduZWRSZWZMb2dnZXI+IHAyID0gV1RGTW92ZShwMSk7CisgICAgICAgIEVYUEVDVF9FUShu
dWxscHRyLCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcDIuZ2V0KCkpOworICAg
IH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19z
dHIoKSk7CisKKyAgICB7CisgICAgICAgIENvbXBhY3RSZWZQdHI8QWxpZ25lZFJlZkxvZ2dlcj4g
cHRyKCZhKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwdHIuZ2V0KCkpOworICAgICAgICBwdHIg
PSBudWxscHRyOworICAgICAgICBFWFBFQ1RfRVEobnVsbHB0ciwgcHRyLmdldCgpKTsKKyAgICB9
CisgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3Ry
KCkpOworCisgICAgeworICAgICAgICBDb21wYWN0UmVmUHRyPEFsaWduZWRSZWZMb2dnZXI+IHB0
cihudWxscHRyKTsKKyAgICAgICAgRVhQRUNUX0VRKG51bGxwdHIsIHB0ci5nZXQoKSk7CisgICAg
ICAgIEVYUEVDVF9FUShmYWxzZSwgc3RhdGljX2Nhc3Q8Ym9vbD4ocHRyKSk7CisgICAgfQorICAg
IEVYUEVDVF9TVFJFUSgiIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAgeworICAgICAg
ICBDb21wYWN0UmVmUHRyPEFsaWduZWRSZWZMb2dnZXI+IHB0ciA9IG51bGxwdHI7CisgICAgICAg
IEVYUEVDVF9FUShudWxscHRyLCBwdHIuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEodHJ1ZSwg
IXB0cik7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgiIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkp
OworfQorCitURVNUKFdURl9Db21wYWN0UmVmUHRyLCBBc3NpZ25QYXNzUmVmVG9Db21wYWN0UmVm
UHRyKQoreworICAgIERlcml2ZWRBbGlnbmVkUmVmTG9nZ2VyIGEoImEiKTsKKyAgICB7CisgICAg
ICAgIFJlZjxBbGlnbmVkUmVmTG9nZ2VyPiBwYXNzUmVmKGEpOworICAgICAgICBDb21wYWN0UmVm
UHRyPEFsaWduZWRSZWZMb2dnZXI+IHB0ciA9IFdURk1vdmUocGFzc1JlZik7CisgICAgICAgIEVY
UEVDVF9FUSgmYSwgcHRyLmdldCgpKTsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkg
ZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworfQorCitURVNUKFdURl9Db21wYWN0
UmVmUHRyLCBBZG9wdCkKK3sKKyAgICBEZXJpdmVkQWxpZ25lZFJlZkxvZ2dlciBhKCJhIik7CisK
KyAgICBDb21wYWN0UmVmUHRyPEFsaWduZWRSZWZMb2dnZXI+IGVtcHR5OworICAgIEVYUEVDVF9F
UShudWxscHRyLCBlbXB0eS5nZXQoKSk7CisKKyAgICB7CisgICAgICAgIENvbXBhY3RSZWZQdHI8
QWxpZ25lZFJlZkxvZ2dlcj4gcHRyKGFkb3B0UmVmKCZhKSk7CisgICAgICAgIEVYUEVDVF9FUSgm
YSwgcHRyLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCAmKnB0cik7CisgICAgICAgIEVY
UEVDVF9FUSgmYS5uYW1lLCAmcHRyLT5uYW1lKTsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJk
ZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7CisgICAgICAgIENvbXBh
Y3RSZWZQdHI8QWxpZ25lZFJlZkxvZ2dlcj4gcHRyID0gYWRvcHRSZWYoJmEpOworICAgICAgICBF
WFBFQ1RfRVEoJmEsIHB0ci5nZXQoKSk7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgiZGVyZWYo
YSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworfQorCitURVNUKFdURl9Db21wYWN0UmVmUHRy
LCBBc3NpZ25tZW50KQoreworICAgIERlcml2ZWRBbGlnbmVkUmVmTG9nZ2VyIGEoImEiKTsKKyAg
ICBBbGlnbmVkUmVmTG9nZ2VyIGIoImIiKTsKKyAgICBEZXJpdmVkQWxpZ25lZFJlZkxvZ2dlciBj
KCJjIik7CisKKyAgICB7CisgICAgICAgIENvbXBhY3RSZWZQdHI8QWxpZ25lZFJlZkxvZ2dlcj4g
cDEoJmEpOworICAgICAgICBDb21wYWN0UmVmUHRyPEFsaWduZWRSZWZMb2dnZXI+IHAyKCZiKTsK
KyAgICAgICAgRVhQRUNUX0VRKCZhLCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYiwg
cDIuZ2V0KCkpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAgICAgICBwMSA9IHAyOworICAg
ICAgICBFWFBFQ1RfRVEoJmIsIHAxLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZiLCBwMi5n
ZXQoKSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgi
cmVmKGEpIHJlZihiKSB8IHJlZihiKSBkZXJlZihhKSB8IGRlcmVmKGIpIGRlcmVmKGIpICIsIHRh
a2VMb2dTdHIoKS5jX3N0cigpKTsKKworICAgIHsKKyAgICAgICAgQ29tcGFjdFJlZlB0cjxBbGln
bmVkUmVmTG9nZ2VyPiBwdHIoJmEpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHB0ci5nZXQoKSk7
CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAgICAgIHB0ciA9ICZiOworICAgICAgICBFWFBF
Q1RfRVEoJmIsIHB0ci5nZXQoKSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAgfQorICAg
IEVYUEVDVF9TVFJFUSgicmVmKGEpIHwgcmVmKGIpIGRlcmVmKGEpIHwgZGVyZWYoYikgIiwgdGFr
ZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAgeworICAgICAgICBDb21wYWN0UmVmUHRyPEFsaWdu
ZWRSZWZMb2dnZXI+IHB0cigmYSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcHRyLmdldCgpKTsK
KyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICAgICAgcHRyID0gYWRvcHRSZWYoJmIpOworICAg
ICAgICBFWFBFQ1RfRVEoJmIsIHB0ci5nZXQoKSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7Cisg
ICAgfQorICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHwgZGVyZWYoYSkgfCBkZXJlZihiKSAiLCB0
YWtlTG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7CisgICAgICAgIENvbXBhY3RSZWZQdHI8QWxp
Z25lZFJlZkxvZ2dlcj4gcHRyKCZhKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwdHIuZ2V0KCkp
OworICAgICAgICBwdHIgPSBudWxscHRyOworICAgICAgICBFWFBFQ1RfRVEobnVsbHB0ciwgcHRy
LmdldCgpKTsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFr
ZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAgeworICAgICAgICBDb21wYWN0UmVmUHRyPEFsaWdu
ZWRSZWZMb2dnZXI+IHAxKCZhKTsKKyAgICAgICAgQ29tcGFjdFJlZlB0cjxBbGlnbmVkUmVmTG9n
Z2VyPiBwMigmYik7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcDEuZ2V0KCkpOworICAgICAgICBF
WFBFQ1RfRVEoJmIsIHAyLmdldCgpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICAgICAg
cDEgPSBXVEZNb3ZlKHAyKTsKKyAgICAgICAgRVhQRUNUX0VRKCZiLCBwMS5nZXQoKSk7CisgICAg
ICAgIEVYUEVDVF9FUShudWxscHRyLCBwMi5nZXQoKSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7
CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHJlZihiKSB8IGRlcmVmKGEpIHwgZGVy
ZWYoYikgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAgeworICAgICAgICBDb21wYWN0
UmVmUHRyPEFsaWduZWRSZWZMb2dnZXI+IHAxKCZhKTsKKyAgICAgICAgQ29tcGFjdFJlZlB0cjxE
ZXJpdmVkQWxpZ25lZFJlZkxvZ2dlcj4gcDIoJmMpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHAx
LmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZjLCBwMi5nZXQoKSk7CisgICAgICAgIGxvZygp
IDw8ICJ8ICI7CisgICAgICAgIHAxID0gcDI7CisgICAgICAgIEVYUEVDVF9FUSgmYywgcDEuZ2V0
KCkpOworICAgICAgICBFWFBFQ1RfRVEoJmMsIHAyLmdldCgpKTsKKyAgICAgICAgbG9nKCkgPDwg
InwgIjsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgcmVmKGMpIHwgcmVmKGMpIGRl
cmVmKGEpIHwgZGVyZWYoYykgZGVyZWYoYykgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisg
ICAgeworICAgICAgICBDb21wYWN0UmVmUHRyPEFsaWduZWRSZWZMb2dnZXI+IHB0cigmYSk7Cisg
ICAgICAgIEVYUEVDVF9FUSgmYSwgcHRyLmdldCgpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsK
KyAgICAgICAgcHRyID0gJmM7CisgICAgICAgIEVYUEVDVF9FUSgmYywgcHRyLmdldCgpKTsKKyAg
ICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgfCBy
ZWYoYykgZGVyZWYoYSkgfCBkZXJlZihjKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisKKyAg
ICB7CisgICAgICAgIENvbXBhY3RSZWZQdHI8QWxpZ25lZFJlZkxvZ2dlcj4gcHRyKCZhKTsKKyAg
ICAgICAgRVhQRUNUX0VRKCZhLCBwdHIuZ2V0KCkpOworICAgICAgICBsb2coKSA8PCAifCAiOwor
ICAgICAgICBwdHIgPSBhZG9wdFJlZigmYyk7CisgICAgICAgIEVYUEVDVF9FUSgmYywgcHRyLmdl
dCgpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJy
ZWYoYSkgfCBkZXJlZihhKSB8IGRlcmVmKGMpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKwor
ICAgIHsKKyAgICAgICAgQ29tcGFjdFJlZlB0cjxBbGlnbmVkUmVmTG9nZ2VyPiBwMSgmYSk7Cisg
ICAgICAgIENvbXBhY3RSZWZQdHI8RGVyaXZlZEFsaWduZWRSZWZMb2dnZXI+IHAyKCZjKTsKKyAg
ICAgICAgRVhQRUNUX0VRKCZhLCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYywgcDIu
Z2V0KCkpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAgICAgICBwMSA9IFdURk1vdmUocDIp
OworICAgICAgICBFWFBFQ1RfRVEoJmMsIHAxLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKG51
bGxwdHIsIHAyLmdldCgpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICB9CisgICAgRVhQ
RUNUX1NUUkVRKCJyZWYoYSkgcmVmKGMpIHwgZGVyZWYoYSkgfCBkZXJlZihjKSAiLCB0YWtlTG9n
U3RyKCkuY19zdHIoKSk7CisKKyAgICB7CisgICAgICAgIENvbXBhY3RSZWZQdHI8QWxpZ25lZFJl
ZkxvZ2dlcj4gcHRyKCZhKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwdHIuZ2V0KCkpOworICAg
ICAgICBsb2coKSA8PCAifCAiOworI2lmIENPTVBJTEVSKENMQU5HKQorI3ByYWdtYSBjbGFuZyBk
aWFnbm9zdGljIHB1c2gKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV3Vua25v
d24tcHJhZ21hcyIKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV3Vua25vd24t
d2FybmluZy1vcHRpb24iCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdzZWxm
LWFzc2lnbi1vdmVybG9hZGVkIgorI2VuZGlmCisgICAgICAgIHB0ciA9IHB0cjsKKyNpZiBDT01Q
SUxFUihDTEFORykKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKKyNlbmRpZgorICAgICAg
ICBFWFBFQ1RfRVEoJmEsIHB0ci5nZXQoKSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAg
fQorICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHwgcmVmKGEpIGRlcmVmKGEpIHwgZGVyZWYoYSkg
IiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAgeworICAgICAgICBDb21wYWN0UmVmUHRy
PEFsaWduZWRSZWZMb2dnZXI+IHB0cigmYSk7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcHRyLmdl
dCgpKTsKKyNpZiBDT01QSUxFUihDTEFORykKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNo
CisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVd1bmtub3duLXByYWdtYXMiCisj
cHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdzZWxmLW1vdmUiCisjZW5kaWYKKyAg
ICAgICAgcHRyID0gV1RGTW92ZShwdHIpOworI2lmIENPTVBJTEVSKENMQU5HKQorI3ByYWdtYSBj
bGFuZyBkaWFnbm9zdGljIHBvcAorI2VuZGlmCisgICAgICAgIEVYUEVDVF9FUSgmYSwgcHRyLmdl
dCgpKTsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxv
Z1N0cigpLmNfc3RyKCkpOworfQorCitURVNUKFdURl9Db21wYWN0UmVmUHRyLCBTd2FwKQorewor
ICAgIEFsaWduZWRSZWZMb2dnZXIgYSgiYSIpOworICAgIEFsaWduZWRSZWZMb2dnZXIgYigiYiIp
OworCisgICAgeworICAgICAgICBDb21wYWN0UmVmUHRyPEFsaWduZWRSZWZMb2dnZXI+IHAxKCZh
KTsKKyAgICAgICAgQ29tcGFjdFJlZlB0cjxBbGlnbmVkUmVmTG9nZ2VyPiBwMigmYik7CisgICAg
ICAgIGxvZygpIDw8ICJ8ICI7CisgICAgICAgIEVYUEVDVF9FUSgmYSwgcDEuZ2V0KCkpOworICAg
ICAgICBFWFBFQ1RfRVEoJmIsIHAyLmdldCgpKTsKKyAgICAgICAgcDEuc3dhcChwMik7CisgICAg
ICAgIEVYUEVDVF9FUSgmYiwgcDEuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHAyLmdl
dCgpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJy
ZWYoYSkgcmVmKGIpIHwgfCBkZXJlZihhKSBkZXJlZihiKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIo
KSk7CisKKyAgICB7CisgICAgICAgIENvbXBhY3RSZWZQdHI8QWxpZ25lZFJlZkxvZ2dlcj4gcDEo
JmEpOworICAgICAgICBDb21wYWN0UmVmUHRyPEFsaWduZWRSZWZMb2dnZXI+IHAyKCZiKTsKKyAg
ICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwMS5nZXQoKSk7Cisg
ICAgICAgIEVYUEVDVF9FUSgmYiwgcDIuZ2V0KCkpOworICAgICAgICBzdGQ6OnN3YXAocDEsIHAy
KTsKKyAgICAgICAgRVhQRUNUX0VRKCZiLCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUSgm
YSwgcDIuZ2V0KCkpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAgIH0KKyAgICBFWFBFQ1Rf
U1RSRVEoInJlZihhKSByZWYoYikgfCB8IGRlcmVmKGEpIGRlcmVmKGIpICIsIHRha2VMb2dTdHIo
KS5jX3N0cigpKTsKK30KKworVEVTVChXVEZfQ29tcGFjdFJlZlB0ciwgUmVsZWFzZU5vbk51bGwp
Cit7CisgICAgQWxpZ25lZFJlZkxvZ2dlciBhKCJhIik7CisKKyAgICB7CisgICAgICAgIENvbXBh
Y3RSZWZQdHI8QWxpZ25lZFJlZkxvZ2dlcj4gcmVmUHRyID0gJmE7CisgICAgICAgIENvbXBhY3RS
ZWZQdHI8QWxpZ25lZFJlZkxvZ2dlcj4gcmVmID0gcmVmUHRyLnJlbGVhc2VOb25OdWxsKCk7Cisg
ICAgfQorCisgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigp
LmNfc3RyKCkpOworfQorCitURVNUKFdURl9Db21wYWN0UmVmUHRyLCBSZWxlYXNlKQoreworICAg
IERlcml2ZWRBbGlnbmVkUmVmTG9nZ2VyIGEoImEiKTsKKyAgICBBbGlnbmVkUmVmTG9nZ2VyIGIo
ImIiKTsKKyAgICBEZXJpdmVkQWxpZ25lZFJlZkxvZ2dlciBjKCJjIik7CisKKyAgICB7CisgICAg
ICAgIENvbXBhY3RSZWZQdHI8QWxpZ25lZFJlZkxvZ2dlcj4gcDEgPSAmYTsKKyAgICAgICAgQ29t
cGFjdFJlZlB0cjxBbGlnbmVkUmVmTG9nZ2VyPiBwMiA9IFdURk1vdmUocDEpOworICAgICAgICBF
WFBFQ1RfRVEobnVsbHB0ciwgcDEuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHAyLmdl
dCgpKTsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxv
Z1N0cigpLmNfc3RyKCkpOworCisgICAgeworICAgICAgICBDb21wYWN0UmVmUHRyPEFsaWduZWRS
ZWZMb2dnZXI+IHAxID0gJmE7CisgICAgICAgIENvbXBhY3RSZWZQdHI8QWxpZ25lZFJlZkxvZ2dl
cj4gcDIoV1RGTW92ZShwMSkpOworICAgICAgICBFWFBFQ1RfRVEobnVsbHB0ciwgcDEuZ2V0KCkp
OworICAgICAgICBFWFBFQ1RfRVEoJmEsIHAyLmdldCgpKTsKKyAgICB9CisgICAgRVhQRUNUX1NU
UkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAgewor
ICAgICAgICBDb21wYWN0UmVmUHRyPERlcml2ZWRBbGlnbmVkUmVmTG9nZ2VyPiBwMSA9ICZhOwor
ICAgICAgICBDb21wYWN0UmVmUHRyPEFsaWduZWRSZWZMb2dnZXI+IHAyID0gV1RGTW92ZShwMSk7
CisgICAgICAgIEVYUEVDVF9FUShudWxscHRyLCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9F
USgmYSwgcDIuZ2V0KCkpOworICAgIH0KKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSBkZXJlZihh
KSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7CisgICAgICAgIENvbXBhY3RSZWZQ
dHI8QWxpZ25lZFJlZkxvZ2dlcj4gcDEoJmEpOworICAgICAgICBDb21wYWN0UmVmUHRyPEFsaWdu
ZWRSZWZMb2dnZXI+IHAyKCZiKTsKKyAgICAgICAgRVhQRUNUX0VRKCZhLCBwMS5nZXQoKSk7Cisg
ICAgICAgIEVYUEVDVF9FUSgmYiwgcDIuZ2V0KCkpOworICAgICAgICBsb2coKSA8PCAifCAiOwor
ICAgICAgICBwMSA9IFdURk1vdmUocDIpOworICAgICAgICBFWFBFQ1RfRVEoJmIsIHAxLmdldCgp
KTsKKyAgICAgICAgRVhQRUNUX0VRKG51bGxwdHIsIHAyLmdldCgpKTsKKyAgICAgICAgbG9nKCkg
PDwgInwgIjsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgcmVmKGIpIHwgZGVyZWYo
YSkgfCBkZXJlZihiKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7CisgICAgICAg
IENvbXBhY3RSZWZQdHI8QWxpZ25lZFJlZkxvZ2dlcj4gcDEoJmEpOworICAgICAgICBDb21wYWN0
UmVmUHRyPERlcml2ZWRBbGlnbmVkUmVmTG9nZ2VyPiBwMigmYyk7CisgICAgICAgIEVYUEVDVF9F
USgmYSwgcDEuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEoJmMsIHAyLmdldCgpKTsKKyAgICAg
ICAgbG9nKCkgPDwgInwgIjsKKyAgICAgICAgcDEgPSBXVEZNb3ZlKHAyKTsKKyAgICAgICAgRVhQ
RUNUX0VRKCZjLCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUShudWxscHRyLCBwMi5nZXQo
KSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgicmVm
KGEpIHJlZihjKSB8IGRlcmVmKGEpIHwgZGVyZWYoYykgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkp
OworfQorCitzdGF0aWMgQ29tcGFjdFJlZlB0cjxBbGlnbmVkUmVmTG9nZ2VyPiBmMShBbGlnbmVk
UmVmTG9nZ2VyJiBsb2dnZXIpCit7CisgICAgcmV0dXJuIENvbXBhY3RSZWZQdHI8QWxpZ25lZFJl
ZkxvZ2dlcj4oJmxvZ2dlcik7Cit9CisKK1RFU1QoV1RGX0NvbXBhY3RSZWZQdHIsIFJldHVyblZh
bHVlKQoreworICAgIERlcml2ZWRBbGlnbmVkUmVmTG9nZ2VyIGEoImEiKTsKKworICAgIHsKKyAg
ICAgICAgZjEoYSk7CisgICAgfQorICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIGRlcmVmKGEpICIs
IHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKworICAgIHsKKyAgICAgICAgYXV0byBwdHIgPSBmMShh
KTsKKyAgICB9CisgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0
cigpLmNfc3RyKCkpOworfQorCitzdHJ1Y3QgYWxpZ25hcygxNikgQ29uc3RSZWZDb3VudGVkCisg
ICAgOiBSZWZDb3VudGVkPENvbnN0UmVmQ291bnRlZD4geworICAgIHN0YXRpYyBSZWY8Q29uc3RS
ZWZDb3VudGVkPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IENvbnN0UmVmQ291bnRl
ZCk7IH0KK307CisKK3N0YXRpYyBjb25zdCBDb25zdFJlZkNvdW50ZWQmIHJldHVybkNvbnN0UmVm
Q291bnRlZFJlZigpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPENvbnN0UmVmQ291bnRl
ZD4gaW5zdGFuY2U7CisgICAgcmV0dXJuIGluc3RhbmNlLmdldCgpOworfQorc3RhdGljIENvbnN0
UmVmQ291bnRlZCYgcmV0dXJuUmVmQ291bnRlZFJlZigpCit7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPENvbnN0UmVmQ291bnRlZD4gaW5zdGFuY2U7CisgICAgcmV0dXJuIGluc3RhbmNlLmdl
dCgpOworfQorCitURVNUKFdURl9Db21wYWN0UmVmUHRyLCBDb25zdCkKK3sKKyAgICAvLyBUaGlz
IHRlc3QgcGFzc2VzIGlmIGl0IGNvbXBpbGVzIHdpdGhvdXQgYW4gZXJyb3IuCisgICAgYXV0byBh
ID0gQ29uc3RSZWZDb3VudGVkOjpjcmVhdGUoKTsKKyAgICBSZWY8Y29uc3QgQ29uc3RSZWZDb3Vu
dGVkPiBiID0gV1RGTW92ZShhKTsKKyAgICBDb21wYWN0UmVmUHRyPGNvbnN0IENvbnN0UmVmQ291
bnRlZD4gYyA9IGIucHRyKCk7CisgICAgUmVmPGNvbnN0IENvbnN0UmVmQ291bnRlZD4gZCA9IHJl
dHVybkNvbnN0UmVmQ291bnRlZFJlZigpOworICAgIENvbXBhY3RSZWZQdHI8Y29uc3QgQ29uc3RS
ZWZDb3VudGVkPiBlID0gJnJldHVybkNvbnN0UmVmQ291bnRlZFJlZigpOworICAgIENvbXBhY3RS
ZWZQdHI8Q29uc3RSZWZDb3VudGVkPiBmID0gQ29uc3RSZWZDb3VudGVkOjpjcmVhdGUoKTsKKyAg
ICBDb21wYWN0UmVmUHRyPGNvbnN0IENvbnN0UmVmQ291bnRlZD4gZyA9IGY7CisgICAgQ29tcGFj
dFJlZlB0cjxjb25zdCBDb25zdFJlZkNvdW50ZWQ+IGgoZik7CisgICAgUmVmPGNvbnN0IENvbnN0
UmVmQ291bnRlZD4gaShyZXR1cm5SZWZDb3VudGVkUmVmKCkpOworfQorCitzdHJ1Y3QgQ29tcGFj
dFJlZlB0ckNoZWNraW5nQWxpZ25lZFJlZkxvZ2dlciA6IEFsaWduZWRSZWZMb2dnZXIgeworICAg
IENvbXBhY3RSZWZQdHJDaGVja2luZ0FsaWduZWRSZWZMb2dnZXIoY29uc3QgY2hhciogbmFtZSk7
CisgICAgdm9pZCByZWYoKTsKKyAgICB2b2lkIGRlcmVmKCk7CisgICAgY29uc3QgQ29tcGFjdFJl
ZlB0cjxDb21wYWN0UmVmUHRyQ2hlY2tpbmdBbGlnbmVkUmVmTG9nZ2VyPiogc2xvdFRvQ2hlY2sg
eyBudWxscHRyIH07Cit9OworCitDb21wYWN0UmVmUHRyQ2hlY2tpbmdBbGlnbmVkUmVmTG9nZ2Vy
OjpDb21wYWN0UmVmUHRyQ2hlY2tpbmdBbGlnbmVkUmVmTG9nZ2VyKGNvbnN0IGNoYXIqIG5hbWUp
CisgICAgOiBBbGlnbmVkUmVmTG9nZ2VyIHsgbmFtZSB9Cit7Cit9CisKK3N0YXRpYyBjb25zdCBj
aGFyKiBsb2dnZXJOYW1lKGNvbnN0IENvbXBhY3RSZWZQdHI8Q29tcGFjdFJlZlB0ckNoZWNraW5n
QWxpZ25lZFJlZkxvZ2dlcj4mIHBvaW50ZXIpCit7CisgICAgcmV0dXJuIHBvaW50ZXIgPyAmcG9p
bnRlci0+bmFtZSA6ICJudWxsIjsKK30KKwordm9pZCBDb21wYWN0UmVmUHRyQ2hlY2tpbmdBbGln
bmVkUmVmTG9nZ2VyOjpyZWYoKQoreworICAgIGlmIChzbG90VG9DaGVjaykKKyAgICAgICAgbG9n
KCkgPDwgInNsb3Q9IiA8PCBsb2dnZXJOYW1lKCpzbG90VG9DaGVjaykgPDwgIiAiOworICAgIEFs
aWduZWRSZWZMb2dnZXI6OnJlZigpOworfQorCit2b2lkIENvbXBhY3RSZWZQdHJDaGVja2luZ0Fs
aWduZWRSZWZMb2dnZXI6OmRlcmVmKCkKK3sKKyAgICBpZiAoc2xvdFRvQ2hlY2spCisgICAgICAg
IGxvZygpIDw8ICJzbG90PSIgPDwgbG9nZ2VyTmFtZSgqc2xvdFRvQ2hlY2spIDw8ICIgIjsKKyAg
ICBBbGlnbmVkUmVmTG9nZ2VyOjpkZXJlZigpOworfQorCitURVNUKFdURl9Db21wYWN0UmVmUHRy
LCBBc3NpZ25CZWZvcmVEZXJlZikKK3sKKyAgICBDb21wYWN0UmVmUHRyQ2hlY2tpbmdBbGlnbmVk
UmVmTG9nZ2VyIGEoImEiKTsKKyAgICBDb21wYWN0UmVmUHRyQ2hlY2tpbmdBbGlnbmVkUmVmTG9n
Z2VyIGIoImIiKTsKKworICAgIHsKKyAgICAgICAgQ29tcGFjdFJlZlB0cjxDb21wYWN0UmVmUHRy
Q2hlY2tpbmdBbGlnbmVkUmVmTG9nZ2VyPiBwMSgmYSk7CisgICAgICAgIENvbXBhY3RSZWZQdHI8
Q29tcGFjdFJlZlB0ckNoZWNraW5nQWxpZ25lZFJlZkxvZ2dlcj4gcDIoJmIpOworICAgICAgICBF
WFBFQ1RfRVEoJmEsIHAxLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZiLCBwMi5nZXQoKSk7
CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAgICAgIGEuc2xvdFRvQ2hlY2sgPSAmcDE7Cisg
ICAgICAgIGIuc2xvdFRvQ2hlY2sgPSAmcDE7CisgICAgICAgIHAxID0gcDI7CisgICAgICAgIGEu
c2xvdFRvQ2hlY2sgPSBudWxscHRyOworICAgICAgICBiLnNsb3RUb0NoZWNrID0gbnVsbHB0cjsK
KyAgICAgICAgRVhQRUNUX0VRKCZiLCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUSgmYiwg
cDIuZ2V0KCkpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAgIH0KKyAgICBFWFBFQ1RfU1RS
RVEoInJlZihhKSByZWYoYikgfCBzbG90PWEgcmVmKGIpIHNsb3Q9YiBkZXJlZihhKSB8IGRlcmVm
KGIpIGRlcmVmKGIpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKworICAgIHsKKyAgICAgICAg
Q29tcGFjdFJlZlB0cjxDb21wYWN0UmVmUHRyQ2hlY2tpbmdBbGlnbmVkUmVmTG9nZ2VyPiBwdHIo
JmEpOworICAgICAgICBFWFBFQ1RfRVEoJmEsIHB0ci5nZXQoKSk7CisgICAgICAgIGxvZygpIDw8
ICJ8ICI7CisgICAgICAgIGEuc2xvdFRvQ2hlY2sgPSAmcHRyOworICAgICAgICBiLnNsb3RUb0No
ZWNrID0gJnB0cjsKKyAgICAgICAgcHRyID0gJmI7CisgICAgICAgIGEuc2xvdFRvQ2hlY2sgPSBu
dWxscHRyOworICAgICAgICBiLnNsb3RUb0NoZWNrID0gbnVsbHB0cjsKKyAgICAgICAgRVhQRUNU
X0VRKCZiLCBwdHIuZ2V0KCkpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAgIH0KKyAgICBF
WFBFQ1RfU1RSRVEoInJlZihhKSB8IHNsb3Q9YSByZWYoYikgc2xvdD1iIGRlcmVmKGEpIHwgZGVy
ZWYoYikgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAgeworICAgICAgICBDb21wYWN0
UmVmUHRyPENvbXBhY3RSZWZQdHJDaGVja2luZ0FsaWduZWRSZWZMb2dnZXI+IHB0cigmYSk7Cisg
ICAgICAgIEVYUEVDVF9FUSgmYSwgcHRyLmdldCgpKTsKKyAgICAgICAgYS5zbG90VG9DaGVjayA9
ICZwdHI7CisgICAgICAgIHB0ciA9IG51bGxwdHI7CisgICAgICAgIGEuc2xvdFRvQ2hlY2sgPSBu
dWxscHRyOworICAgICAgICBFWFBFQ1RfRVEobnVsbHB0ciwgcHRyLmdldCgpKTsKKyAgICB9Cisg
ICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgc2xvdD1udWxsIGRlcmVmKGEpICIsIHRha2VMb2dTdHIo
KS5jX3N0cigpKTsKKworICAgIHsKKyAgICAgICAgQ29tcGFjdFJlZlB0cjxDb21wYWN0UmVmUHRy
Q2hlY2tpbmdBbGlnbmVkUmVmTG9nZ2VyPiBwMSgmYSk7CisgICAgICAgIENvbXBhY3RSZWZQdHI8
Q29tcGFjdFJlZlB0ckNoZWNraW5nQWxpZ25lZFJlZkxvZ2dlcj4gcDIoJmIpOworICAgICAgICBF
WFBFQ1RfRVEoJmEsIHAxLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKCZiLCBwMi5nZXQoKSk7
CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAgICAgIGEuc2xvdFRvQ2hlY2sgPSAmcDE7Cisg
ICAgICAgIGIuc2xvdFRvQ2hlY2sgPSAmcDE7CisgICAgICAgIHAxID0gV1RGTW92ZShwMik7Cisg
ICAgICAgIGEuc2xvdFRvQ2hlY2sgPSBudWxscHRyOworICAgICAgICBiLnNsb3RUb0NoZWNrID0g
bnVsbHB0cjsKKyAgICAgICAgRVhQRUNUX0VRKCZiLCBwMS5nZXQoKSk7CisgICAgICAgIEVYUEVD
VF9FUShudWxscHRyLCBwMi5nZXQoKSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7CisgICAgfQor
ICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHJlZihiKSB8IHNsb3Q9YiBkZXJlZihhKSB8IGRlcmVm
KGIpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKK30KKworVEVTVChXVEZfQ29tcGFjdFJlZlB0
ciwgUmVsZWFzZU5vbk51bGxCZWZvcmVEZXJlZikKK3sKKyAgICBDb21wYWN0UmVmUHRyQ2hlY2tp
bmdBbGlnbmVkUmVmTG9nZ2VyIGEoImEiKTsKKworICAgIHsKKyAgICAgICAgQ29tcGFjdFJlZlB0
cjxDb21wYWN0UmVmUHRyQ2hlY2tpbmdBbGlnbmVkUmVmTG9nZ2VyPiByZWZQdHIgPSAmYTsKKyAg
ICAgICAgYS5zbG90VG9DaGVjayA9ICZyZWZQdHI7CisgICAgICAgIHJlZlB0ci5yZWxlYXNlTm9u
TnVsbCgpOworICAgICAgICBhLnNsb3RUb0NoZWNrID0gbnVsbHB0cjsKKyAgICB9CisKKyAgICBF
WFBFQ1RfU1RSRVEoInJlZihhKSBzbG90PW51bGwgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNf
c3RyKCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9KU09OVmFsdWUuY3BwIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvSlNPTlZhbHVlLmNwcAppbmRleCBiMDZhYjhiYmJjZDEuLjk4YjIy
NDJmZWNjZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSlNPTlZh
bHVlLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9KU09OVmFsdWUuY3Bw
CkBAIC03MDAsMTQgKzcwMCwxNCBAQCBURVNUKEpTT05WYWx1ZSwgTWVtb3J5Q29zdCkKICAgICAg
ICAgUmVmPEpTT046OlZhbHVlPiB2YWx1ZSA9IEpTT046OlZhbHVlOjpjcmVhdGUobWFrZVN0cmlu
ZygidGVzdCJfcykpOwogICAgICAgICBzaXplX3QgbWVtb3J5Q29zdCA9IHZhbHVlLT5tZW1vcnlD
b3N0KCk7CiAgICAgICAgIEVYUEVDVF9HVChtZW1vcnlDb3N0LCAwVSk7Ci0gICAgICAgIEVYUEVD
VF9MRShtZW1vcnlDb3N0LCAzNlUpOworICAgICAgICBFWFBFQ1RfTEUobWVtb3J5Q29zdCwgNDRV
KTsKICAgICB9CiAKICAgICB7CiAgICAgICAgIFJlZjxKU09OOjpWYWx1ZT4gdmFsdWUgPSBKU09O
OjpWYWx1ZTo6Y3JlYXRlKGVtcHR5U3RyaW5nKCkpOwogICAgICAgICBzaXplX3QgbWVtb3J5Q29z
dCA9IHZhbHVlLT5tZW1vcnlDb3N0KCk7CiAgICAgICAgIEVYUEVDVF9HVChtZW1vcnlDb3N0LCAw
VSk7Ci0gICAgICAgIEVYUEVDVF9MRShtZW1vcnlDb3N0LCAzMlUpOworICAgICAgICBFWFBFQ1Rf
TEUobWVtb3J5Q29zdCwgNDBVKTsKICAgICB9CiAKICAgICB7Ci0tIAoyLjMyLjAgKEFwcGxlIEdp
dC0xMzIpCgo=
</data>
<flag name="commit-queue"
          id="488821"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>