<?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>201159</bug_id>
          
          <creation_ts>2019-08-26 16:23:53 -0700</creation_ts>
          <short_desc>[JSC] Generator should have internal fields</short_desc>
          <delta_ts>2019-09-17 22:02:51 -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>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>ross.kirsling</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1565149</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-08-26 16:23:53 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1565150</commentid>
    <comment_count>1</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-08-26 16:24:10 -0700</bug_when>
    <thetext>And they should have `create_generator` / `new_generator` etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1565266</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-08-26 22:50:24 -0700</bug_when>
    <thetext>&lt;rdar://problem/54736322&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568042</commentid>
    <comment_count>3</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-09-05 00:24:15 -0700</bug_when>
    <thetext>Separate async-generator and generator.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568079</commentid>
    <comment_count>4</comment_count>
      <attachid>378069</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-09-05 02:39:20 -0700</bug_when>
    <thetext>Created attachment 378069
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568084</commentid>
    <comment_count>5</comment_count>
      <attachid>378071</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-09-05 03:08:16 -0700</bug_when>
    <thetext>Created attachment 378071
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568212</commentid>
    <comment_count>6</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-09-05 13:00:13 -0700</bug_when>
    <thetext>The patch is getting larger and larger, I&apos;ll split this to InternalField access renaming patch first to make it small.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568709</commentid>
    <comment_count>7</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-09-06 14:41:03 -0700</bug_when>
    <thetext>It turned out that only changing Generator causes super complicated code. We should change generator and async-generator at once.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568813</commentid>
    <comment_count>8</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-09-06 19:56:53 -0700</bug_when>
    <thetext>AsyncGenerator thing makes the patch too larger. Do generator thing first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568815</commentid>
    <comment_count>9</comment_count>
      <attachid>378267</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-09-06 20:08:41 -0700</bug_when>
    <thetext>Created attachment 378267
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568841</commentid>
    <comment_count>10</comment_count>
      <attachid>378267</attachid>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-09-06 22:29:58 -0700</bug_when>
    <thetext>Comment on attachment 378267
Patch

Attachment 378267 did not pass jsc-ews (mac):
Output: https://webkit-queues.webkit.org/results/13008638

New failing tests:
stress/object-assign-fast-path.js.no-cjit-collect-continuously
stress/async-arrow-functions-lexical-super-binding.js.ftl-eager
stress/async-arrow-functions-lexical-super-binding.js.dfg-eager-no-cjit-validate
stress/async-arrow-functions-lexical-super-binding.js.ftl-eager-no-cjit
stress/async-arrow-functions-lexical-super-binding.js.bytecode-cache
stress/async-arrow-functions-lexical-super-binding.js.mini-mode
stress/object-assign-fast-path.js.bytecode-cache
stress/test-out-of-memory.js.ftl-eager-no-cjit
stress/async-arrow-functions-lexical-super-binding.js.ftl-no-cjit-b3o0
stress/async-arrow-functions-lexical-super-binding.js.no-cjit-collect-continuously
stress/async-arrow-functions-lexical-super-binding.js.no-cjit-validate-phases
stress/object-assign-fast-path.js.eager-jettison-no-cjit
stress/test-out-of-memory.js.no-cjit-collect-continuously
stress/object-assign-fast-path.js.ftl-eager-no-cjit-b3o1
stress/async-arrow-functions-lexical-binding-in-class.js.mini-mode
stress/async-arrow-functions-lexical-binding-in-class.js.ftl-no-cjit-validate-sampling-profiler
stress/object-assign-fast-path.js.no-ftl
stress/async-arrow-functions-lexical-super-binding.js.no-ftl
stress/object-assign-fast-path.js.dfg-eager-no-cjit-validate
stress/async-arrow-functions-lexical-binding-in-class.js.no-cjit-collect-continuously
stress/object-assign-fast-path.js.ftl-no-cjit-b3o0
stress/async-arrow-functions-lexical-binding-in-class.js.bytecode-cache
stress/object-assign-fast-path.js.ftl-no-cjit-no-inline-validate
stress/object-assign-fast-path.js.ftl-no-cjit-validate-sampling-profiler
stress/async-arrow-functions-lexical-binding-in-class.js.ftl-no-cjit-b3o0
stress/async-arrow-functions-lexical-binding-in-class.js.ftl-no-cjit-no-put-stack-validate
stress/object-assign-fast-path.js.mini-mode
stress/async-arrow-functions-lexical-super-binding.js.ftl-no-cjit-no-inline-validate
stress/object-assign-fast-path.js.ftl-eager-no-cjit
stress/object-assign-fast-path.js.ftl-no-cjit-small-pool
stress/async-arrow-functions-lexical-super-binding.js.default
stress/async-arrow-functions-lexical-super-binding.js.dfg-eager
stress/async-arrow-functions-lexical-binding-in-class.js.ftl-no-cjit-small-pool
stress/async-arrow-functions-lexical-binding-in-class.js.eager-jettison-no-cjit
stress/async-arrow-functions-lexical-super-binding.js.ftl-no-cjit-small-pool
stress/async-arrow-functions-lexical-super-binding.js.ftl-eager-no-cjit-b3o1
stress/object-assign-fast-path.js.ftl-eager
stress/async-arrow-functions-lexical-super-binding.js.no-llint
stress/object-assign-fast-path.js.dfg-eager
stress/async-arrow-functions-lexical-binding-in-class.js.ftl-no-cjit-no-inline-validate
stress/async-arrow-functions-lexical-binding-in-class.js.no-ftl
stress/object-assign-fast-path.js.ftl-no-cjit-no-put-stack-validate
stress/async-arrow-functions-lexical-binding-in-class.js.ftl-eager-no-cjit-b3o1
stress/object-assign-fast-path.js.no-cjit-validate-phases
stress/async-arrow-functions-lexical-super-binding.js.ftl-no-cjit-no-put-stack-validate
stress/async-arrow-functions-lexical-binding-in-class.js.no-cjit-validate-phases
stress/test-out-of-memory.js.ftl-eager
stress/async-arrow-functions-lexical-super-binding.js.ftl-no-cjit-validate-sampling-profiler
stress/object-assign-fast-path.js.default
stress/object-assign-fast-path.js.no-llint
stress/async-arrow-functions-lexical-super-binding.js.eager-jettison-no-cjit
stress/async-arrow-functions-lexical-binding-in-class.js.default
stress/async-arrow-functions-lexical-binding-in-class.js.no-llint
stress/test-out-of-memory.js.dfg-eager</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568856</commentid>
    <comment_count>11</comment_count>
      <attachid>378286</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-09-07 01:47:16 -0700</bug_when>
    <thetext>Created attachment 378286
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568869</commentid>
    <comment_count>12</comment_count>
      <attachid>378286</attachid>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-09-07 04:09:31 -0700</bug_when>
    <thetext>Comment on attachment 378286
Patch

Attachment 378286 did not pass jsc-ews (mac):
Output: https://webkit-queues.webkit.org/results/13009592

New failing tests:
stress/object-assign-fast-path.js.no-cjit-collect-continuously
stress/object-assign-fast-path.js.no-ftl
stress/object-assign-fast-path.js.bytecode-cache
stress/disable-gigacage-strings.js.disable-gigacage
stress/object-assign-fast-path.js.eager-jettison-no-cjit
stress/test-out-of-memory.js.no-cjit-collect-continuously
stress/object-assign-fast-path.js.ftl-eager-no-cjit-b3o1
stress/object-assign-fast-path.js.dfg-eager-no-cjit-validate
stress/object-assign-fast-path.js.ftl-no-cjit-b3o0
stress/object-assign-fast-path.js.ftl-no-cjit-no-inline-validate
stress/object-assign-fast-path.js.ftl-no-cjit-validate-sampling-profiler
stress/object-assign-fast-path.js.mini-mode
stress/object-assign-fast-path.js.ftl-eager-no-cjit
stress/disable-gigacage-typed-arrays.js.disable-gigacage
stress/object-assign-fast-path.js.ftl-no-cjit-small-pool
stress/disable-gigacage-arrays.js.disable-gigacage
stress/test-out-of-memory.js.dfg-eager-no-cjit-validate
stress/test-out-of-memory.js.ftl-eager-no-cjit
stress/object-assign-fast-path.js.ftl-eager
stress/object-assign-fast-path.js.dfg-eager
stress/object-assign-fast-path.js.ftl-no-cjit-no-put-stack-validate
stress/object-assign-fast-path.js.no-cjit-validate-phases
stress/test-out-of-memory.js.ftl-eager
stress/object-assign-fast-path.js.default
stress/object-assign-fast-path.js.no-llint</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569083</commentid>
    <comment_count>13</comment_count>
      <attachid>378353</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-09-09 00:43:31 -0700</bug_when>
    <thetext>Created attachment 378353
Patch

JSGenerator + PolyProto support, but I&apos;ll split PolyProto support from this patch later. But this support is necessary later since generator tends to have poly proto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569084</commentid>
    <comment_count>14</comment_count>
      <attachid>378354</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-09-09 00:45:52 -0700</bug_when>
    <thetext>Created attachment 378354
Patch

JSGenerator without PolyProto support. I would like to go with this patch first</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569103</commentid>
    <comment_count>15</comment_count>
      <attachid>378357</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-09-09 02:19:02 -0700</bug_when>
    <thetext>Created attachment 378357
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569116</commentid>
    <comment_count>16</comment_count>
      <attachid>378357</attachid>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-09-09 04:40:51 -0700</bug_when>
    <thetext>Comment on attachment 378357
Patch

Attachment 378357 did not pass jsc-ews (mac):
Output: https://webkit-queues.webkit.org/results/13016386

New failing tests:
stress/object-assign-fast-path.js.no-cjit-collect-continuously
stress/object-assign-fast-path.js.ftl-eager-no-cjit
stress/object-assign-fast-path.js.ftl-no-cjit-small-pool
stress/object-assign-fast-path.js.no-ftl
stress/object-assign-fast-path.js.ftl-no-cjit-no-put-stack-validate
stress/object-assign-fast-path.js.eager-jettison-no-cjit
stress/object-assign-fast-path.js.bytecode-cache
stress/object-assign-fast-path.js.dfg-eager-no-cjit-validate
stress/object-assign-fast-path.js.no-cjit-validate-phases
stress/object-assign-fast-path.js.dfg-eager
stress/object-assign-fast-path.js.ftl-no-cjit-b3o0
stress/object-assign-fast-path.js.default
stress/object-assign-fast-path.js.ftl-no-cjit-validate-sampling-profiler
stress/object-assign-fast-path.js.ftl-no-cjit-no-inline-validate
stress/object-assign-fast-path.js.ftl-eager
stress/object-assign-fast-path.js.no-llint
stress/object-assign-fast-path.js.ftl-eager-no-cjit-b3o1
stress/object-assign-fast-path.js.mini-mode</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569323</commentid>
    <comment_count>17</comment_count>
      <attachid>378412</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-09-09 15:48:54 -0700</bug_when>
    <thetext>Created attachment 378412
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569348</commentid>
    <comment_count>18</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-09-09 16:43:56 -0700</bug_when>
    <thetext>*** Bug 151545 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1571061</commentid>
    <comment_count>19</comment_count>
      <attachid>378852</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-09-16 03:42:12 -0700</bug_when>
    <thetext>Created attachment 378852
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1571182</commentid>
    <comment_count>20</comment_count>
      <attachid>378875</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-09-16 11:12:35 -0700</bug_when>
    <thetext>Created attachment 378875
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1571612</commentid>
    <comment_count>21</comment_count>
      <attachid>378875</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2019-09-17 12:03:24 -0700</bug_when>
    <thetext>Comment on attachment 378875
Patch

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

r=me with comments.

&gt; Source/JavaScriptCore/ChangeLog:14
&gt; +        If we make these structures adaptively poly-proto ones, some generators get poly-proto structures while others are not, resulting
&gt; +        in megamorphic lookup in Generator.prototype.next. If we make all the generator&apos;s structure poly-proto ones, it makes Generator.prototype.next
&gt; +        lookup suboptimal for now.

Nit: poly-proto ones -&gt; poly-proto. 

while others do not,

&gt; Source/JavaScriptCore/ChangeLog:18
&gt; +        In this patch, we start with relatively simple way. This patch introduces JSGenerator class, and it has internal fields for generator&apos;s internal
&gt; +        states. We extend promise-internal-field access bytecodes to access to these fields from bytecode so that Generator.prototype.next can access
&gt; +        these fields without using megamorphic get_by_id_direct.

Nit: start with relatively simple way =&gt; start with a relatively simple solution

&gt; Source/JavaScriptCore/ChangeLog:20
&gt; +        And we can attach JSGeneratorType to JSGenerator so that we can efficiently implement `@isGenerator()` check in bytecode.

Nit: we can attach =&gt; we attach

&gt; Source/JavaScriptCore/ChangeLog:27
&gt; +        Currently, we start having op_create_generator since it could be different from create_promise when we add PolyProto support. But when adding create_async_generator-like
&gt; +        thing, we will introduce one abstracted bytecode for both create_generator and create_async_generator to efficiently support both.

Nit: I would probably phrase this as This patch adds op_create_generator since it is distinct from op_create_promise once we add PolyProto support. In the future when we introduce some kind of op_create_async_generator we will probably share only one bytecode for both generator and async generator.

&gt; Source/JavaScriptCore/bytecode/BytecodeIntrinsicRegistry.cpp:80
&gt; +    m_generatorFieldState.set(m_vm, jsNumber(static_cast&lt;unsigned&gt;(JSGenerator::Field::State)));
&gt; +    m_generatorFieldNext.set(m_vm, jsNumber(static_cast&lt;unsigned&gt;(JSGenerator::Field::Next)));
&gt; +    m_generatorFieldThis.set(m_vm, jsNumber(static_cast&lt;unsigned&gt;(JSGenerator::Field::This)));
&gt; +    m_generatorFieldFrame.set(m_vm, jsNumber(static_cast&lt;unsigned&gt;(JSGenerator::Field::Frame)));

Hmm, it feels like we should simplify this because we have so many of these now... I wish we could combine all the offset registries (FTLOffset, LLInt offsets, and this) into one class...

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:4989
&gt; +                            addToGraph(Phantom, callee);

Doesn&apos;t this need to be after the NewGenerator? If we exit in NewGenerator then we won&apos;t be able to recover callee correct? Callee&apos;s Phantom has already passed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1571681</commentid>
    <comment_count>22</comment_count>
      <attachid>378875</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2019-09-17 14:07:39 -0700</bug_when>
    <thetext>Comment on attachment 378875
Patch

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

&gt; Source/JavaScriptCore/runtime/JSGenerator.cpp:32
&gt; +#include &quot;BuiltinNames.h&quot;
&gt; +#include &quot;Error.h&quot;
&gt; +#include &quot;JSCInlines.h&quot;
&gt; +#include &quot;JSFunction.h&quot;

This compiles without any of these four (though JSCInlines should still be required for non-unified, I believe).

&gt; Source/JavaScriptCore/runtime/JSGenerator.h:32
&gt; +class JSFunction;

This seems to be unused.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1571784</commentid>
    <comment_count>23</comment_count>
      <attachid>378875</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-09-17 19:56:05 -0700</bug_when>
    <thetext>Comment on attachment 378875
Patch

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

Thanks!

&gt;&gt; Source/JavaScriptCore/ChangeLog:14
&gt;&gt; +        lookup suboptimal for now.
&gt; 
&gt; Nit: poly-proto ones -&gt; poly-proto. 
&gt; 
&gt; while others do not,

Fixed.

&gt;&gt; Source/JavaScriptCore/ChangeLog:18
&gt;&gt; +        these fields without using megamorphic get_by_id_direct.
&gt; 
&gt; Nit: start with relatively simple way =&gt; start with a relatively simple solution

Fixed.

&gt;&gt; Source/JavaScriptCore/ChangeLog:20
&gt;&gt; +        And we can attach JSGeneratorType to JSGenerator so that we can efficiently implement `@isGenerator()` check in bytecode.
&gt; 
&gt; Nit: we can attach =&gt; we attach

Fixed.

&gt;&gt; Source/JavaScriptCore/ChangeLog:27
&gt;&gt; +        thing, we will introduce one abstracted bytecode for both create_generator and create_async_generator to efficiently support both.
&gt; 
&gt; Nit: I would probably phrase this as This patch adds op_create_generator since it is distinct from op_create_promise once we add PolyProto support. In the future when we introduce some kind of op_create_async_generator we will probably share only one bytecode for both generator and async generator.

Fixed.

&gt;&gt; Source/JavaScriptCore/bytecode/BytecodeIntrinsicRegistry.cpp:80
&gt;&gt; +    m_generatorFieldFrame.set(m_vm, jsNumber(static_cast&lt;unsigned&gt;(JSGenerator::Field::Frame)));
&gt; 
&gt; Hmm, it feels like we should simplify this because we have so many of these now... I wish we could combine all the offset registries (FTLOffset, LLInt offsets, and this) into one class...

Sounds nice. I&apos;ll open a bug for now.

&gt;&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:4989
&gt;&gt; +                            addToGraph(Phantom, callee);
&gt; 
&gt; Doesn&apos;t this need to be after the NewGenerator? If we exit in NewGenerator then we won&apos;t be able to recover callee correct? Callee&apos;s Phantom has already passed.

Fixed, and do the same thing for CreateThis etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1571786</commentid>
    <comment_count>24</comment_count>
      <attachid>378875</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-09-17 19:57:54 -0700</bug_when>
    <thetext>Comment on attachment 378875
Patch

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

&gt;&gt; Source/JavaScriptCore/runtime/JSGenerator.cpp:32
&gt;&gt; +#include &quot;JSFunction.h&quot;
&gt; 
&gt; This compiles without any of these four (though JSCInlines should still be required for non-unified, I believe).

Fixed.

&gt;&gt; Source/JavaScriptCore/runtime/JSGenerator.h:32
&gt;&gt; +class JSFunction;
&gt; 
&gt; This seems to be unused.

Removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1571815</commentid>
    <comment_count>25</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-09-17 22:02:51 -0700</bug_when>
    <thetext>Committed r250025: &lt;https://trac.webkit.org/changeset/250025&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378069</attachid>
            <date>2019-09-05 02:39:20 -0700</date>
            <delta_ts>2019-09-05 03:08:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201159-20190905023919.patch</filename>
            <type>text/plain</type>
            <size>64362</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5NTI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
MjMxNjQyZjY2M2ZjMzViZTdiZWQzMmYzOWFlODRkMzk1NGRkOTJhLi41NThmMTk5YTQxYTU3Y2Y4
NzNlNGIyNDBiZDU0YjgwNzJhN2YwZTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDkgQEAKKzIwMTktMDktMDUgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBHZW5lcmF0b3Igc2hvdWxkIGhhdmUgaW50ZXJuYWwgZmllbGRz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDExNTkK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEphdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYnl0ZWNvZGUv
Qnl0ZWNvZGVMaXN0LnJiOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmg6Cisg
ICAgICAgIChKU0M6OmNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlND
Ojpjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKiBieXRlY29kZS9Db2Rl
QmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKToKKyAg
ICAgICAgKiBieXRlY29kZS9PcGNvZGUuaDoKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdl
dEludGVybmFsRmllbGQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1
dEludGVybmFsRmllbGQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdl
dFByb21pc2VJbnRlcm5hbEZpZWxkKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRQdXRQcm9taXNlSW50ZXJuYWxGaWVsZCk6IERlbGV0ZWQuCisgICAgICAg
ICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgICogYnl0ZWNvbXBp
bGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlSW50cmluc2ljTm9k
ZTo6ZW1pdF9pbnRyaW5zaWNfZ2V0UHJvbWlzZUludGVybmFsRmllbGQpOgorICAgICAgICAoSlND
OjpCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX3B1dFByb21pc2VJbnRlcm5h
bEZpZWxkKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoK
KyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBl
Pjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAg
ICAqIGRmZy9ERkdDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNhcGFiaWxp
dHlMZXZlbCk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6
REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAqIGRmZy9E
RkdNYXlFeGl0LmNwcDoKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpE
Rkc6Ok5vZGU6Omhhc0ludGVybmFsRmllbGRJbmRleCk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9k
ZTo6aGFzSGVhcFByZWRpY3Rpb24pOgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAg
ICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgICog
ZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRl
KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0SW50ZXJuYWxGaWVsZCk6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRJbnRlcm5hbEZpZWxkKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZVByb21pc2UpOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3UHJvbWlzZSk6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRQcm9taXNlSW50ZXJuYWxG
aWVsZCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVQdXRQcm9taXNlSW50ZXJuYWxGaWVsZCk6IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmg6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAg
KiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRp
b25QaGFzZS5jcHA6CisgICAgICAgICogZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaDoK
KyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpj
YW5Db21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAg
KEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlND
OjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTmV3UHJvbWlzZSk6CisgICAgICAgIChK
U0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDcmVhdGVQcm9taXNlKToKKyAgICAg
ICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUdldEludGVybmFsRmllbGQp
OgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlUHV0SW50ZXJu
YWxGaWVsZCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVH
ZXRQcm9taXNlSW50ZXJuYWxGaWVsZCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkZUTDo6REZH
OjpMb3dlckRGR1RvQjM6OmNvbXBpbGVQdXRQcm9taXNlSW50ZXJuYWxGaWVsZCk6IERlbGV0ZWQu
CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBp
bGVNYWluUGFzcyk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRQcm9w
ZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfaW50ZXJuYWxf
ZmllbGQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2ludGVybmFsX2ZpZWxkKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9wcm9taXNlX2ludGVybmFsX2ZpZWxkKTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9wcm9taXNlX2ludGVybmFs
X2ZpZWxkKTogRGVsZXRlZC4KKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5j
cHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfaW50ZXJuYWxfZmllbGQpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2ludGVybmFsX2ZpZWxkKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX2dldF9wcm9taXNlX2ludGVybmFsX2ZpZWxkKTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9wcm9taXNlX2ludGVybmFsX2ZpZWxkKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBsbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwOgorICAgICAg
ICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIzMl82NC5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlcjY0LmFzbToKKyAgICAgICAgKiBydW50aW1lL0pTSW50ZXJuYWxGaWVsZE9iamVjdEltcGwu
aDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlLmgu
CisgICAgICAgIChKU0M6OkpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGw6OmFsbG9jYXRpb25TaXpl
KToKKyAgICAgICAgKEpTQzo6SlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbDo6aW50ZXJuYWxGaWVs
ZCBjb25zdCk6CisgICAgICAgIChKU0M6OkpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGw6OmludGVy
bmFsRmllbGQpOgorICAgICAgICAoSlNDOjpKU0ludGVybmFsRmllbGRPYmplY3RJbXBsOjpvZmZz
ZXRPZkludGVybmFsRmllbGRzKToKKyAgICAgICAgKEpTQzo6SlNJbnRlcm5hbEZpZWxkT2JqZWN0
SW1wbDo6b2Zmc2V0T2ZJbnRlcm5hbEZpZWxkKToKKyAgICAgICAgKEpTQzo6SlNJbnRlcm5hbEZp
ZWxkT2JqZWN0SW1wbDo6SlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbCk6CisgICAgICAgICogcnVu
dGltZS9KU0ludGVybmFsRmllbGRPYmplY3RJbXBsSW5saW5lcy5oOiBBZGRlZC4KKyAgICAgICAg
KEpTQzo6SlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAg
ICogcnVudGltZS9KU1Byb21pc2UuY3BwOgorICAgICAgICAoSlNDOjpKU1Byb21pc2U6OmZpbmlz
aENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNQcm9taXNlOjp2aXNpdENoaWxkcmVuKToKKyAg
ICAgICAgKEpTQzo6SlNQcm9taXNlOjpzdGF0dXMgY29uc3QpOgorICAgICAgICAoSlNDOjpKU1By
b21pc2U6OnJlc3VsdCBjb25zdCk6CisgICAgICAgIChKU0M6OkpTUHJvbWlzZTo6aXNIYW5kbGVk
IGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0pTUHJvbWlzZS5oOgorICAgICAgICAoSlNDOjpK
U1Byb21pc2U6OmFsbG9jYXRpb25TaXplKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SlNQcm9t
aXNlOjpvZmZzZXRPZkludGVybmFsRmllbGRzKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SlNQ
cm9taXNlOjpvZmZzZXRPZkludGVybmFsRmllbGQpOiBEZWxldGVkLgorICAgICAgICAoKTogRGVs
ZXRlZC4KKwogMjAxOS0wOS0wNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgog
CiAgICAgICAgIFVucmV2aWV3ZWQsIHBhcnRpYWwgcm9sbCBvdXQgcjI0OTM3MiBkdWUgdG8gSmV0
U3RyZWFtMi9CYXNpYyB+MTAlIHJlZ3Jlc3Npb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggNWRhZmU2NDA5ZThmYTE5ZjU1YjAyNmJkZDViOWUzZTgxNWY2NWEyOS4uZGZiMWM5ZDJl
YmI2OWI5ZjdjYTIwNTQwZjQ5MTgwNWE4ZWE0ZTJkNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTExMyw3ICsxMTMsNyBAQAogCQl9OwogCQlFMUFDMkUyNzIwRjdCOTRDMDBCMDg5
N0QgLyogVW5sb2NrIEtleWNoYWluICovID0gewogCQkJaXNhID0gUEJYQWdncmVnYXRlVGFyZ2V0
OwotCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDE0Q0ZCMTA1MjMwMzVFRjMwMEYwMDQ4QyAv
KiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgKi87CisJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0
ID0gMTRDRkIxMDUyMzAzNUVGMzAwRjAwNDhDIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBm
b3IgUEJYQWdncmVnYXRlVGFyZ2V0ICJVbmxvY2sgS2V5Y2hhaW4iICovOwogCQkJYnVpbGRQaGFz
ZXMgPSAoCiAJCQkJRTFBQzJFMkMyMEY3Qjk1ODAwQjA4OTdEIC8qIFVubG9jayBLZXljaGFpbiAq
LywKIAkJCSk7CkBAIC0xNzg2LDkgKzE3ODYsMTEgQEAKIAkJRTMyOERBRTkxRDM4RDAwNTAwMUEy
NTI5IC8qIEJ5dGVjb2RlR3JhcGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUzRDI2NDI4MUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZUdyYXBoLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTMyOERB
RUIxRDM4RDAwNTAwMUEyNTI5IC8qIEJ5dGVjb2RlUmV3cml0ZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRDI2NDJBMUQzOEMwNDIwMDBCRTE3NCAv
KiBCeXRlY29kZVJld3JpdGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJRTMyQUIyNDQxRENENzVGNDAwRDc1MzNBIC8qIE1hY3JvQXNzZW1ibGVy
SGVscGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTM4MEE3NkIxRENENzE5NTAwMEY4OUU2IC8qIE1hY3JvQXNzZW1ibGVySGVscGVycy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzMzA5NUREMjMy
MTBBMUIwMEVCNzg1NiAvKiBKU0ludGVybmFsRmllbGRPYmplY3RJbXBsLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzMwOTVEQzIzMjEwQTE0MDBFQjc4
NTYgLyogSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzMzRDQkI1MjFGRDk2QTkwMDBFQjE3OCAvKiBS
ZWdFeHBHbG9iYWxEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFMzM0Q0JCMzIxRkQ5NkE5MDAwRUIxNzggLyogUmVnRXhwR2xvYmFsRGF0YS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzMzYzN0E2
MUI2MzIyMDIwMEVFMDg0MCAvKiBSZWZsZWN0T2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzM2MzdBNDFCNjMyMjAyMDBFRTA4NDAgLyogUmVm
bGVjdE9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUUzMzdCOTY3MjI0MzI0RUEwMDkzQTgyMCAvKiBXYXNtQ2FwYWJpbGl0aWVzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzM3Qjk2NjIyNDMy
NEU1MDA5M0E4MjAgLyogV2FzbUNhcGFiaWxpdGllcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzMzk3MDA1MjMyMTBFMEIwMEIwQUUyMSAvKiBK
U0ludGVybmFsRmllbGRPYmplY3RJbXBsSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMzOTcwMDQyMzIxMEUwQTAwQjBBRTIxIC8qIEpTSW50
ZXJuYWxGaWVsZE9iamVjdEltcGxJbmxpbmVzLmggKi87IH07CiAJCUUzM0E5NDk2MjI1NTMyMzAw
MEQ0MkIwNiAvKiBSYW5kb21pemluZ0Z1enplckFnZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzNBOTQ5NDIyNTUzMjI5MDBENDJCMDYgLyogUmFu
ZG9taXppbmdGdXp6ZXJBZ2VudC5oICovOyB9OwogCQlFMzNBOTQ5NzIyNTUzMjMzMDBENDJCMDYg
LyogRnV6emVyQWdlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUzM0E5NDkyMjI1NTMyMjkwMEQ0MkIwNiAvKiBGdXp6ZXJBZ2VudC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzM0IzRTI2MUI3QUJE
NzUwMDQ4REIyRSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QubHV0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzNCM0UyNTFCN0FCRDc1
MDA0OERCMkUgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0Lmx1dC5oICovOyB9OwpA
QCAtNDg2NywxMSArNDg2OSwxMyBAQAogCQlFMzMwNUZCMDIwQjBGNzg3MDBDRUI4MkIgLyogSW5C
eUlkVmFyaWFudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbkJ5
SWRWYXJpYW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMzMDVGQjEyMEIw
Rjc4ODAwQ0VCODJCIC8qIEluQnlJZFZhcmlhbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSW5CeUlkVmFyaWFudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
MzMwNUZCMjIwQjBGNzg4MDBDRUI4MkIgLyogSW5CeUlkU3RhdHVzLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluQnlJZFN0YXR1cy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUUzMzA5NURDMjMyMTBBMTQwMEVCNzg1NiAvKiBKU0ludGVybmFsRmll
bGRPYmplY3RJbXBsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGwu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMzNENCQjIyMUZEOTZBODAwMEVCMTc4
IC8qIFJlZ0V4cEdsb2JhbERhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUmVnRXhwR2xvYmFsRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUUzMzRDQkIzMjFGRDk2QTkwMDBFQjE3OCAvKiBSZWdFeHBHbG9iYWxEYXRhLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ0V4cEdsb2JhbERhdGEuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRTMzNjM3QTMxQjYzMjIwMjAwRUUwODQwIC8qIFJlZmxlY3RPYmpl
Y3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVmbGVjdE9iamVj
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzMzYzN0E0MUI2MzIyMDIwMEVF
MDg0MCAvKiBSZWZsZWN0T2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJlZmxlY3RPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMzN0I5NjYy
MjQzMjRFNTAwOTNBODIwIC8qIFdhc21DYXBhYmlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Fz
bUNhcGFiaWxpdGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzM5NzAwNDIz
MjEwRTBBMDBCMEFFMjEgLyogSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbElubGluZXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbElu
bGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMzQTk0OTIyMjU1MzIyOTAw
RDQyQjA2IC8qIEZ1enplckFnZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZ1enplckFnZW50Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzM0E5NDkzMjI1NTMyMjkwMEQ0MkIwNiAvKiBS
YW5kb21pemluZ0Z1enplckFnZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJhbmRvbWl6aW5n
RnV6emVyQWdlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzNBOTQ5NDIy
NTUzMjI5MDBENDJCMDYgLyogUmFuZG9taXppbmdGdXp6ZXJBZ2VudC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSYW5kb21pemluZ0Z1enplckFnZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC03MTg5LDYgKzcxOTMsOCBAQAogCQkJCTBGMkI2NkNBMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0lu
dDE2QXJyYXkuaCAqLywKIAkJCQkwRjJCNjZDQjE3QjZCNUFCMDBBN0FFM0YgLyogSlNJbnQzMkFy
cmF5LmggKi8sCiAJCQkJMEYyQjY2QzkxN0I2QjVBQjAwQTdBRTNGIC8qIEpTSW50OEFycmF5Lmgg
Ki8sCisJCQkJRTMzMDk1REMyMzIxMEExNDAwRUI3ODU2IC8qIEpTSW50ZXJuYWxGaWVsZE9iamVj
dEltcGwuaCAqLywKKwkJCQlFMzM5NzAwNDIzMjEwRTBBMDBCMEFFMjEgLyogSlNJbnRlcm5hbEZp
ZWxkT2JqZWN0SW1wbElubGluZXMuaCAqLywKIAkJCQlFMzNGNTA3RTFCODQyOUE0MDA0MTM4NTYg
LyogSlNJbnRlcm5hbFByb21pc2UuY3BwICovLAogCQkJCUUzM0Y1MDdGMUI4NDI5QTQwMDQxMzg1
NiAvKiBKU0ludGVybmFsUHJvbWlzZS5oICovLAogCQkJCUUzM0Y1MDc2MUI4NDIyNTcwMDQxMzg1
NiAvKiBKU0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmNwcCAqLywKQEAgLTk2NTEsNiArOTY1
Nyw4IEBACiAJCQkJMEYyQjY2RjkxN0I2QjVBQjAwQTdBRTNGIC8qIEpTSW50MzJBcnJheS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2RjcxN0I2QjVBQjAwQTdBRTNGIC8qIEpTSW50OEFycmF5
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzZDNTE3NjExODI3NDhEMDA3MTVCMDUgLyogSlNJbnRl
cmZhY2VKSVQuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzMzA5NUREMjMyMTBBMUIwMEVCNzg1NiAv
KiBKU0ludGVybmFsRmllbGRPYmplY3RJbXBsLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzM5NzAw
NTIzMjEwRTBCMDBCMEFFMjEgLyogSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbElubGluZXMuaCBp
biBIZWFkZXJzICovLAogCQkJCUUzM0Y1MDgxMUI4NDI5QTQwMDQxMzg1NiAvKiBKU0ludGVybmFs
UHJvbWlzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTMzRjUwNzkxQjg0MjI1NzAwNDEzODU2IC8q
IEpTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzM0Y1
MDg3MUI4NDQ5RUYwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmx1dC5o
IGluIEhlYWRlcnMgKi8sCkBAIC0xMjE4OSw3ICsxMjE5Nyw3IEBACiAJCQlkZWZhdWx0Q29uZmln
dXJhdGlvbklzVmlzaWJsZSA9IDA7CiAJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBQcm9k
dWN0aW9uOwogCQl9OwotCQkxNENGQjEwNTIzMDM1RUYzMDBGMDA0OEMgLyogQnVpbGQgY29uZmln
dXJhdGlvbiBsaXN0ICovID0geworCQkxNENGQjEwNTIzMDM1RUYzMDBGMDA0OEMgLyogQnVpbGQg
Y29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhBZ2dyZWdhdGVUYXJnZXQgIlVubG9jayBLZXljaGFp
biIgKi8gPSB7CiAJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OwogCQkJYnVpbGRDb25maWd1
cmF0aW9ucyA9ICgKIAkJCQkxNENGQjEwMTIzMDM1RUYzMDBGMDA0OEMgLyogRGVidWcgKi8sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJi
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgppbmRleCA2
NThlMTFlOGIzZDA1NWYwNTc4YzY2NWYwM2M1YjU2ZWI0YjE0Yzc3Li4zYjM5OThhYjUwY2Q2MjAz
MDliYWM2ZDY3ZmQ2OTE4ZmY0YTAxYTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUxpc3QucmIKQEAgLTExMjksNyArMTEyOSw3IEBACiAgICAgICAgIHBy
b3BlcnR5OiB1bnNpZ25lZCwKICAgICB9CiAKLW9wIDpnZXRfcHJvbWlzZV9pbnRlcm5hbF9maWVs
ZCwKK29wIDpnZXRfaW50ZXJuYWxfZmllbGQsCiAgICAgYXJnczogewogICAgICAgICBkc3Q6IFZp
cnR1YWxSZWdpc3RlciwKICAgICAgICAgYmFzZTogVmlydHVhbFJlZ2lzdGVyLApAQCAtMTEzOSw3
ICsxMTM5LDcgQEAKICAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAogICAgIH0KIAotb3Ag
OnB1dF9wcm9taXNlX2ludGVybmFsX2ZpZWxkLAorb3AgOnB1dF9pbnRlcm5hbF9maWVsZCwKICAg
ICBhcmdzOiB7CiAgICAgICAgIGJhc2U6IFZpcnR1YWxSZWdpc3RlciwKICAgICAgICAgaW5kZXg6
IHVuc2lnbmVkLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlVXNlRGVmLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVV
c2VEZWYuaAppbmRleCA3M2I1YTU4MDQ4YzdlNDI3YTQ3NDNkMjI1N2U3M2E4Y2NhNjFhODIxLi5i
ZTA4NTk2NDBmYjEwN2RlOGI3ODJiY2ZhNTA4MWJjN2QxYzc5YmMyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaApAQCAtMjU0LDggKzI1NCw4
IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChCbG9jayogY29kZUJsb2NrLCBP
cGNvZGVJRCBvcGNvZGVJRCwgY29uc3QgSW5zCiAgICAgVVNFUyhPcFN3aXRjaENoYXIsIHNjcnV0
aW5lZSkKICAgICBVU0VTKE9wU3dpdGNoSW1tLCBzY3J1dGluZWUpCiAKLSAgICBVU0VTKE9wR2V0
UHJvbWlzZUludGVybmFsRmllbGQsIGJhc2UpCi0gICAgVVNFUyhPcFB1dFByb21pc2VJbnRlcm5h
bEZpZWxkLCBiYXNlLCB2YWx1ZSkKKyAgICBVU0VTKE9wR2V0SW50ZXJuYWxGaWVsZCwgYmFzZSkK
KyAgICBVU0VTKE9wUHV0SW50ZXJuYWxGaWVsZCwgYmFzZSwgdmFsdWUpCiAKICAgICBVU0VTKE9w
WWllbGQsIGdlbmVyYXRvciwgYXJndW1lbnQpCiAKQEAgLTM0NSw3ICszNDUsNyBAQCB2b2lkIGNv
bXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqIGNvZGVCbG9jaywgT3Bjb2RlSUQgb3Bj
b2RlSUQsIGNvbnN0IElucwogICAgIGNhc2Ugb3BfcHV0X3NldHRlcl9ieV92YWw6CiAgICAgY2Fz
ZSBvcF9wdXRfYnlfdmFsOgogICAgIGNhc2Ugb3BfcHV0X2J5X3ZhbF9kaXJlY3Q6Ci0gICAgY2Fz
ZSBvcF9wdXRfcHJvbWlzZV9pbnRlcm5hbF9maWVsZDoKKyAgICBjYXNlIG9wX3B1dF9pbnRlcm5h
bF9maWVsZDoKICAgICBjYXNlIG9wX2RlZmluZV9kYXRhX3Byb3BlcnR5OgogICAgIGNhc2Ugb3Bf
ZGVmaW5lX2FjY2Vzc29yX3Byb3BlcnR5OgogICAgIGNhc2Ugb3BfcHJvZmlsZV90eXBlOgpAQCAt
NDc3LDcgKzQ3Nyw3IEBAIHZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChCbG9jayog
Y29kZUJsb2NrLCBPcGNvZGVJRCBvcGNvZGVJRCwgY29uc3QgSW5zCiAgICAgREVGUyhPcEdldEFy
Z3VtZW50LCBkc3QpCiAgICAgREVGUyhPcENyZWF0ZVJlc3QsIGRzdCkKICAgICBERUZTKE9wR2V0
UmVzdExlbmd0aCwgZHN0KQotICAgIERFRlMoT3BHZXRQcm9taXNlSW50ZXJuYWxGaWVsZCwgZHN0
KQorICAgIERFRlMoT3BHZXRJbnRlcm5hbEZpZWxkLCBkc3QpCiAKICAgICBERUZTKE9wQ2F0Y2gs
IGV4Y2VwdGlvbiwgdGhyb3duVmFsdWUpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5jcHAKaW5kZXggYmYzN2IwZjU5MWIxYWRjODlmNGU3NjI0ZGEwOTMwOGE1
YWFiMWM4Zi4uMjk0M2IyYjEwMDNjNWY4ZjFhMzBjZTU2NTI2ODRkNDQzNmU3OGVhMyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTU0MCw3ICs1
NDAsNyBAQCBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVj
dXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgICAgICBMSU5LKE9wVG9OdW1iZXIs
IHByb2ZpbGUpCiAgICAgICAgIExJTksoT3BUb09iamVjdCwgcHJvZmlsZSkKICAgICAgICAgTElO
SyhPcEdldEFyZ3VtZW50LCBwcm9maWxlKQotICAgICAgICBMSU5LKE9wR2V0UHJvbWlzZUludGVy
bmFsRmllbGQsIHByb2ZpbGUpCisgICAgICAgIExJTksoT3BHZXRJbnRlcm5hbEZpZWxkLCBwcm9m
aWxlKQogICAgICAgICBMSU5LKE9wVG9UaGlzLCBwcm9maWxlKQogICAgICAgICBMSU5LKE9wQml0
YW5kLCBwcm9maWxlKQogICAgICAgICBMSU5LKE9wQml0b3IsIHByb2ZpbGUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgKaW5kZXggZGNiZWI4YWQ2NGQwM2Q5ZjI4MmUyMjg3
MTY1ZmUwODIzMmE0OTkwMi4uNDJhNTZmYjMyNThhY2M1NjIwYTdhNmFkNTEwYmRlZWFhOGI5OTlj
OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaApAQCAtOTcsNyArOTcs
NyBAQCBleHRlcm4gY29uc3QgdW5zaWduZWQgb3Bjb2RlTGVuZ3Roc1tdOwogICAgIG1hY3JvKE9w
VG9OdW1iZXIpIFwKICAgICBtYWNybyhPcFRvT2JqZWN0KSBcCiAgICAgbWFjcm8oT3BHZXRBcmd1
bWVudCkgXAotICAgIG1hY3JvKE9wR2V0UHJvbWlzZUludGVybmFsRmllbGQpIFwKKyAgICBtYWNy
byhPcEdldEludGVybmFsRmllbGQpIFwKICAgICBtYWNybyhPcFRvVGhpcykgXAogICAgIG1hY3Jv
KE9wQ2FsbCkgXAogICAgIG1hY3JvKE9wVGFpbENhbGwpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXgg
N2Y2N2Q2NjQ5YWViOGQ2ODVjMTcxNWQ0OTNmMGI4NmEyZWVhZTg0MS4uZWE3YTRhYzQ2MDg3NGY4
OWYwOWZjNTY5NDBhNDFiMGIxNjExMjYxNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTI4MDgsMTUg
KzI4MDgsMTUgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWxldGVCeVZh
bChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UKICAgICByZXR1cm4gZHN0OwogfQog
Ci1SZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldFByb21pc2VJbnRlcm5hbEZp
ZWxkKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgdW5zaWduZWQgaW5kZXgpCitS
ZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEludGVybmFsRmllbGQoUmVnaXN0
ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCB1bnNpZ25lZCBpbmRleCkKIHsKLSAgICBPcEdl
dFByb21pc2VJbnRlcm5hbEZpZWxkOjplbWl0KHRoaXMsIGRzdCwgYmFzZSwgaW5kZXgpOworICAg
IE9wR2V0SW50ZXJuYWxGaWVsZDo6ZW1pdCh0aGlzLCBkc3QsIGJhc2UsIGluZGV4KTsKICAgICBy
ZXR1cm4gZHN0OwogfQogCi1SZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dFBy
b21pc2VJbnRlcm5hbEZpZWxkKFJlZ2lzdGVySUQqIGJhc2UsIHVuc2lnbmVkIGluZGV4LCBSZWdp
c3RlcklEKiB2YWx1ZSkKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0SW50
ZXJuYWxGaWVsZChSZWdpc3RlcklEKiBiYXNlLCB1bnNpZ25lZCBpbmRleCwgUmVnaXN0ZXJJRCog
dmFsdWUpCiB7Ci0gICAgT3BQdXRQcm9taXNlSW50ZXJuYWxGaWVsZDo6ZW1pdCh0aGlzLCBiYXNl
LCBpbmRleCwgdmFsdWUpOworICAgIE9wUHV0SW50ZXJuYWxGaWVsZDo6ZW1pdCh0aGlzLCBiYXNl
LCBpbmRleCwgdmFsdWUpOwogICAgIHJldHVybiB2YWx1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4
IGJiMDRjZWU0MjRlNTI0MWI3NzJhYTAzYWFkNGIzYmY0MTE0YWE1NjAuLjk0ZWViMTMyNjEwNmZm
NmRkY2Q3NDkzMWRlYTBhYjI5MTk0ZGRjYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTc3Niw4ICs3NzYs
OCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdERpcmVjdFB1dEJ5
VmFsKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2
YWx1ZSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXREZWxldGVCeVZhbChSZWdpc3RlcklEKiBk
c3QsIFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5KTsKIAotICAgICAgICBS
ZWdpc3RlcklEKiBlbWl0R2V0UHJvbWlzZUludGVybmFsRmllbGQoUmVnaXN0ZXJJRCogZHN0LCBS
ZWdpc3RlcklEKiBiYXNlLCB1bnNpZ25lZCBpbmRleCk7Ci0gICAgICAgIFJlZ2lzdGVySUQqIGVt
aXRQdXRQcm9taXNlSW50ZXJuYWxGaWVsZChSZWdpc3RlcklEKiBiYXNlLCB1bnNpZ25lZCBpbmRl
eCwgUmVnaXN0ZXJJRCogdmFsdWUpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0R2V0SW50ZXJu
YWxGaWVsZChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIHVuc2lnbmVkIGluZGV4
KTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFB1dEludGVybmFsRmllbGQoUmVnaXN0ZXJJRCog
YmFzZSwgdW5zaWduZWQgaW5kZXgsIFJlZ2lzdGVySUQqIHZhbHVlKTsKIAogICAgICAgICB2b2lk
IGVtaXRTdXBlclNhbXBsZXJCZWdpbigpOwogICAgICAgICB2b2lkIGVtaXRTdXBlclNhbXBsZXJF
bmQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9k
ZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXND
b2RlZ2VuLmNwcAppbmRleCAyYzgzMjM2NjIzZWViZDUzMTVmMzY1ZTNiY2M5NWZmNDhlMTYzNGE3
Li40ODkwOWVmOWIwNGQxNWFkYzRhMDJkMjZjNzVmOGNjNWM5YzE1M2IxIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC0x
MDMwLDcgKzEwMzAsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRf
aW50cmluc2ljX2dldFByb21pc2VJbnRlcm5hbEZpZWxkKEJ5dGVjbwogICAgIEFTU0VSVChpbmRl
eCA8IEpTUHJvbWlzZTo6bnVtYmVyT2ZJbnRlcm5hbEZpZWxkcyk7CiAgICAgQVNTRVJUKCFub2Rl
LT5tX25leHQpOwogCi0gICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0R2V0UHJvbWlzZUludGVybmFs
RmllbGQoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSwgaW5kZXgp
OworICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdEdldEludGVybmFsRmllbGQoZ2VuZXJhdG9yLmZp
bmFsRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSwgaW5kZXgpOwogfQogCiBSZWdpc3RlcklE
KiBCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2FyZ3VtZW50KEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKQEAgLTExMTUsNyArMTExNSw3
IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfcHV0
UHJvbWlzZUludGVybmFsRmllbGQoQnl0ZWNvCiAKICAgICBBU1NFUlQoIW5vZGUtPm1fbmV4dCk7
CiAKLSAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmUoZHN0LCBnZW5lcmF0b3IuZW1pdFB1dFByb21p
c2VJbnRlcm5hbEZpZWxkKGJhc2UuZ2V0KCksIGluZGV4LCB2YWx1ZS5nZXQoKSkpOworICAgIHJl
dHVybiBnZW5lcmF0b3IubW92ZShkc3QsIGdlbmVyYXRvci5lbWl0UHV0SW50ZXJuYWxGaWVsZChi
YXNlLmdldCgpLCBpbmRleCwgdmFsdWUuZ2V0KCkpKTsKIH0KIAogUmVnaXN0ZXJJRCogQnl0ZWNv
ZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY190YWlsQ2FsbEZvcndhcmRBcmd1bWVudHMo
Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5l
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5s
aW5lcy5oCmluZGV4IDQ2NDc4MWRjOTcyYzI4YjgwNDkyZWNlMTVhMTcwYzA5YjJjNTRjMjEuLjli
NmJmMDM1OTc4Nzk3YTNlMzNhNGM4NDk1MTQwMzE0MGM1MzFkMTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVz
LmgKQEAgLTI5NDAsMTEgKzI5NDAsMTEgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3Ry
YWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICBj
YXNlIFB1dENsb3N1cmVWYXI6CiAgICAgICAgIGJyZWFrOwogCi0gICAgY2FzZSBHZXRQcm9taXNl
SW50ZXJuYWxGaWVsZDoKKyAgICBjYXNlIEdldEludGVybmFsRmllbGQ6CiAgICAgICAgIG1ha2VC
eXRlY29kZVRvcEZvck5vZGUobm9kZSk7CiAgICAgICAgIGJyZWFrOwogCi0gICAgY2FzZSBQdXRQ
cm9taXNlSW50ZXJuYWxGaWVsZDoKKyAgICBjYXNlIFB1dEludGVybmFsRmllbGQ6CiAgICAgICAg
IGJyZWFrOwogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0
ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHAKaW5kZXggMGYzZmI3ZTZlYmJlZTA0MjExYTMwMWNiZWU3ODgzMWUwYTRmMTEyNi4u
MmM4MmIxZTkzYmQxZmQ1MmNlZDU1MDRhNDFiYWVjOWE1ZDliOTM5MiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTcwNDksMTYgKzcw
NDksMTYgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkK
ICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX3RvX2luZGV4X3N0cmluZyk7CiAgICAgICAgIH0K
IAotICAgICAgICBjYXNlIG9wX2dldF9wcm9taXNlX2ludGVybmFsX2ZpZWxkOiB7Ci0gICAgICAg
ICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEdldFByb21pc2VJ
bnRlcm5hbEZpZWxkPigpOwotICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLm1fZHN0LCBhZGRUb0dy
YXBoKEdldFByb21pc2VJbnRlcm5hbEZpZWxkLCBPcEluZm8oYnl0ZWNvZGUubV9pbmRleCksIE9w
SW5mbyhnZXRQcmVkaWN0aW9uKCkpLCBnZXQoYnl0ZWNvZGUubV9iYXNlKSkpOwotICAgICAgICAg
ICAgTkVYVF9PUENPREUob3BfZ2V0X3Byb21pc2VfaW50ZXJuYWxfZmllbGQpOworICAgICAgICBj
YXNlIG9wX2dldF9pbnRlcm5hbF9maWVsZDogeworICAgICAgICAgICAgYXV0byBieXRlY29kZSA9
IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BHZXRJbnRlcm5hbEZpZWxkPigpOworICAgICAgICAg
ICAgc2V0KGJ5dGVjb2RlLm1fZHN0LCBhZGRUb0dyYXBoKEdldEludGVybmFsRmllbGQsIE9wSW5m
byhieXRlY29kZS5tX2luZGV4KSwgT3BJbmZvKGdldFByZWRpY3Rpb24oKSksIGdldChieXRlY29k
ZS5tX2Jhc2UpKSk7CisgICAgICAgICAgICBORVhUX09QQ09ERShvcF9nZXRfaW50ZXJuYWxfZmll
bGQpOwogICAgICAgICB9CiAKLSAgICAgICAgY2FzZSBvcF9wdXRfcHJvbWlzZV9pbnRlcm5hbF9m
aWVsZDogewotICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+
YXM8T3BQdXRQcm9taXNlSW50ZXJuYWxGaWVsZD4oKTsKLSAgICAgICAgICAgIGFkZFRvR3JhcGgo
UHV0UHJvbWlzZUludGVybmFsRmllbGQsIE9wSW5mbyhieXRlY29kZS5tX2luZGV4KSwgZ2V0KGJ5
dGVjb2RlLm1fYmFzZSksIGdldChieXRlY29kZS5tX3ZhbHVlKSk7Ci0gICAgICAgICAgICBORVhU
X09QQ09ERShvcF9wdXRfcHJvbWlzZV9pbnRlcm5hbF9maWVsZCk7CisgICAgICAgIGNhc2Ugb3Bf
cHV0X2ludGVybmFsX2ZpZWxkOiB7CisgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVu
dEluc3RydWN0aW9uLT5hczxPcFB1dEludGVybmFsRmllbGQ+KCk7CisgICAgICAgICAgICBhZGRU
b0dyYXBoKFB1dEludGVybmFsRmllbGQsIE9wSW5mbyhieXRlY29kZS5tX2luZGV4KSwgZ2V0KGJ5
dGVjb2RlLm1fYmFzZSksIGdldChieXRlY29kZS5tX3ZhbHVlKSk7CisgICAgICAgICAgICBORVhU
X09QQ09ERShvcF9wdXRfaW50ZXJuYWxfZmllbGQpOwogICAgICAgICB9CiAgICAgICAgICAgICAK
ICAgICAgICAgY2FzZSBvcF9sb2dfc2hhZG93X2NoaWNrZW5fcHJvbG9ndWU6IHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAppbmRleCA1YWM3YzQyNzc2
YmQ1NTcxNmQ1YWUzMTZkMmFlOGY4YmU3YWI0YTIyLi5jMGVlOThhZWE4MzhkNzI1NmU2Yjc1NGI1
NDU3NGJiOGQ2ZTlmOWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBh
YmlsaXRpZXMuY3BwCkBAIC0yNzUsOCArMjc1LDggQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxp
dHlMZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEkK
ICAgICBjYXNlIG9wX3Jlc29sdmVfc2NvcGU6CiAgICAgY2FzZSBvcF9yZXNvbHZlX3Njb3BlX2Zv
cl9ob2lzdGluZ19mdW5jX2RlY2xfaW5fZXZhbDoKICAgICBjYXNlIG9wX25ld19yZWdleHA6Ci0g
ICAgY2FzZSBvcF9nZXRfcHJvbWlzZV9pbnRlcm5hbF9maWVsZDoKLSAgICBjYXNlIG9wX3B1dF9w
cm9taXNlX2ludGVybmFsX2ZpZWxkOgorICAgIGNhc2Ugb3BfZ2V0X2ludGVybmFsX2ZpZWxkOgor
ICAgIGNhc2Ugb3BfcHV0X2ludGVybmFsX2ZpZWxkOgogICAgIGNhc2Ugb3BfdW5yZWFjaGFibGU6
CiAgICAgY2FzZSBvcF9zdXBlcl9zYW1wbGVyX2JlZ2luOgogICAgIGNhc2Ugb3Bfc3VwZXJfc2Ft
cGxlcl9lbmQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2Ji
ZXJpemUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmluZGV4
IDIyZGNmMzkyZTlhMzJkZWY0ZDE2NmRlYmYxODA0M2IzM2RlZmNjMmEuLmMxYjdhMGJjMjIxY2Y0
ODQxYzZkNDMxYWM0ZTVjZTVhZGExZjcxYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ2xvYmJlcml6ZS5oCkBAIC0xMzE3LDE0ICsxMzE3LDE0IEBAIHZvaWQgY2xvYmJlcml6ZShH
cmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBX
cml0ZUZ1CiAgICAgICAgIGRlZihIZWFwTG9jYXRpb24oQ2xvc3VyZVZhcmlhYmxlTG9jLCBBYnN0
cmFjdEhlYXAoU2NvcGVQcm9wZXJ0aWVzLCBub2RlLT5zY29wZU9mZnNldCgpLm9mZnNldCgpKSwg
bm9kZS0+Y2hpbGQxKCkpLCBMYXp5Tm9kZShub2RlLT5jaGlsZDIoKS5ub2RlKCkpKTsKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgY2FzZSBHZXRQcm9taXNlSW50ZXJuYWxGaWVsZDogeworICAgIGNh
c2UgR2V0SW50ZXJuYWxGaWVsZDogewogICAgICAgICBBYnN0cmFjdEhlYXAgaGVhcChKU1Byb21p
c2VGaWVsZHMsIG5vZGUtPmludGVybmFsRmllbGRJbmRleCgpKTsKICAgICAgICAgcmVhZChoZWFw
KTsKICAgICAgICAgZGVmKEhlYXBMb2NhdGlvbihQcm9taXNlSW50ZXJuYWxGaWVsZExvYywgaGVh
cCwgbm9kZS0+Y2hpbGQxKCkpLCBMYXp5Tm9kZShub2RlKSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBjYXNlIFB1dFByb21pc2VJbnRlcm5hbEZpZWxkOiB7CisgICAgY2FzZSBQdXRJ
bnRlcm5hbEZpZWxkOiB7CiAgICAgICAgIEFic3RyYWN0SGVhcCBoZWFwKEpTUHJvbWlzZUZpZWxk
cywgbm9kZS0+aW50ZXJuYWxGaWVsZEluZGV4KCkpOwogICAgICAgICB3cml0ZShoZWFwKTsKICAg
ICAgICAgZGVmKEhlYXBMb2NhdGlvbihQcm9taXNlSW50ZXJuYWxGaWVsZExvYywgaGVhcCwgbm9k
ZS0+Y2hpbGQxKCkpLCBMYXp5Tm9kZShub2RlLT5jaGlsZDIoKS5ub2RlKCkpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAppbmRleCA4OTM4ODA1NjNlODIxYmJhOGRhNDE0
M2I1OGZlZmYwNmIzMTAwYzFmLi5mYjMxMjJiN2MyNjVkM2I4ZWQxYTZhMDA2YjJkYzgyNGE1ZTU4
ZDc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCkBAIC0xMjMsOCAr
MTIzLDggQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2Ug
R2V0R2xvYmFsVGhpczoKICAgICBjYXNlIEdldENsb3N1cmVWYXI6CiAgICAgY2FzZSBQdXRDbG9z
dXJlVmFyOgotICAgIGNhc2UgR2V0UHJvbWlzZUludGVybmFsRmllbGQ6Ci0gICAgY2FzZSBQdXRQ
cm9taXNlSW50ZXJuYWxGaWVsZDoKKyAgICBjYXNlIEdldEludGVybmFsRmllbGQ6CisgICAgY2Fz
ZSBQdXRJbnRlcm5hbEZpZWxkOgogICAgIGNhc2UgR2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4Ogog
ICAgIGNhc2UgU2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4OgogICAgIGNhc2UgUmVjb3JkUmVnRXhw
Q2FjaGVkUmVzdWx0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdG
aXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5j
cHAKaW5kZXggM2M3MzU2MzQyNDY4MDIyYTcxYWIwMjM3NDk4NmQwNGU3NDk4MTRmMS4uZTQ1YWM1
YzFlNjRjNzNmZTI2ODljNGUzOGU0ZWUyYjEyNWRjMzcxZCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCkBAIC0xNDg0LDE0ICsxNDg0LDE0IEBAIGNsYXNz
IEZpeHVwUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgCiAgICAgICAgIGNhc2Ug
R2V0Q2xvc3VyZVZhcjoKICAgICAgICAgY2FzZSBHZXRGcm9tQXJndW1lbnRzOgotICAgICAgICBj
YXNlIEdldFByb21pc2VJbnRlcm5hbEZpZWxkOiB7CisgICAgICAgIGNhc2UgR2V0SW50ZXJuYWxG
aWVsZDogewogICAgICAgICAgICAgZml4RWRnZTxLbm93bkNlbGxVc2U+KG5vZGUtPmNoaWxkMSgp
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBQdXRDbG9z
dXJlVmFyOgogICAgICAgICBjYXNlIFB1dFRvQXJndW1lbnRzOgotICAgICAgICBjYXNlIFB1dFBy
b21pc2VJbnRlcm5hbEZpZWxkOiB7CisgICAgICAgIGNhc2UgUHV0SW50ZXJuYWxGaWVsZDogewog
ICAgICAgICAgICAgZml4RWRnZTxLbm93bkNlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAg
ICAgICAgIHNwZWN1bGF0ZUZvckJhcnJpZXIobm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAg
YnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcAppbmRleCBmYjcz
ZGU2ZmQ0ZjEwNmNkMzc2MjhhMmRhZDAwMTY1ZWJiYTM2NDhhLi5mOGVlOTljMzY3NWYzMGUxNWUz
ODdjMzRlNGYwMWY3NDMzYmZmMzQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR01heUV4aXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5
RXhpdC5jcHAKQEAgLTEwMSw3ICsxMDEsNyBAQCBFeGl0TW9kZSBtYXlFeGl0SW1wbChHcmFwaCYg
Z3JhcGgsIE5vZGUqIG5vZGUsIFN0YXRlVHlwZSYgc3RhdGUpCiAgICAgY2FzZSBGZW5jZWRTdG9y
ZUJhcnJpZXI6CiAgICAgY2FzZSBQdXRCeU9mZnNldDoKICAgICBjYXNlIFB1dENsb3N1cmVWYXI6
Ci0gICAgY2FzZSBQdXRQcm9taXNlSW50ZXJuYWxGaWVsZDoKKyAgICBjYXNlIFB1dEludGVybmFs
RmllbGQ6CiAgICAgY2FzZSBSZWNvcmRSZWdFeHBDYWNoZWRSZXN1bHQ6CiAgICAgY2FzZSBOdWtl
U3RydWN0dXJlQW5kU2V0QnV0dGVyZmx5OgogICAgIGNhc2UgRmlsdGVyQ2FsbExpbmtTdGF0dXM6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCmluZGV4IDY5MDIwMjUwNzM5NTMwZDg3MDdi
MzQzNWEyMDVhODgwZDUwYmJkOGQuLjY5ZjA4YzE4NmQ0OGNlYmY2Yzc2Yjg5YTRkNWQ0ODQ0MDdk
YjNkMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCkBAIC0xMjg2LDcgKzEyODYs
NyBAQCBzdHJ1Y3QgTm9kZSB7CiAKICAgICB1bnNpZ25lZCBoYXNJbnRlcm5hbEZpZWxkSW5kZXgo
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIG9wKCkgPT0gR2V0UHJvbWlzZUludGVybmFsRmllbGQg
fHwgb3AoKSA9PSBQdXRQcm9taXNlSW50ZXJuYWxGaWVsZDsKKyAgICAgICAgcmV0dXJuIG9wKCkg
PT0gR2V0SW50ZXJuYWxGaWVsZCB8fCBvcCgpID09IFB1dEludGVybmFsRmllbGQ7CiAgICAgfQog
CiAgICAgdW5zaWduZWQgaW50ZXJuYWxGaWVsZEluZGV4KCkKQEAgLTE2OTksNyArMTY5OSw3IEBA
IHN0cnVjdCBOb2RlIHsKICAgICAgICAgY2FzZSBHZXRCeU9mZnNldDoKICAgICAgICAgY2FzZSBN
dWx0aUdldEJ5T2Zmc2V0OgogICAgICAgICBjYXNlIEdldENsb3N1cmVWYXI6Ci0gICAgICAgIGNh
c2UgR2V0UHJvbWlzZUludGVybmFsRmllbGQ6CisgICAgICAgIGNhc2UgR2V0SW50ZXJuYWxGaWVs
ZDoKICAgICAgICAgY2FzZSBHZXRGcm9tQXJndW1lbnRzOgogICAgICAgICBjYXNlIEdldEFyZ3Vt
ZW50OgogICAgICAgICBjYXNlIEFycmF5UG9wOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlVHlwZS5oCmluZGV4IGRkNGVmY2RkMjg5YTM1NTNjNDZhZDhjOWZhMzBlYzQ0YTQwYTYyZjUu
LjRkNzE1ODJlMTdhNjkxYTA1OGE4MzQ3MjI4NGY2MDE5Zjk3ZDgwMzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKQEAgLTQwMSw4ICs0MDEsOCBAQCBuYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oU2V0RnVuY3Rpb25OYW1lLCBOb2RlTXVz
dEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oSGFzT3duUHJvcGVydHksIE5vZGVSZXN1bHRCb29sZWFu
KSBcCiAgICAgXAotICAgIG1hY3JvKEdldFByb21pc2VJbnRlcm5hbEZpZWxkLCBOb2RlUmVzdWx0
SlMpIFwKLSAgICBtYWNybyhQdXRQcm9taXNlSW50ZXJuYWxGaWVsZCwgTm9kZU11c3RHZW5lcmF0
ZSkgXAorICAgIG1hY3JvKEdldEludGVybmFsRmllbGQsIE5vZGVSZXN1bHRKUykgXAorICAgIG1h
Y3JvKFB1dEludGVybmFsRmllbGQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBcCiAgICAgbWFj
cm8oQ3JlYXRlQWN0aXZhdGlvbiwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oUHVzaFdpdGhT
Y29wZSwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNl
LmNwcAppbmRleCAzMzdjOGI0MzlmODNjYmQ0MTVkY2JhMGY4ZTQzMDRlMGYxNDVhZTZhLi40OGE0
MWIzMDcyYjc2NzYzNjE5MTA0NTNhNGRlNGY1YWFlYjU0YmFiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNl
LmNwcApAQCAtODI3LDcgKzgyNyw3IEBAIGNsYXNzIFByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNl
IDogcHVibGljIFBoYXNlIHsKICAgICAgICAgY2FzZSBHZXRHbG9iYWxWYXI6CiAgICAgICAgIGNh
c2UgR2V0R2xvYmFsTGV4aWNhbFZhcmlhYmxlOgogICAgICAgICBjYXNlIEdldENsb3N1cmVWYXI6
Ci0gICAgICAgIGNhc2UgR2V0UHJvbWlzZUludGVybmFsRmllbGQ6CisgICAgICAgIGNhc2UgR2V0
SW50ZXJuYWxGaWVsZDoKICAgICAgICAgY2FzZSBHZXRGcm9tQXJndW1lbnRzOgogICAgICAgICBj
YXNlIExvYWRLZXlGcm9tTWFwQnVja2V0OgogICAgICAgICBjYXNlIExvYWRWYWx1ZUZyb21NYXBC
dWNrZXQ6CkBAIC0xMjcwLDcgKzEyNzAsNyBAQCBjbGFzcyBQcmVkaWN0aW9uUHJvcGFnYXRpb25Q
aGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgIGNhc2UgUHV0QnlJZFdpdGhUaGlzOgogICAg
ICAgICBjYXNlIFB1dEJ5VmFsOgogICAgICAgICBjYXNlIFB1dENsb3N1cmVWYXI6Ci0gICAgICAg
IGNhc2UgUHV0UHJvbWlzZUludGVybmFsRmllbGQ6CisgICAgICAgIGNhc2UgUHV0SW50ZXJuYWxG
aWVsZDoKICAgICAgICAgY2FzZSBQdXRUb0FyZ3VtZW50czoKICAgICAgICAgY2FzZSBSZXR1cm46
CiAgICAgICAgIGNhc2UgVGhyb3c6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2Fm
ZVRvRXhlY3V0ZS5oCmluZGV4IDA1NjBlZWNlOTg5NjAzNjRhOTlmZTkyNTY4ZThkNTY4ZDcyNTMz
MGEuLmNhOGFlYTMwYTM1MjY2YzY3NTQ1OWI5YjVlZjU0NTJjNTMxNzZkNWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCkBAIC0yODMsOCArMjgzLDgg
QEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdy
YXBoLCBOb2RlKiBub2RlLCBib29sIGlnbm8KICAgICBjYXNlIEdldEdsb2JhbFZhcjoKICAgICBj
YXNlIEdldEdsb2JhbExleGljYWxWYXJpYWJsZToKICAgICBjYXNlIFB1dEdsb2JhbFZhcmlhYmxl
OgotICAgIGNhc2UgR2V0UHJvbWlzZUludGVybmFsRmllbGQ6Ci0gICAgY2FzZSBQdXRQcm9taXNl
SW50ZXJuYWxGaWVsZDoKKyAgICBjYXNlIEdldEludGVybmFsRmllbGQ6CisgICAgY2FzZSBQdXRJ
bnRlcm5hbEZpZWxkOgogICAgIGNhc2UgQ2hlY2tDZWxsOgogICAgIGNhc2UgQ2hlY2tCYWRDZWxs
OgogICAgIGNhc2UgQ2hlY2tOb3RFbXB0eToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggNzNlZWRjMzBlOTBjZmEyOWYzOTJjNTE0MzQx
OWQzN2NhZGEyMWNiMC4uYzNmZTVhNDliMDAzMGM2NDAwMTM3MzBjMWIzMGRlNWQwZmQ5NGRlYyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAK
QEAgLTExMjcwLDcgKzExMjcwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dENs
b3N1cmVWYXIoTm9kZSogbm9kZSkKICAgICBub1Jlc3VsdChub2RlKTsKIH0KIAotdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUdldFByb21pc2VJbnRlcm5hbEZpZWxkKE5vZGUqIG5vZGUpCit2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0SW50ZXJuYWxGaWVsZChOb2RlKiBub2RlKQog
ewogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwog
ICAgIEpTVmFsdWVSZWdzVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKQEAgLTExMjc4LDExICsxMTI3
OCwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0UHJvbWlzZUludGVybmFsRmll
bGQoTm9kZSogbm9kZSkKICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgSlNW
YWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CiAKLSAgICBtX2ppdC5sb2FkVmFs
dWUoSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNQcm9taXNlOjpvZmZzZXRPZkludGVy
bmFsRmllbGQobm9kZS0+aW50ZXJuYWxGaWVsZEluZGV4KCkpKSwgcmVzdWx0UmVncyk7CisgICAg
bV9qaXQubG9hZFZhbHVlKEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTSW50ZXJuYWxG
aWVsZE9iamVjdEltcGw8Pjo6b2Zmc2V0T2ZJbnRlcm5hbEZpZWxkKG5vZGUtPmludGVybmFsRmll
bGRJbmRleCgpKSksIHJlc3VsdFJlZ3MpOwogICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywg
bm9kZSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRQcm9taXNlSW50ZXJu
YWxGaWVsZChOb2RlKiBub2RlKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEludGVy
bmFsRmllbGQoTm9kZSogbm9kZSkKIHsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRo
aXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2Rl
LT5jaGlsZDIoKSk7CkBAIC0xMTI5MCw3ICsxMTI5MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVQdXRQcm9taXNlSW50ZXJuYWxGaWVsZChOb2RlKiBub2RlKQogICAgIEdQUlJlZyBi
YXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5q
c1ZhbHVlUmVncygpOwogCi0gICAgbV9qaXQuc3RvcmVWYWx1ZSh2YWx1ZVJlZ3MsIEpJVENvbXBp
bGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTUHJvbWlzZTo6b2Zmc2V0T2ZJbnRlcm5hbEZpZWxkKG5v
ZGUtPmludGVybmFsRmllbGRJbmRleCgpKSkpOworICAgIG1faml0LnN0b3JlVmFsdWUodmFsdWVS
ZWdzLCBKSVRDb21waWxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0ludGVybmFsRmllbGRPYmplY3RJ
bXBsPD46Om9mZnNldE9mSW50ZXJuYWxGaWVsZChub2RlLT5pbnRlcm5hbEZpZWxkSW5kZXgoKSkp
KTsKICAgICBub1Jlc3VsdChub2RlKTsKIH0KIApAQCAtMTI3NTksOCArMTI3NTksOCBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3JlYXRlUHJvbWlzZShOb2RlKiBub2RlKQogICAgICAg
ICBlbWl0QWxsb2NhdGVKU09iamVjdFdpdGhLbm93blNpemU8SlNJbnRlcm5hbFByb21pc2U+KHJl
c3VsdEdQUiwgc3RydWN0dXJlR1BSLCBidXR0ZXJmbHksIHNjcmF0Y2gxR1BSLCBzY3JhdGNoMkdQ
Uiwgc2xvd0Nhc2VzLCBzaXplb2YoSlNJbnRlcm5hbFByb21pc2UpKTsKICAgICBlbHNlCiAgICAg
ICAgIGVtaXRBbGxvY2F0ZUpTT2JqZWN0V2l0aEtub3duU2l6ZTxKU1Byb21pc2U+KHJlc3VsdEdQ
Uiwgc3RydWN0dXJlR1BSLCBidXR0ZXJmbHksIHNjcmF0Y2gxR1BSLCBzY3JhdGNoMkdQUiwgc2xv
d0Nhc2VzLCBzaXplb2YoSlNQcm9taXNlKSk7Ci0gICAgbV9qaXQuc3RvcmVUcnVzdGVkVmFsdWUo
anNOdW1iZXIoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTUHJvbWlzZTo6U3RhdHVzOjpQZW5kaW5n
KSksIENDYWxsSGVscGVyczo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTUHJvbWlzZTo6b2Zmc2V0T2ZJ
bnRlcm5hbEZpZWxkKHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU1Byb21pc2U6OkZpZWxkOjpGbGFn
cykpKSk7Ci0gICAgbV9qaXQuc3RvcmVUcnVzdGVkVmFsdWUoanNVbmRlZmluZWQoKSwgQ0NhbGxI
ZWxwZXJzOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNQcm9taXNlOjpvZmZzZXRPZkludGVybmFsRmll
bGQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTUHJvbWlzZTo6RmllbGQ6OlJlYWN0aW9uc09yUmVz
dWx0KSkpKTsKKyAgICBtX2ppdC5zdG9yZVRydXN0ZWRWYWx1ZShqc051bWJlcihzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNQcm9taXNlOjpTdGF0dXM6OlBlbmRpbmcpKSwgQ0NhbGxIZWxwZXJzOjpB
ZGRyZXNzKHJlc3VsdEdQUiwgSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbDw+OjpvZmZzZXRPZklu
dGVybmFsRmllbGQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTUHJvbWlzZTo6RmllbGQ6OkZsYWdz
KSkpKTsKKyAgICBtX2ppdC5zdG9yZVRydXN0ZWRWYWx1ZShqc1VuZGVmaW5lZCgpLCBDQ2FsbEhl
bHBlcnM6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0ludGVybmFsRmllbGRPYmplY3RJbXBsPD46Om9m
ZnNldE9mSW50ZXJuYWxGaWVsZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNQcm9taXNlOjpGaWVs
ZDo6UmVhY3Rpb25zT3JSZXN1bHQpKSkpOwogICAgIG1faml0Lm11dGF0b3JGZW5jZShtX2ppdC52
bSgpKTsKIAogICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93Q2FzZXMs
IHRoaXMsIG5vZGUtPmlzSW50ZXJuYWxQcm9taXNlKCkgPyBvcGVyYXRpb25DcmVhdGVJbnRlcm5h
bFByb21pc2UgOiBvcGVyYXRpb25DcmVhdGVQcm9taXNlLCByZXN1bHRHUFIsIGNhbGxlZUdQUiwg
VHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9qaXQuZ3JhcGgoKSwgZ2xvYmFsT2JqZWN0KSkp
OwpAQCAtMTI4MTUsOCArMTI4MTUsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3
UHJvbWlzZShOb2RlKiBub2RlKQogICAgICAgICBlbWl0QWxsb2NhdGVKU09iamVjdFdpdGhLbm93
blNpemU8SlNJbnRlcm5hbFByb21pc2U+KHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cihzdHJ1Y3R1
cmUpLCBidXR0ZXJmbHksIHNjcmF0Y2gxR1BSLCBzY3JhdGNoMkdQUiwgc2xvd0Nhc2VzLCBzaXpl
b2YoSlNJbnRlcm5hbFByb21pc2UpKTsKICAgICBlbHNlCiAgICAgICAgIGVtaXRBbGxvY2F0ZUpT
T2JqZWN0V2l0aEtub3duU2l6ZTxKU1Byb21pc2U+KHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cihz
dHJ1Y3R1cmUpLCBidXR0ZXJmbHksIHNjcmF0Y2gxR1BSLCBzY3JhdGNoMkdQUiwgc2xvd0Nhc2Vz
LCBzaXplb2YoSlNQcm9taXNlKSk7Ci0gICAgbV9qaXQuc3RvcmVUcnVzdGVkVmFsdWUoanNOdW1i
ZXIoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTUHJvbWlzZTo6U3RhdHVzOjpQZW5kaW5nKSksIEND
YWxsSGVscGVyczo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTUHJvbWlzZTo6b2Zmc2V0T2ZJbnRlcm5h
bEZpZWxkKHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU1Byb21pc2U6OkZpZWxkOjpGbGFncykpKSk7
Ci0gICAgbV9qaXQuc3RvcmVUcnVzdGVkVmFsdWUoanNVbmRlZmluZWQoKSwgQ0NhbGxIZWxwZXJz
OjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNQcm9taXNlOjpvZmZzZXRPZkludGVybmFsRmllbGQoc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTUHJvbWlzZTo6RmllbGQ6OlJlYWN0aW9uc09yUmVzdWx0KSkp
KTsKKyAgICBtX2ppdC5zdG9yZVRydXN0ZWRWYWx1ZShqc051bWJlcihzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNQcm9taXNlOjpTdGF0dXM6OlBlbmRpbmcpKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNz
KHJlc3VsdEdQUiwgSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbDw+OjpvZmZzZXRPZkludGVybmFs
RmllbGQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTUHJvbWlzZTo6RmllbGQ6OkZsYWdzKSkpKTsK
KyAgICBtX2ppdC5zdG9yZVRydXN0ZWRWYWx1ZShqc1VuZGVmaW5lZCgpLCBDQ2FsbEhlbHBlcnM6
OkFkZHJlc3MocmVzdWx0R1BSLCBKU0ludGVybmFsRmllbGRPYmplY3RJbXBsPD46Om9mZnNldE9m
SW50ZXJuYWxGaWVsZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNQcm9taXNlOjpGaWVsZDo6UmVh
Y3Rpb25zT3JSZXN1bHQpKSkpOwogICAgIG1faml0Lm11dGF0b3JGZW5jZShtX2ppdC52bSgpKTsK
IAogICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93Q2FzZXMsIHRoaXMs
IG5vZGUtPmlzSW50ZXJuYWxQcm9taXNlKCkgPyBvcGVyYXRpb25OZXdJbnRlcm5hbFByb21pc2Ug
OiBvcGVyYXRpb25OZXdQcm9taXNlLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHIoc3RydWN0dXJl
KSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCmlu
ZGV4IDE0ZDQ3ZjJkYTBjYjA2NDg0MTU0YzgxZDg4NWQyMTM1Yjc5NTNlNjMuLmY5OTFkZDIwMTYy
NGU2MDNiMjFlZDczZGQwM2M1M2MzYjczMWFkZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKQEAgLTE0NDgsOCArMTQ0OCw4IEBAIGNsYXNzIFNw
ZWN1bGF0aXZlSklUIHsKICAgICB2b2lkIGNvbXBpbGVQdXREeW5hbWljVmFyKE5vZGUqKTsKICAg
ICB2b2lkIGNvbXBpbGVHZXRDbG9zdXJlVmFyKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVQdXRD
bG9zdXJlVmFyKE5vZGUqKTsKLSAgICB2b2lkIGNvbXBpbGVHZXRQcm9taXNlSW50ZXJuYWxGaWVs
ZChOb2RlKik7Ci0gICAgdm9pZCBjb21waWxlUHV0UHJvbWlzZUludGVybmFsRmllbGQoTm9kZSop
OworICAgIHZvaWQgY29tcGlsZUdldEludGVybmFsRmllbGQoTm9kZSopOworICAgIHZvaWQgY29t
cGlsZVB1dEludGVybmFsRmllbGQoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUNvbXBhcmVFcVB0
cihOb2RlKik7CiAgICAgdm9pZCBjb21waWxlRGVmaW5lRGF0YVByb3BlcnR5KE5vZGUqKTsKICAg
ICB2b2lkIGNvbXBpbGVEZWZpbmVBY2Nlc3NvclByb3BlcnR5KE5vZGUqKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4
IGMzZGEwOGIxN2U5NTNiZGQ1YjAxNTU5NTE3YjhmMjkzZDJmNGUyODIuLjA5Y2YwOTg0Njk4Yjlm
NzkzNzZmMDU2NDE3ZTU3MTYwMzlhZTU2ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtMzI1NywxMyArMzI1Nywx
MyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJy
ZWFrOwogICAgIH0KIAotICAgIGNhc2UgR2V0UHJvbWlzZUludGVybmFsRmllbGQ6IHsKLSAgICAg
ICAgY29tcGlsZUdldFByb21pc2VJbnRlcm5hbEZpZWxkKG5vZGUpOworICAgIGNhc2UgR2V0SW50
ZXJuYWxGaWVsZDogeworICAgICAgICBjb21waWxlR2V0SW50ZXJuYWxGaWVsZChub2RlKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgY2FzZSBQdXRQcm9taXNlSW50ZXJuYWxGaWVsZDog
ewotICAgICAgICBjb21waWxlUHV0UHJvbWlzZUludGVybmFsRmllbGQobm9kZSk7CisgICAgY2Fz
ZSBQdXRJbnRlcm5hbEZpZWxkOiB7CisgICAgICAgIGNvbXBpbGVQdXRJbnRlcm5hbEZpZWxkKG5v
ZGUpOwogICAgICAgICBicmVhazsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IGM5ZTI5ZjRjM2E3NTE0YzZhZWU3
YTZjMmViYTM1ZWJjYjk0NzY2YmQuLmYxZjA0YzNjOTg3NWE2MzE2NWE2MjhmZjlmMWNlZGI1ZmM3
MDZiMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDY0LmNwcApAQCAtMzUzOCwxMyArMzUzOCwxMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIGNhc2UgR2V0
UHJvbWlzZUludGVybmFsRmllbGQ6IHsKLSAgICAgICAgY29tcGlsZUdldFByb21pc2VJbnRlcm5h
bEZpZWxkKG5vZGUpOworICAgIGNhc2UgR2V0SW50ZXJuYWxGaWVsZDogeworICAgICAgICBjb21w
aWxlR2V0SW50ZXJuYWxGaWVsZChub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAg
Y2FzZSBQdXRQcm9taXNlSW50ZXJuYWxGaWVsZDogewotICAgICAgICBjb21waWxlUHV0UHJvbWlz
ZUludGVybmFsRmllbGQobm9kZSk7CisgICAgY2FzZSBQdXRJbnRlcm5hbEZpZWxkOiB7CisgICAg
ICAgIGNvbXBpbGVQdXRJbnRlcm5hbEZpZWxkKG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVy
SW5zZXJ0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJh
cnJpZXJJbnNlcnRpb25QaGFzZS5jcHAKaW5kZXggNGM3M2NmNjYwMzU5MjgxZmQwMGZkYTUyYmFi
MjgwY2YzYjI3OGM2Yi4uMjRiNTVlNzg4ZDlkZTliNTA2OTk2NzU1NzUzNzczOGIzMzJiZTM1NyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNl
cnRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJh
cnJpZXJJbnNlcnRpb25QaGFzZS5jcHAKQEAgLTI4Miw3ICsyODIsNyBAQCBjbGFzcyBTdG9yZUJh
cnJpZXJJbnNlcnRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICBjYXNlIFB1
dENsb3N1cmVWYXI6CiAgICAgICAgICAgICBjYXNlIFB1dFRvQXJndW1lbnRzOgogICAgICAgICAg
ICAgY2FzZSBTZXRSZWdFeHBPYmplY3RMYXN0SW5kZXg6Ci0gICAgICAgICAgICBjYXNlIFB1dFBy
b21pc2VJbnRlcm5hbEZpZWxkOiB7CisgICAgICAgICAgICBjYXNlIFB1dEludGVybmFsRmllbGQ6
IHsKICAgICAgICAgICAgICAgICBjb25zaWRlckJhcnJpZXIobV9ub2RlLT5jaGlsZDEoKSwgbV9u
b2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9z
aXRvcnkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3Np
dG9yeS5oCmluZGV4IGUyZWI4MTNhMTEzNTJlMDg2MmYyMDY5NTI5NTExZDBiZjVlMDk0MTMuLjdi
MGM4OWE5NGNhMzI4ZWU5NmVlZTBmNGI5NmZlMjI3Y2Q3ZDFkYzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCkBAIC0x
NDksNyArMTQ5LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewogICAgIG1hY3Jv
KERpcmVjdEFyZ3VtZW50c19zdG9yYWdlLCBEaXJlY3RBcmd1bWVudHM6OnN0b3JhZ2VPZmZzZXQo
KSwgc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSkgXAogICAgIG1hY3JvKEpTTGV4aWNhbEVudmlyb25t
ZW50X3ZhcmlhYmxlcywgSlNMZXhpY2FsRW52aXJvbm1lbnQ6Om9mZnNldE9mVmFyaWFibGVzKCks
IHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpIFwKICAgICBtYWNybyhKU1Byb3BlcnR5TmFtZUVudW1l
cmF0b3JfY2FjaGVkUHJvcGVydHlOYW1lc1ZlY3RvckNvbnRlbnRzLCAwLCBzaXplb2YoV3JpdGVC
YXJyaWVyPEpTU3RyaW5nPikpIFwKLSAgICBtYWNybyhKU1Byb21pc2VfaW50ZXJuYWxGaWVsZHMs
IEpTUHJvbWlzZTo6b2Zmc2V0T2ZJbnRlcm5hbEZpZWxkcygpLCBzaXplb2YoV3JpdGVCYXJyaWVy
PFVua25vd24+KSkgXAorICAgIG1hY3JvKEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGxfaW50ZXJu
YWxGaWVsZHMsIEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGw8Pjo6b2Zmc2V0T2ZJbnRlcm5hbEZp
ZWxkcygpLCBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSkgXAogICAgIG1hY3JvKFNjb3Bl
ZEFyZ3VtZW50c19TdG9yYWdlX3N0b3JhZ2UsIDAsIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpIFwK
ICAgICBtYWNybyhXcml0ZUJhcnJpZXJCdWZmZXJfYnVmZmVyQ29udGVudHMsIDAsIHNpemVvZihK
U0NlbGwqKSkgXAogICAgIG1hY3JvKGNoYXJhY3RlcnM4LCAwLCBzaXplb2YoTENoYXIpKSBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKaW5kZXggNDNj
OTY4MzhmMTFjYTUwNGNkY2MzZDgwOGI1YWQxNzVlZTk0MmY2MS4uODQ1YzQxN2VjZGIxNGJmNTBh
NDVmNWU4ZTA5ZTNhZTIzOTlmOWQ4MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMQ2FwYWJpbGl0aWVzLmNwcApAQCAtMTQyLDggKzE0Miw4IEBAIGlubGluZSBDYXBhYmlsaXR5
TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgTmV3QXN5bmNHZW5lcmF0b3JG
dW5jdGlvbjoKICAgICBjYXNlIEdldENsb3N1cmVWYXI6CiAgICAgY2FzZSBQdXRDbG9zdXJlVmFy
OgotICAgIGNhc2UgR2V0UHJvbWlzZUludGVybmFsRmllbGQ6Ci0gICAgY2FzZSBQdXRQcm9taXNl
SW50ZXJuYWxGaWVsZDoKKyAgICBjYXNlIEdldEludGVybmFsRmllbGQ6CisgICAgY2FzZSBQdXRJ
bnRlcm5hbEZpZWxkOgogICAgIGNhc2UgQ3JlYXRlRGlyZWN0QXJndW1lbnRzOgogICAgIGNhc2Ug
Q3JlYXRlU2NvcGVkQXJndW1lbnRzOgogICAgIGNhc2UgQ3JlYXRlQ2xvbmVkQXJndW1lbnRzOgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IGFi
ZTY1MTg1NTI2ZjI0M2ZhNzFmM2MyM2E2ZWEwZGU0YmQ3ZThlN2EuLmE5YmVhYTI2Mjg5NTk3NWVi
MmQzOWJlZWQxY2RiMWYwZGVlMTIzZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTExNzgsMTEgKzExNzgsMTEgQEAgY2xhc3MgTG93ZXJE
RkdUb0IzIHsKICAgICAgICAgY2FzZSBQdXRDbG9zdXJlVmFyOgogICAgICAgICAgICAgY29tcGls
ZVB1dENsb3N1cmVWYXIoKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEdldFBy
b21pc2VJbnRlcm5hbEZpZWxkOgotICAgICAgICAgICAgY29tcGlsZUdldFByb21pc2VJbnRlcm5h
bEZpZWxkKCk7CisgICAgICAgIGNhc2UgR2V0SW50ZXJuYWxGaWVsZDoKKyAgICAgICAgICAgIGNv
bXBpbGVHZXRJbnRlcm5hbEZpZWxkKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBQdXRQcm9taXNlSW50ZXJuYWxGaWVsZDoKLSAgICAgICAgICAgIGNvbXBpbGVQdXRQcm9taXNl
SW50ZXJuYWxGaWVsZCgpOworICAgICAgICAgICAgY29tcGlsZVB1dEludGVybmFsRmllbGQoKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEdldEZyb21Bcmd1bWVudHM6CiAgICAg
ICAgICAgICBjb21waWxlR2V0RnJvbUFyZ3VtZW50cygpOwpAQCAtNTkxMyw4ICs1OTEzLDggQEAg
Y2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgIHByb21pc2UgPSBhbGxvY2F0ZU9iamVj
dDxKU0ludGVybmFsUHJvbWlzZT4obV9ub2RlLT5zdHJ1Y3R1cmUoKSwgbV9vdXQuaW50UHRyWmVy
bywgc2xvd0Nhc2UpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBwcm9taXNlID0gYWxsb2Nh
dGVPYmplY3Q8SlNQcm9taXNlPihtX25vZGUtPnN0cnVjdHVyZSgpLCBtX291dC5pbnRQdHJaZXJv
LCBzbG93Q2FzZSk7Ci0gICAgICAgIG1fb3V0LnN0b3JlNjQobV9vdXQuY29uc3RJbnQ2NChKU1Zh
bHVlOjplbmNvZGUoanNOdW1iZXIoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTUHJvbWlzZTo6U3Rh
dHVzOjpQZW5kaW5nKSkpKSwgcHJvbWlzZSwgbV9oZWFwcy5KU1Byb21pc2VfaW50ZXJuYWxGaWVs
ZHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTUHJvbWlzZTo6RmllbGQ6OkZsYWdzKV0pOwotICAg
ICAgICBtX291dC5zdG9yZTY0KG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpKSwgcHJvbWlzZSwgbV9oZWFwcy5KU1Byb21pc2VfaW50ZXJuYWxGaWVsZHNbc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTUHJvbWlzZTo6RmllbGQ6OlJlYWN0aW9uc09yUmVzdWx0KV0p
OworICAgICAgICBtX291dC5zdG9yZTY0KG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6ZW5jb2Rl
KGpzTnVtYmVyKHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU1Byb21pc2U6OlN0YXR1czo6UGVuZGlu
ZykpKSksIHByb21pc2UsIG1faGVhcHMuSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbF9pbnRlcm5h
bEZpZWxkc1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNQcm9taXNlOjpGaWVsZDo6RmxhZ3MpXSk7
CisgICAgICAgIG1fb3V0LnN0b3JlNjQobV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSkpLCBwcm9taXNlLCBtX2hlYXBzLkpTSW50ZXJuYWxGaWVsZE9iamVjdElt
cGxfaW50ZXJuYWxGaWVsZHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTUHJvbWlzZTo6RmllbGQ6
OlJlYWN0aW9uc09yUmVzdWx0KV0pOwogICAgICAgICBtdXRhdG9yRmVuY2UoKTsKICAgICAgICAg
VmFsdWVGcm9tQmxvY2sgZmFzdFJlc3VsdCA9IG1fb3V0LmFuY2hvcihwcm9taXNlKTsKICAgICAg
ICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwpAQCAtNjMyMyw4ICs2MzIzLDggQEAgY2xhc3Mg
TG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgIHByb21pc2UgPSBhbGxvY2F0ZU9iamVjdDxKU0lu
dGVybmFsUHJvbWlzZT4obV9vdXQucGhpKHBvaW50ZXJUeXBlKCksIHByb21pc2VTdHJ1Y3R1cmUs
IGRlcml2ZWRTdHJ1Y3R1cmUpLCBtX291dC5pbnRQdHJaZXJvLCBzbG93Q2FzZSk7CiAgICAgICAg
IGVsc2UKICAgICAgICAgICAgIHByb21pc2UgPSBhbGxvY2F0ZU9iamVjdDxKU1Byb21pc2U+KG1f
b3V0LnBoaShwb2ludGVyVHlwZSgpLCBwcm9taXNlU3RydWN0dXJlLCBkZXJpdmVkU3RydWN0dXJl
KSwgbV9vdXQuaW50UHRyWmVybywgc2xvd0Nhc2UpOwotICAgICAgICBtX291dC5zdG9yZTY0KG1f
b3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU1Byb21pc2U6OlN0YXR1czo6UGVuZGluZykpKSksIHByb21pc2UsIG1faGVhcHMuSlNQ
cm9taXNlX2ludGVybmFsRmllbGRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihKU1Byb21pc2U6OkZp
ZWxkOjpGbGFncyldKTsKLSAgICAgICAgbV9vdXQuc3RvcmU2NChtX291dC5jb25zdEludDY0KEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKSksIHByb21pc2UsIG1faGVhcHMuSlNQcm9taXNl
X2ludGVybmFsRmllbGRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihKU1Byb21pc2U6OkZpZWxkOjpS
ZWFjdGlvbnNPclJlc3VsdCldKTsKKyAgICAgICAgbV9vdXQuc3RvcmU2NChtX291dC5jb25zdElu
dDY0KEpTVmFsdWU6OmVuY29kZShqc051bWJlcihzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNQcm9t
aXNlOjpTdGF0dXM6OlBlbmRpbmcpKSkpLCBwcm9taXNlLCBtX2hlYXBzLkpTSW50ZXJuYWxGaWVs
ZE9iamVjdEltcGxfaW50ZXJuYWxGaWVsZHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTUHJvbWlz
ZTo6RmllbGQ6OkZsYWdzKV0pOworICAgICAgICBtX291dC5zdG9yZTY0KG1fb3V0LmNvbnN0SW50
NjQoSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpKSwgcHJvbWlzZSwgbV9oZWFwcy5KU0lu
dGVybmFsRmllbGRPYmplY3RJbXBsX2ludGVybmFsRmllbGRzW3N0YXRpY19jYXN0PHVuc2lnbmVk
PihKU1Byb21pc2U6OkZpZWxkOjpSZWFjdGlvbnNPclJlc3VsdCldKTsKICAgICAgICAgbXV0YXRv
ckZlbmNlKCk7CiAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGZhc3RSZXN1bHQgPSBtX291dC5hbmNo
b3IocHJvbWlzZSk7CiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKQEAgLTc1MDQs
MjAgKzc1MDQsMjAgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgIG1faGVhcHMu
SlNMZXhpY2FsRW52aXJvbm1lbnRfdmFyaWFibGVzW21fbm9kZS0+c2NvcGVPZmZzZXQoKS5vZmZz
ZXQoKV0pOwogICAgIH0KICAgICAKLSAgICB2b2lkIGNvbXBpbGVHZXRQcm9taXNlSW50ZXJuYWxG
aWVsZCgpCisgICAgdm9pZCBjb21waWxlR2V0SW50ZXJuYWxGaWVsZCgpCiAgICAgewogICAgICAg
ICBzZXRKU1ZhbHVlKAogICAgICAgICAgICAgbV9vdXQubG9hZDY0KAogICAgICAgICAgICAgICAg
IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSksCi0gICAgICAgICAgICAgICAgbV9oZWFwcy5KU1By
b21pc2VfaW50ZXJuYWxGaWVsZHNbbV9ub2RlLT5pbnRlcm5hbEZpZWxkSW5kZXgoKV0pKTsKKyAg
ICAgICAgICAgICAgICBtX2hlYXBzLkpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGxfaW50ZXJuYWxG
aWVsZHNbbV9ub2RlLT5pbnRlcm5hbEZpZWxkSW5kZXgoKV0pKTsKICAgICB9CiAKLSAgICB2b2lk
IGNvbXBpbGVQdXRQcm9taXNlSW50ZXJuYWxGaWVsZCgpCisgICAgdm9pZCBjb21waWxlUHV0SW50
ZXJuYWxGaWVsZCgpCiAgICAgewogICAgICAgICBtX291dC5zdG9yZTY0KAogICAgICAgICAgICAg
bG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMigpKSwKICAgICAgICAgICAgIGxvd0NlbGwobV9ub2Rl
LT5jaGlsZDEoKSksCi0gICAgICAgICAgICBtX2hlYXBzLkpTUHJvbWlzZV9pbnRlcm5hbEZpZWxk
c1ttX25vZGUtPmludGVybmFsRmllbGRJbmRleCgpXSk7CisgICAgICAgICAgICBtX2hlYXBzLkpT
SW50ZXJuYWxGaWVsZE9iamVjdEltcGxfaW50ZXJuYWxGaWVsZHNbbV9ub2RlLT5pbnRlcm5hbEZp
ZWxkSW5kZXgoKV0pOwogICAgIH0KIAogICAgIHZvaWQgY29tcGlsZUdldEZyb21Bcmd1bWVudHMo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IGI5OWRkZGY4ZDlhZGNjYjQyZDg3MTM5
YWJlNDE5NjMzNjI4NzFlYzkuLjM2ZGU1M2EwYmMzYTcyZjU1NThkMTllZGE2NDc2YWYwNDk0NmVj
NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTQyNCw4ICs0MjQsOCBAQCB2b2lk
IEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF9wdXRf
Z2V0dGVyX2J5X3ZhbCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9zZXR0ZXJfYnlfdmFsKQog
Ci0gICAgICAgIERFRklORV9PUChvcF9nZXRfcHJvbWlzZV9pbnRlcm5hbF9maWVsZCkKLSAgICAg
ICAgREVGSU5FX09QKG9wX3B1dF9wcm9taXNlX2ludGVybmFsX2ZpZWxkKQorICAgICAgICBERUZJ
TkVfT1Aob3BfZ2V0X2ludGVybmFsX2ZpZWxkKQorICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2lu
dGVybmFsX2ZpZWxkKQogCiAgICAgICAgIERFRklORV9PUChvcF9yZXQpCiAgICAgICAgIERFRklO
RV9PUChvcF9yc2hpZnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCAyMDE4NjM4MGEwYWZh
YTY4Njk5Y2IyY2M4ODYzOWZiODgyNmQ3NmY1Li40MjdlOWFlZGY1OTg2YTQ2ZGQxZmJkNDVhZjA1
MmVkYjI3OTM1NTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTYzNiw4ICs2MzYsOCBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0X29wX2dldF9kaXJlY3RfcG5hbWUo
Y29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2VudW1lcmF0b3Jfc3Ry
dWN0dXJlX3BuYW1lKGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9l
bnVtZXJhdG9yX2dlbmVyaWNfcG5hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9p
ZCBlbWl0X29wX2dldF9wcm9taXNlX2ludGVybmFsX2ZpZWxkKGNvbnN0IEluc3RydWN0aW9uKik7
Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfcHJvbWlzZV9pbnRlcm5hbF9maWVsZChjb25zdCBJ
bnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X2ludGVybmFsX2ZpZWxkKGNv
bnN0IEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfaW50ZXJuYWxfZmll
bGQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2xvZ19zaGFkb3df
Y2hpY2tlbl9wcm9sb2d1ZShjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRf
b3BfbG9nX3NoYWRvd19jaGlja2VuX3RhaWwoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAppbmRleCA2YTgw
NjQxZjU4MmFjOGVjNTkyNjFjMWNhZjk3NjVlYjEyM2VjNmUxLi40MDc1OGU3ZjMwYWNjNGQ3Mjgy
ZWI4NTM1Y2I0ZDMxYmM4YzBlNzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVFByb3BlcnR5QWNjZXNzLmNwcApAQCAtMTIzNiw5ICsxMjM2LDkgQEAgdm9pZCBKSVQ6OmVt
aXRXcml0ZUJhcnJpZXIoSlNDZWxsKiBvd25lciwgdW5zaWduZWQgdmFsdWUsIFdyaXRlQmFycmll
ck1vZGUgbW9kZSkKICAgICAgICAgdmFsdWVOb3RDZWxsLmxpbmsodGhpcyk7CiB9CiAKLXZvaWQg
SklUOjplbWl0X29wX2dldF9wcm9taXNlX2ludGVybmFsX2ZpZWxkKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfaW50ZXJuYWxfZmll
bGQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKLSAgICBhdXRvIGJ5
dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEdldFByb21pc2VJbnRlcm5hbEZpZWxk
PigpOworICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0SW50
ZXJuYWxGaWVsZD4oKTsKICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1f
Y29kZUJsb2NrKTsKICAgICBpbnQgZHN0ID0gYnl0ZWNvZGUubV9kc3Qub2Zmc2V0KCk7CiAgICAg
aW50IGJhc2UgPSBieXRlY29kZS5tX2Jhc2Uub2Zmc2V0KCk7CkBAIC0xMjQ2LDE1ICsxMjQ2LDE1
IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9wcm9taXNlX2ludGVybmFsX2ZpZWxkKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3RpCiAgICAgQVNTRVJUKGluZGV4IDwgSlNQcm9taXNl
OjpudW1iZXJPZkludGVybmFsRmllbGRzKTsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIo
YmFzZSwgcmVnVDEpOwotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMSwgSlNQcm9taXNlOjpvZmZz
ZXRPZkludGVybmFsRmllbGQoaW5kZXgpKSwgcmVnVDApOworICAgIGxvYWRQdHIoQWRkcmVzcyhy
ZWdUMSwgSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbDw+OjpvZmZzZXRPZkludGVybmFsRmllbGQo
aW5kZXgpKSwgcmVnVDApOwogCiAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShtZXRhZGF0YSk7
CiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9v
cF9wdXRfcHJvbWlzZV9pbnRlcm5hbF9maWVsZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2ludGVybmFsX2ZpZWxkKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7Ci0gICAgYXV0byBieXRlY29kZSA9IGN1
cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRQcm9taXNlSW50ZXJuYWxGaWVsZD4oKTsKKyAgICBh
dXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFB1dEludGVybmFsRmllbGQ+
KCk7CiAgICAgaW50IGJhc2UgPSBieXRlY29kZS5tX2Jhc2Uub2Zmc2V0KCk7CiAgICAgaW50IHZh
bHVlID0gYnl0ZWNvZGUubV92YWx1ZS5vZmZzZXQoKTsKICAgICB1bnNpZ25lZCBpbmRleCA9IGJ5
dGVjb2RlLm1faW5kZXg7CkBAIC0xMjYyLDcgKzEyNjIsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9w
dXRfcHJvbWlzZV9pbnRlcm5hbF9maWVsZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aQogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCByZWdUMCk7CiAgICAgZW1p
dEdldFZpcnR1YWxSZWdpc3Rlcih2YWx1ZSwgcmVnVDEpOwotICAgIHN0b3JlUHRyKHJlZ1QxLCBB
ZGRyZXNzKHJlZ1QwLCBKU1Byb21pc2U6Om9mZnNldE9mSW50ZXJuYWxGaWVsZChpbmRleCkpKTsK
KyAgICBzdG9yZVB0cihyZWdUMSwgQWRkcmVzcyhyZWdUMCwgSlNJbnRlcm5hbEZpZWxkT2JqZWN0
SW1wbDw+OjpvZmZzZXRPZkludGVybmFsRmllbGQoaW5kZXgpKSk7CiAgICAgZW1pdFdyaXRlQmFy
cmllcihiYXNlLCB2YWx1ZSwgU2hvdWxkRmlsdGVyVmFsdWUpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAppbmRleCBi
ZmY4YjllMTljOGMzOWUwNmI5ZGZmOGEyNTY5OGUxOTM3MGQyMDQ3Li41MjEzNDMxMzgxYWU3MjM3
NzYxYmExNzM4MzcwODQwZGI2YTEwNzIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKQEAgLTEyMDMsOSArMTIwMyw5IEBA
IHZvaWQgSklUOjplbWl0X29wX3B1dF90b19hcmd1bWVudHMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKICAgICBzdG9yZTMyKHJlZ1QyLCBBZGRyZXNzKHJlZ1QwLCBEaXJl
Y3RBcmd1bWVudHM6OnN0b3JhZ2VPZmZzZXQoKSArIGluZGV4ICogc2l6ZW9mKFdyaXRlQmFycmll
cjxVbmtub3duPikgKyBQYXlsb2FkT2Zmc2V0KSk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2dl
dF9wcm9taXNlX2ludGVybmFsX2ZpZWxkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfaW50ZXJuYWxfZmllbGQoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKLSAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVu
dEluc3RydWN0aW9uLT5hczxPcEdldFByb21pc2VJbnRlcm5hbEZpZWxkPigpOworICAgIGF1dG8g
Ynl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0SW50ZXJuYWxGaWVsZD4oKTsK
ICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKICAg
ICBpbnQgZHN0ID0gYnl0ZWNvZGUubV9kc3Qub2Zmc2V0KCk7CiAgICAgaW50IGJhc2UgPSBieXRl
Y29kZS5tX2Jhc2Uub2Zmc2V0KCk7CkBAIC0xMjEzLDE1ICsxMjEzLDE1IEBAIHZvaWQgSklUOjpl
bWl0X29wX2dldF9wcm9taXNlX2ludGVybmFsX2ZpZWxkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3RpCiAgICAgQVNTRVJUKGluZGV4IDwgSlNQcm9taXNlOjpudW1iZXJPZkludGVy
bmFsRmllbGRzKTsKIAogICAgIGVtaXRMb2FkUGF5bG9hZChiYXNlLCByZWdUMik7Ci0gICAgbG9h
ZDMyKEFkZHJlc3MocmVnVDIsIEpTUHJvbWlzZTo6b2Zmc2V0T2ZJbnRlcm5hbEZpZWxkKGluZGV4
KSArIFRhZ09mZnNldCksIHJlZ1QxKTsKLSAgICBsb2FkMzIoQWRkcmVzcyhyZWdUMiwgSlNQcm9t
aXNlOjpvZmZzZXRPZkludGVybmFsRmllbGQoaW5kZXgpICsgUGF5bG9hZE9mZnNldCksIHJlZ1Qw
KTsKKyAgICBsb2FkMzIoQWRkcmVzcyhyZWdUMiwgSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbDw+
OjpvZmZzZXRPZkludGVybmFsRmllbGQoaW5kZXgpICsgVGFnT2Zmc2V0KSwgcmVnVDEpOworICAg
IGxvYWQzMihBZGRyZXNzKHJlZ1QyLCBKU0ludGVybmFsRmllbGRPYmplY3RJbXBsPD46Om9mZnNl
dE9mSW50ZXJuYWxGaWVsZChpbmRleCkgKyBQYXlsb2FkT2Zmc2V0KSwgcmVnVDApOwogICAgIGVt
aXRWYWx1ZVByb2ZpbGluZ1NpdGUoYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spKTsKICAg
ICBlbWl0U3RvcmUoZHN0LCByZWdUMSwgcmVnVDApOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9w
dXRfcHJvbWlzZV9pbnRlcm5hbF9maWVsZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2ludGVybmFsX2ZpZWxkKGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7Ci0gICAgYXV0byBieXRlY29kZSA9IGN1cnJl
bnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRQcm9taXNlSW50ZXJuYWxGaWVsZD4oKTsKKyAgICBhdXRv
IGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFB1dEludGVybmFsRmllbGQ+KCk7
CiAgICAgaW50IGJhc2UgPSBieXRlY29kZS5tX2Jhc2Uub2Zmc2V0KCk7CiAgICAgaW50IHZhbHVl
ID0gYnl0ZWNvZGUubV92YWx1ZS5vZmZzZXQoKTsKICAgICB1bnNpZ25lZCBpbmRleCA9IGJ5dGVj
b2RlLm1faW5kZXg7CkBAIC0xMjI5LDggKzEyMjksOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRf
cHJvbWlzZV9pbnRlcm5hbF9maWVsZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aQogCiAgICAgZW1pdExvYWRQYXlsb2FkKGJhc2UsIHJlZ1QwKTsKICAgICBlbWl0TG9hZCh2YWx1
ZSwgcmVnVDEsIHJlZ1QyKTsKLSAgICBzdG9yZTMyKHJlZ1QxLCBBZGRyZXNzKHJlZ1QwLCBKU1By
b21pc2U6Om9mZnNldE9mSW50ZXJuYWxGaWVsZChpbmRleCkgKyBUYWdPZmZzZXQpKTsKLSAgICBz
dG9yZTMyKHJlZ1QyLCBBZGRyZXNzKHJlZ1QwLCBKU1Byb21pc2U6Om9mZnNldE9mSW50ZXJuYWxG
aWVsZChpbmRleCkgKyBQYXlsb2FkT2Zmc2V0KSk7CisgICAgc3RvcmUzMihyZWdUMSwgQWRkcmVz
cyhyZWdUMCwgSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbDw+OjpvZmZzZXRPZkludGVybmFsRmll
bGQoaW5kZXgpICsgVGFnT2Zmc2V0KSk7CisgICAgc3RvcmUzMihyZWdUMiwgQWRkcmVzcyhyZWdU
MCwgSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbDw+OjpvZmZzZXRPZkludGVybmFsRmllbGQoaW5k
ZXgpICsgUGF5bG9hZE9mZnNldCkpOwogICAgIGVtaXRXcml0ZUJhcnJpZXIoYmFzZSwgdmFsdWUs
IFNob3VsZEZpbHRlclZhbHVlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAppbmRleCBiMTg1Y2U5MzhiMGVmOTFl
ZjBlYzUzMzA2NjYyMWE1NjliOGU4ZTEzLi5hMjVmOTg0YWJkYWM3YzQ3MTYyYzUwNmQ5NDE3ZDc1
MDkzODcyZDdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRP
ZmZzZXRzRXh0cmFjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRPZmZzZXRzRXh0cmFjdG9yLmNwcApAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgIkpTQ2Fz
dC5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5o
IgorI2luY2x1ZGUgIkpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGwuaCIKICNpbmNsdWRlICJKU0xl
eGljYWxFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgIkpTTW9kdWxlUmVjb3JkLmgiCiAjaW5jbHVk
ZSAiSlNPYmplY3QuaCIKQEAgLTc2LDYgKzc3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBM
TEludE9mZnNldHNFeHRyYWN0b3IgewogICAgIC8vIFRoZXNlIHR5cGVzIGFyZSB1c2VmdWwgc2lu
Y2Ugd2UgY2FuJ3QgdXNlICc8Li4uPicgc3ludGF4IGluIExMSW50IG9mZnNldHMgZXh0cmFjdGlv
bi4gZS5nLiBWZWN0b3I8aW50Pjo6bV9kYXRhCiAgICAgdXNpbmcgVmVjdG9yID0gV1RGOjpWZWN0
b3I8aW50PjsKKyAgICB1c2luZyBKU0ludGVybmFsRmllbGRPYmplY3RJbXBsID0gSlNDOjpKU0lu
dGVybmFsRmllbGRPYmplY3RJbXBsPD47CiAgICAgdXNpbmcgUmVmQ291bnRlZEFycmF5ID0gV1RG
OjpSZWZDb3VudGVkQXJyYXk8aW50PjsKIAogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCmluZGV4IGFjZDdlNGMyY2M2
MThjNDQ3MmM2MjQyOGM2YTExN2U0MmY4ODc2MzMuLjc0M2UyYWIxYmU5MWNkZWIyZmM1YTlhNmI4
YjU5Yjc3N2JmZDMxODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyLmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlci5hc20KQEAgLTE2NSw2ICsxNjUsNyBAQCBlbmQKIAogY29uc3Qg
SlNMZXhpY2FsRW52aXJvbm1lbnRfdmFyaWFibGVzID0gKHNpemVvZiBKU0xleGljYWxFbnZpcm9u
bWVudCArIFNsb3RTaXplIC0gMSkgJiB+KFNsb3RTaXplIC0gMSkKIGNvbnN0IERpcmVjdEFyZ3Vt
ZW50c19zdG9yYWdlID0gKHNpemVvZiBEaXJlY3RBcmd1bWVudHMgKyBTbG90U2l6ZSAtIDEpICYg
fihTbG90U2l6ZSAtIDEpCitjb25zdCBKU0ludGVybmFsRmllbGRPYmplY3RJbXBsX2ludGVybmFs
RmllbGRzID0gSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbDo6bV9pbnRlcm5hbEZpZWxkcwogCiBj
b25zdCBTdGFja0FsaWdubWVudCA9IGNvbnN0ZXhwciAoc3RhY2tBbGlnbm1lbnRCeXRlcygpKQog
Y29uc3QgU3RhY2tBbGlnbm1lbnRTbG90cyA9IGNvbnN0ZXhwciAoc3RhY2tBbGlnbm1lbnRSZWdp
c3RlcnMoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyMzJfNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KaW5kZXggMTViMTJkNGUzN2E5M2E0MWI2NzczYjU4Mjg4
ZGZkMDQ1YTM1ZTZkZi4uNTFkOTRlNmI2YzFlMDVhOTE2NDcwNTIwMTU5OTA0Yjg5Mzg2NDcxMSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIzMl82NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIzMl82NC5hc20KQEAgLTI1MjEsMjMgKzI1MjEsMjMgQEAgbGxpbnRPcFdpdGhSZXR1
cm4ob3BfZ2V0X3Jlc3RfbGVuZ3RoLCBPcEdldFJlc3RMZW5ndGgsIG1hY3JvIChzaXplLCBnZXQs
IGRpc3BhdGMKIGVuZCkKIAogCi1sbGludE9wV2l0aFByb2ZpbGUob3BfZ2V0X3Byb21pc2VfaW50
ZXJuYWxfZmllbGQsIE9wR2V0UHJvbWlzZUludGVybmFsRmllbGQsIG1hY3JvIChzaXplLCBnZXQs
IGRpc3BhdGNoLCByZXR1cm4pCitsbGludE9wV2l0aFByb2ZpbGUob3BfZ2V0X2ludGVybmFsX2Zp
ZWxkLCBPcEdldEludGVybmFsRmllbGQsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCByZXR1
cm4pCiAgICAgZ2V0KG1fYmFzZSwgdDApCiAgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQw
LCA4XSwgdDAKLSAgICBnZXR1KHNpemUsIE9wR2V0UHJvbWlzZUludGVybmFsRmllbGQsIG1faW5k
ZXgsIHQxKQotICAgIGxvYWRpIEpTUHJvbWlzZTo6bV9pbnRlcm5hbEZpZWxkcyArIFRhZ09mZnNl
dFt0MCwgdDEsIFNsb3RTaXplXSwgdDIKLSAgICBsb2FkaSBKU1Byb21pc2U6Om1faW50ZXJuYWxG
aWVsZHMgKyBQYXlsb2FkT2Zmc2V0W3QwLCB0MSwgU2xvdFNpemVdLCB0MworICAgIGdldHUoc2l6
ZSwgT3BHZXRJbnRlcm5hbEZpZWxkLCBtX2luZGV4LCB0MSkKKyAgICBsb2FkaSBKU0ludGVybmFs
RmllbGRPYmplY3RfaW50ZXJuYWxGaWVsZHMgKyBUYWdPZmZzZXRbdDAsIHQxLCBTbG90U2l6ZV0s
IHQyCisgICAgbG9hZGkgSlNJbnRlcm5hbEZpZWxkT2JqZWN0X2ludGVybmFsRmllbGRzICsgUGF5
bG9hZE9mZnNldFt0MCwgdDEsIFNsb3RTaXplXSwgdDMKICAgICByZXR1cm4odDIsIHQzKQogZW5k
KQogCi1sbGludE9wKG9wX3B1dF9wcm9taXNlX2ludGVybmFsX2ZpZWxkLCBPcFB1dFByb21pc2VJ
bnRlcm5hbEZpZWxkLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCkKK2xsaW50T3Aob3BfcHV0
X2ludGVybmFsX2ZpZWxkLCBPcFB1dEludGVybmFsRmllbGQsIG1hY3JvIChzaXplLCBnZXQsIGRp
c3BhdGNoKQogICAgIGdldChtX2Jhc2UsIHQwKQogICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MCwgOF0sIHQwCiAgICAgZ2V0KG1fdmFsdWUsIHQxKQogICAgIGxvYWRDb25zdGFudE9yVmFy
aWFibGUoc2l6ZSwgdDEsIHQyLCB0MykKLSAgICBnZXR1KHNpemUsIE9wUHV0UHJvbWlzZUludGVy
bmFsRmllbGQsIG1faW5kZXgsIHQxKQotICAgIHN0b3JlaSB0MiwgSlNQcm9taXNlOjptX2ludGVy
bmFsRmllbGRzICsgVGFnT2Zmc2V0W3QwLCB0MSwgU2xvdFNpemVdCi0gICAgc3RvcmVpIHQzLCBK
U1Byb21pc2U6Om1faW50ZXJuYWxGaWVsZHMgKyBQYXlsb2FkT2Zmc2V0W3QwLCB0MSwgU2xvdFNp
emVdCisgICAgZ2V0dShzaXplLCBPcFB1dEludGVybmFsRmllbGQsIG1faW5kZXgsIHQxKQorICAg
IHN0b3JlaSB0MiwgSlNJbnRlcm5hbEZpZWxkT2JqZWN0X2ludGVybmFsRmllbGRzICsgVGFnT2Zm
c2V0W3QwLCB0MSwgU2xvdFNpemVdCisgICAgc3RvcmVpIHQzLCBKU0ludGVybmFsRmllbGRPYmpl
Y3RfaW50ZXJuYWxGaWVsZHMgKyBQYXlsb2FkT2Zmc2V0W3QwLCB0MSwgU2xvdFNpemVdCiAgICAg
d3JpdGVCYXJyaWVyT25PcGVyYW5kKHNpemUsIGdldCwgbV9iYXNlKQogICAgIGRpc3BhdGNoKCkK
IGVuZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXI2NC5hc20KaW5kZXggNzJkNGRjZWY0MTJlZTE0NDM5MmY5Mjg0MDM2NjA3MDFhOTI5
ZTk5YS4uOGQ3MWNlZGFmYmFkMTU1ZDY3ZTA4Y2RlZjc3MDhjYTQ0ZjQzMDVmMyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20K
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5h
c20KQEAgLTI1ODYsMTkgKzI1ODYsMTkgQEAgbGxpbnRPcFdpdGhSZXR1cm4ob3BfZ2V0X3Jlc3Rf
bGVuZ3RoLCBPcEdldFJlc3RMZW5ndGgsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGMKIGVuZCkK
IAogCi1sbGludE9wV2l0aFByb2ZpbGUob3BfZ2V0X3Byb21pc2VfaW50ZXJuYWxfZmllbGQsIE9w
R2V0UHJvbWlzZUludGVybmFsRmllbGQsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCByZXR1
cm4pCitsbGludE9wV2l0aFByb2ZpbGUob3BfZ2V0X2ludGVybmFsX2ZpZWxkLCBPcEdldEludGVy
bmFsRmllbGQsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCByZXR1cm4pCiAgICAgbG9hZFZh
cmlhYmxlKGdldCwgbV9iYXNlLCB0MSkKLSAgICBnZXR1KHNpemUsIE9wR2V0UHJvbWlzZUludGVy
bmFsRmllbGQsIG1faW5kZXgsIHQyKQotICAgIGxvYWRxIEpTUHJvbWlzZTo6bV9pbnRlcm5hbEZp
ZWxkc1t0MSwgdDIsIFNsb3RTaXplXSwgdDAKKyAgICBnZXR1KHNpemUsIE9wR2V0SW50ZXJuYWxG
aWVsZCwgbV9pbmRleCwgdDIpCisgICAgbG9hZHEgSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbF9p
bnRlcm5hbEZpZWxkc1t0MSwgdDIsIFNsb3RTaXplXSwgdDAKICAgICByZXR1cm4odDApCiBlbmQp
CiAKLWxsaW50T3Aob3BfcHV0X3Byb21pc2VfaW50ZXJuYWxfZmllbGQsIE9wUHV0UHJvbWlzZUlu
dGVybmFsRmllbGQsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoKQorbGxpbnRPcChvcF9wdXRf
aW50ZXJuYWxfZmllbGQsIE9wUHV0SW50ZXJuYWxGaWVsZCwgbWFjcm8gKHNpemUsIGdldCwgZGlz
cGF0Y2gpCiAgICAgbG9hZFZhcmlhYmxlKGdldCwgbV9iYXNlLCB0MCkKICAgICBnZXQobV92YWx1
ZSwgdDEpCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCB0MSwgdDIpCi0gICAgZ2V0
dShzaXplLCBPcFB1dFByb21pc2VJbnRlcm5hbEZpZWxkLCBtX2luZGV4LCB0MSkKLSAgICBzdG9y
ZXEgdDIsIEpTUHJvbWlzZTo6bV9pbnRlcm5hbEZpZWxkc1t0MCwgdDEsIFNsb3RTaXplXQorICAg
IGdldHUoc2l6ZSwgT3BQdXRJbnRlcm5hbEZpZWxkLCBtX2luZGV4LCB0MSkKKyAgICBzdG9yZXEg
dDIsIEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGxfaW50ZXJuYWxGaWVsZHNbdDAsIHQxLCBTbG90
U2l6ZV0KICAgICB3cml0ZUJhcnJpZXJPbkNlbGxBbmRWYWx1ZVdpdGhSZWxvYWQodDAsIHQyLCBt
YWNybygpIGVuZCkKICAgICBkaXNwYXRjaCgpCiBlbmQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0ludGVybmFsRmllbGRPYmplY3RJbXBsLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ludGVybmFsRmllbGRPYmplY3RJbXBsLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZDQ4ZDFkZmM4OTIxYjkyMzEzYTMyZDViYjMwOTg3NTc0YzFmYjdjYQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTSW50ZXJuYWxGaWVsZE9i
amVjdEltcGwuaApAQCAtMCwwICsxLDczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlICJKU09iamVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworLy8gVGhpcyBpcyB1
c2VkIGZvciBzaGFyaW5nIGludGVyZmFjZSBhbmQgaW1wbGVtZW50YXRpb24uIEl0IHNob3VsZCBu
b3QgaGF2ZSBpdHMgb3duIGNsYXNzSW5mby4KK3RlbXBsYXRlPHVuc2lnbmVkIHBhc3NlZE51bWJl
ck9mSW50ZXJuYWxGaWVsZHMgPSAxPgorY2xhc3MgSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbCA6
IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAgICBmcmllbmQgY2xhc3MgTExJ
bnRPZmZzZXRzRXh0cmFjdG9yOworCisgICAgdXNpbmcgQmFzZSA9IEpTTm9uRmluYWxPYmplY3Q7
CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBudW1iZXJPZkludGVybmFsRmllbGRzID0g
cGFzc2VkTnVtYmVyT2ZJbnRlcm5hbEZpZWxkczsKKworICAgIHN0YXRpYyBzaXplX3QgYWxsb2Nh
dGlvblNpemUoQ2hlY2tlZDxzaXplX3Q+IGlubGluZUNhcGFjaXR5KQorICAgIHsKKyAgICAgICAg
QVNTRVJUX1VOVVNFRChpbmxpbmVDYXBhY2l0eSwgIWlubGluZUNhcGFjaXR5KTsKKyAgICAgICAg
cmV0dXJuIHNpemVvZihKU0ludGVybmFsRmllbGRPYmplY3RJbXBsKTsKKyAgICB9CisKKyAgICBj
b25zdCBXcml0ZUJhcnJpZXI8VW5rbm93bj4mIGludGVybmFsRmllbGQodW5zaWduZWQgaW5kZXgp
IGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQoaW5kZXggPCBudW1iZXJPZkludGVybmFsRmll
bGRzKTsKKyAgICAgICAgcmV0dXJuIG1faW50ZXJuYWxGaWVsZHNbaW5kZXhdOworICAgIH0KKwor
ICAgIFdyaXRlQmFycmllcjxVbmtub3duPiYgaW50ZXJuYWxGaWVsZCh1bnNpZ25lZCBpbmRleCkK
KyAgICB7CisgICAgICAgIEFTU0VSVChpbmRleCA8IG51bWJlck9mSW50ZXJuYWxGaWVsZHMpOwor
ICAgICAgICByZXR1cm4gbV9pbnRlcm5hbEZpZWxkc1tpbmRleF07CisgICAgfQorCisgICAgc3Rh
dGljIHB0cmRpZmZfdCBvZmZzZXRPZkludGVybmFsRmllbGRzKCkgeyByZXR1cm4gT0JKRUNUX09G
RlNFVE9GKEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGwsIG1faW50ZXJuYWxGaWVsZHMpOyB9Cisg
ICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkludGVybmFsRmllbGQodW5zaWduZWQgaW5kZXgp
IHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU0ludGVybmFsRmllbGRPYmplY3RJbXBsLCBtX2lu
dGVybmFsRmllbGRzKSArIGluZGV4ICogc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPik7IH0K
KworcHJvdGVjdGVkOgorICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xv
dFZpc2l0b3ImKTsKKworICAgIEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGwoVk0mIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCisgICAgewor
ICAgIH0KKworICAgIFdyaXRlQmFycmllcjxVbmtub3duPiBtX2ludGVybmFsRmllbGRzW251bWJl
ck9mSW50ZXJuYWxGaWVsZHNdIHsgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNJbnRlcm5hbEZpZWxkT2JqZWN0
SW1wbElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTSW50ZXJuYWxG
aWVsZE9iamVjdEltcGxJbmxpbmVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2I3ODc1YmZmN2NjNWQ2NzAwYjEw
OGRlYTVhMjQ3MzliZGEyN2Y4NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTSW50ZXJuYWxGaWVsZE9iamVjdEltcGxJbmxpbmVzLmgKQEAgLTAsMCAr
MSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSlNJbnRlcm5h
bEZpZWxkT2JqZWN0SW1wbC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworLy8gVGhpcyBpcyB1c2Vk
IGZvciBzaGFyaW5nIGludGVyZmFjZSBhbmQgaW1wbGVtZW50YXRpb24uIEl0IHNob3VsZCBub3Qg
aGF2ZSBpdHMgb3duIGNsYXNzSW5mby4KK3RlbXBsYXRlPHVuc2lnbmVkIHBhc3NlZE51bWJlck9m
SW50ZXJuYWxGaWVsZHM+Cit2b2lkIEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGw8cGFzc2VkTnVt
YmVyT2ZJbnRlcm5hbEZpZWxkcz46OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3Im
KQoreworICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNQcm9taXNlKj4oY2VsbCk7Cisg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOworICAgIEJh
c2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CisgICAgdmlzaXRvci5hcHBl
bmRWYWx1ZXModGhpc09iamVjdC0+bV9pbnRlcm5hbEZpZWxkcywgbnVtYmVyT2ZJbnRlcm5hbEZp
ZWxkcyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTUHJvbWlzZS5jcHAKaW5kZXggM2I5NzBhNjkwMGM0NTcwZDlmNWM4NWViMWU3MWUw
ZDg1ZGIwODJjYS4uMzk5YzkzNjA2YmZjYjc1ZjVmMzI2YmFmMzJhZjJlYzc4OGY0NDZjNiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2UuY3BwCkBAIC0yOSw2ICsy
OSw3IEBACiAjaW5jbHVkZSAiQnVpbHRpbk5hbWVzLmgiCiAjaW5jbHVkZSAiRXJyb3IuaCIKICNp
bmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1w
bElubGluZXMuaCIKICNpbmNsdWRlICJKU1Byb21pc2VDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUg
Ik1pY3JvdGFzay5oIgogCkBAIC01Niw4ICs1Nyw4IEBAIEpTUHJvbWlzZTo6SlNQcm9taXNlKFZN
JiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB2b2lkIEpTUHJvbWlzZTo6ZmluaXNoQ3JlYXRp
b24oVk0mIHZtKQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKLSAgICBtX2ludGVy
bmFsRmllbGRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihGaWVsZDo6RmxhZ3MpXS5zZXQodm0sIHRo
aXMsIGpzTnVtYmVyKHN0YXRpY19jYXN0PHVuc2lnbmVkPihTdGF0dXM6OlBlbmRpbmcpKSk7Ci0g
ICAgbV9pbnRlcm5hbEZpZWxkc1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oRmllbGQ6OlJlYWN0aW9u
c09yUmVzdWx0KV0uc2V0KHZtLCB0aGlzLCBqc1VuZGVmaW5lZCgpKTsKKyAgICBpbnRlcm5hbEZp
ZWxkKHN0YXRpY19jYXN0PHVuc2lnbmVkPihGaWVsZDo6RmxhZ3MpKS5zZXQodm0sIHRoaXMsIGpz
TnVtYmVyKHN0YXRpY19jYXN0PHVuc2lnbmVkPihTdGF0dXM6OlBlbmRpbmcpKSk7CisgICAgaW50
ZXJuYWxGaWVsZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oRmllbGQ6OlJlYWN0aW9uc09yUmVzdWx0
KSkuc2V0KHZtLCB0aGlzLCBqc1VuZGVmaW5lZCgpKTsKIH0KIAogdm9pZCBKU1Byb21pc2U6OnZp
c2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKQEAgLTY1LDEy
ICs2NiwxMSBAQCB2b2lkIEpTUHJvbWlzZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNs
b3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNQcm9t
aXNlKj4oY2VsbCk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBp
bmZvKCkpOwogICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7Ci0g
ICAgdmlzaXRvci5hcHBlbmRWYWx1ZXModGhpc09iamVjdC0+bV9pbnRlcm5hbEZpZWxkcywgbnVt
YmVyT2ZJbnRlcm5hbEZpZWxkcyk7CiB9CiAKIGF1dG8gSlNQcm9taXNlOjpzdGF0dXMoVk0mKSBj
b25zdCAtPiBTdGF0dXMKIHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gbV9pbnRlcm5hbEZpZWxkc1tz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oRmllbGQ6OkZsYWdzKV0uZ2V0KCk7CisgICAgSlNWYWx1ZSB2
YWx1ZSA9IGludGVybmFsRmllbGQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEZpZWxkOjpGbGFncykp
LmdldCgpOwogICAgIHVpbnQzMl90IGZsYWdzID0gdmFsdWUuYXNVSW50MzJBc0FueUludCgpOwog
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxTdGF0dXM+KGZsYWdzICYgc3RhdGVNYXNrKTsKIH0KQEAg
LTgwLDEyICs4MCwxMiBAQCBKU1ZhbHVlIEpTUHJvbWlzZTo6cmVzdWx0KFZNJiB2bSkgY29uc3QK
ICAgICBTdGF0dXMgc3RhdHVzID0gdGhpcy0+c3RhdHVzKHZtKTsKICAgICBpZiAoc3RhdHVzID09
IFN0YXR1czo6UGVuZGluZykKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0gICAgcmV0
dXJuIG1faW50ZXJuYWxGaWVsZHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEZpZWxkOjpSZWFjdGlv
bnNPclJlc3VsdCldLmdldCgpOworICAgIHJldHVybiBpbnRlcm5hbEZpZWxkKHN0YXRpY19jYXN0
PHVuc2lnbmVkPihGaWVsZDo6UmVhY3Rpb25zT3JSZXN1bHQpKS5nZXQoKTsKIH0KIAogYm9vbCBK
U1Byb21pc2U6OmlzSGFuZGxlZChWTSYpIGNvbnN0CiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IG1f
aW50ZXJuYWxGaWVsZHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEZpZWxkOjpGbGFncyldLmdldCgp
OworICAgIEpTVmFsdWUgdmFsdWUgPSBpbnRlcm5hbEZpZWxkKHN0YXRpY19jYXN0PHVuc2lnbmVk
PihGaWVsZDo6RmxhZ3MpKS5nZXQoKTsKICAgICB1aW50MzJfdCBmbGFncyA9IHZhbHVlLmFzVUlu
dDMyQXNBbnlJbnQoKTsKICAgICByZXR1cm4gZmxhZ3MgJiBpc0hhbmRsZWRGbGFnOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2UuaAppbmRleCBkNmQ2NTZlYmRmZDFj
YTExNGIxZTQ2NjA1YmQ1NTI5YjZmMDg4ZDM4Li4wY2YxOTc0OTBjMTJmZmIyMzNmZWEyZGJiMmJm
ZGM2MTUzOGIwNjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1Byb21pc2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2Uu
aApAQCAtMjUsMjAgKzI1LDEzIEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiSlNPYmpl
Y3QuaCIKKyNpbmNsdWRlICJKU0ludGVybmFsRmllbGRPYmplY3RJbXBsLmgiCiAKIG5hbWVzcGFj
ZSBKU0MgewogCi1jbGFzcyBKU1Byb21pc2UgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7Citj
bGFzcyBKU1Byb21pc2UgOiBwdWJsaWMgSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbDwyPiB7CiBw
dWJsaWM6Ci0gICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKLSAgICB1c2lu
ZyBCYXNlID0gSlNOb25GaW5hbE9iamVjdDsKLQotICAgIHN0YXRpYyBzaXplX3QgYWxsb2NhdGlv
blNpemUoQ2hlY2tlZDxzaXplX3Q+IGlubGluZUNhcGFjaXR5KQotICAgIHsKLSAgICAgICAgQVNT
RVJUX1VOVVNFRChpbmxpbmVDYXBhY2l0eSwgIWlubGluZUNhcGFjaXR5KTsKLSAgICAgICAgcmV0
dXJuIHNpemVvZihKU1Byb21pc2UpOwotICAgIH0KKyAgICB1c2luZyBCYXNlID0gSlNJbnRlcm5h
bEZpZWxkT2JqZWN0SW1wbDwyPjsKIAogICAgIHN0YXRpYyBKU1Byb21pc2UqIGNyZWF0ZShWTSYs
IFN0cnVjdHVyZSopOwogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYs
IEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CkBAIC01OCw3ICs1MSw3IEBAIGNsYXNzIEpTUHJv
bWlzZSA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICAgICAgRmxhZ3MgPSAwLAogICAg
ICAgICBSZWFjdGlvbnNPclJlc3VsdCA9IDEsCiAgICAgfTsKLSAgICBzdGF0aWMgY29uc3RleHBy
IHVuc2lnbmVkIG51bWJlck9mSW50ZXJuYWxGaWVsZHMgPSAyOworICAgIHN0YXRpY19hc3NlcnQo
bnVtYmVyT2ZJbnRlcm5hbEZpZWxkcyA9PSAyKTsKIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIFN0
YXR1cyBzdGF0dXMoVk0mKSBjb25zdDsKICAgICBKU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIHJl
c3VsdChWTSYpIGNvbnN0OwpAQCAtNjgsMTQgKzYxLDkgQEAgY2xhc3MgSlNQcm9taXNlIDogcHVi
bGljIEpTTm9uRmluYWxPYmplY3QgewogCiAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihK
U0NlbGwqLCBTbG90VmlzaXRvciYpOwogCi0gICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZklu
dGVybmFsRmllbGRzKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTUHJvbWlzZSwgbV9pbnRl
cm5hbEZpZWxkcyk7IH0KLSAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mSW50ZXJuYWxGaWVs
ZCh1bnNpZ25lZCBpbmRleCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTUHJvbWlzZSwgbV9p
bnRlcm5hbEZpZWxkcykgKyBpbmRleCAqIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pOyB9
Ci0KIHByb3RlY3RlZDoKICAgICBKU1Byb21pc2UoVk0mLCBTdHJ1Y3R1cmUqKTsKICAgICB2b2lk
IGZpbmlzaENyZWF0aW9uKFZNJik7Ci0KLSAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4gbV9pbnRl
cm5hbEZpZWxkc1tudW1iZXJPZkludGVybmFsRmllbGRzXSB7IH07CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBKU0MK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378071</attachid>
            <date>2019-09-05 03:08:16 -0700</date>
            <delta_ts>2019-09-06 20:08:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201159-20190905030815.patch</filename>
            <type>text/plain</type>
            <size>88624</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5NTI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
MjMxNjQyZjY2M2ZjMzViZTdiZWQzMmYzOWFlODRkMzk1NGRkOTJhLi5jMDIwNzA4OTM2ZTY3NzVj
MmY5MTNlMGYxNzUyZDA2YmU3ZTgzY2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMzIgQEAKKzIwMTktMDktMDUgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBHZW5lcmF0b3Igc2hvdWxkIGhhdmUgaW50ZXJuYWwgZmllbGRz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDExNTkK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENNYWtl
TGlzdHMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNv
ZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRv
cmlmaWNhdGlvbjo6cnVuKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1Jl
Z2lzdHJ5LmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6Qnl0
ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeSk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0
LnJiOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmg6CisgICAgICAgIChKU0M6
OmNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpjb21wdXRlRGVm
c0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBieXRl
Y29kZS9PcGNvZGUuaDoKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
Y3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEludGVybmFsRmll
bGQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dEludGVybmFsRmll
bGQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFlpZWxkKToKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWxlZ2F0ZVlpZWxkKToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRQcm9taXNlSW50ZXJuYWxGaWVsZCk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0UHJvbWlzZUlu
dGVybmFsRmllbGQpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdG9yU3Rh
dGVSZWdpc3Rlcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0b3JW
YWx1ZVJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRv
clJlc3VtZU1vZGVSZWdpc3Rlcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpn
ZW5lcmF0b3JGcmFtZVJlZ2lzdGVyKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2Rl
Z2VuLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJp
bnNpY19nZXRQcm9taXNlSW50ZXJuYWxGaWVsZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlSW50
cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfcHV0UHJvbWlzZUludGVybmFsRmllbGQpOgorICAg
ICAgICAoSlNDOjpGdW5jdGlvbk5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgICogZGZnL0RG
R0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJh
Y3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAgICAg
ICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVD
b2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHQ2FwYWJpbGl0aWVzLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpjYXBhYmlsaXR5TGV2ZWwpOgorICAgICAgICAqIGRmZy9E
RkdDbG9iYmVyaXplLmg6CisgICAgICAgIChKU0M6OkRGRzo6Y2xvYmJlcml6ZSk6CisgICAgICAg
ICogZGZnL0RGR0RvZXNHQy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6ZG9lc0dDKToKKyAgICAg
ICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFz
ZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKiBkZmcvREZHTWF5RXhpdC5jcHA6CisgICAgICAgICog
ZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNJbnRlcm5hbEZpZWxk
SW5kZXgpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0hlYXBQcmVkaWN0aW9uKToKKyAg
ICAgICAgKiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlvblBy
b3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdTYWZlVG9FeGVjdXRlLmg6Cisg
ICAgICAgIChKU0M6OkRGRzo6c2FmZVRvRXhlY3V0ZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZUdldEludGVybmFsRmllbGQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
b21waWxlUHV0SW50ZXJuYWxGaWVsZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVDcmVhdGVQcm9taXNlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZU5ld1Byb21pc2UpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjb21waWxlR2V0UHJvbWlzZUludGVybmFsRmllbGQpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0UHJvbWlzZUludGVybmFsRmllbGQp
OiBEZWxldGVkLgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAq
IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAg
ICAgKiBkZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGZ0
bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5Lmg6CisgICAgICAgICogZnRsL0ZUTENhcGFiaWxp
dGllcy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Y2FuQ29tcGlsZSk6CisgICAgICAgICogZnRs
L0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OmNvbXBpbGVOb2RlKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6
Y29tcGlsZU5ld1Byb21pc2UpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0Iz
Ojpjb21waWxlQ3JlYXRlUHJvbWlzZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvQjM6OmNvbXBpbGVHZXRJbnRlcm5hbEZpZWxkKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9CMzo6Y29tcGlsZVB1dEludGVybmFsRmllbGQpOgorICAgICAgICAoSlNDOjpG
VEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlR2V0UHJvbWlzZUludGVybmFsRmllbGQpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlUHV0
UHJvbWlzZUludGVybmFsRmllbGQpOiBEZWxldGVkLgorICAgICAgICAqIGppdC9KSVQuY3BwOgor
ICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgorICAgICAgICAqIGpp
dC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2ludGVybmFsX2ZpZWxkKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX3B1dF9pbnRlcm5hbF9maWVsZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9nZXRfcHJvbWlzZV9pbnRlcm5hbF9maWVsZCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdF9vcF9wdXRfcHJvbWlzZV9pbnRlcm5hbF9maWVsZCk6IERlbGV0ZWQuCisgICAgICAg
ICogaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfb3BfZ2V0X2ludGVybmFsX2ZpZWxkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1
dF9pbnRlcm5hbF9maWVsZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfcHJvbWlz
ZV9pbnRlcm5hbF9maWVsZCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9w
dXRfcHJvbWlzZV9pbnRlcm5hbF9maWVsZCk6IERlbGV0ZWQuCisgICAgICAgICogbGxpbnQvTExJ
bnRPZmZzZXRzRXh0cmFjdG9yLmNwcDoKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJl
dGVyLmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtOgor
ICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogcnVu
dGltZS9KU0dlbmVyYXRvci5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU0dlbmVyYXRvcjo6
Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmF0b3I6OmNyZWF0ZVN0cnVjdHVyZSk6Cisg
ICAgICAgIChKU0M6OkpTR2VuZXJhdG9yOjpKU0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpT
R2VuZXJhdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTR2VuZXJhdG9yOjp2
aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJhdG9yLmg6IENvcGllZCBm
cm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZS5oLgorICAgICAgICAq
IHJ1bnRpbWUvSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbC5oOiBDb3BpZWQgZnJvbSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2UuaC4KKyAgICAgICAgKEpTQzo6SlNJbnRl
cm5hbEZpZWxkT2JqZWN0SW1wbDo6YWxsb2NhdGlvblNpemUpOgorICAgICAgICAoSlNDOjpKU0lu
dGVybmFsRmllbGRPYmplY3RJbXBsOjppbnRlcm5hbEZpZWxkIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6SlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbDo6aW50ZXJuYWxGaWVsZCk6CisgICAgICAgIChK
U0M6OkpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGw6Om9mZnNldE9mSW50ZXJuYWxGaWVsZHMpOgor
ICAgICAgICAoSlNDOjpKU0ludGVybmFsRmllbGRPYmplY3RJbXBsOjpvZmZzZXRPZkludGVybmFs
RmllbGQpOgorICAgICAgICAoSlNDOjpKU0ludGVybmFsRmllbGRPYmplY3RJbXBsOjpKU0ludGVy
bmFsRmllbGRPYmplY3RJbXBsKToKKyAgICAgICAgKiBydW50aW1lL0pTSW50ZXJuYWxGaWVsZE9i
amVjdEltcGxJbmxpbmVzLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU0ludGVybmFsRmllbGRP
YmplY3RJbXBsPHBhc3NlZE51bWJlck9mSW50ZXJuYWxGaWVsZHM+Ojp2aXNpdENoaWxkcmVuKToK
KyAgICAgICAgKiBydW50aW1lL0pTUHJvbWlzZS5jcHA6CisgICAgICAgIChKU0M6OkpTUHJvbWlz
ZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpKU1Byb21pc2U6OnZpc2l0Q2hpbGRy
ZW4pOgorICAgICAgICAoSlNDOjpKU1Byb21pc2U6OnN0YXR1cyBjb25zdCk6CisgICAgICAgIChK
U0M6OkpTUHJvbWlzZTo6cmVzdWx0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNQcm9taXNlOjpp
c0hhbmRsZWQgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9taXNlLmg6CisgICAgICAg
IChKU0M6OkpTUHJvbWlzZTo6YWxsb2NhdGlvblNpemUpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpKU1Byb21pc2U6Om9mZnNldE9mSW50ZXJuYWxGaWVsZHMpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpKU1Byb21pc2U6Om9mZnNldE9mSW50ZXJuYWxGaWVsZCk6IERlbGV0ZWQuCisgICAgICAg
ICgpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlLmNwcDoKKyAgICAgICAgKFdU
Rjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogcnVudGltZS9KU1R5cGUuaDoKKwogMjAxOS0w
OS0wNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2
aWV3ZWQsIHBhcnRpYWwgcm9sbCBvdXQgcjI0OTM3MiBkdWUgdG8gSmV0U3RyZWFtMi9CYXNpYyB+
MTAlIHJlZ3Jlc3Npb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxp
c3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCAzZTZh
NDk3NjM4YWFiZmUyYzJkYzBjZWFhMWYyNzRhNzM4ODFjYWM0Li5kOTk0MGZmNWNjOTZlMjIwYjcz
ZjhkNjU1MWNkMTY0ODhkMTBlZmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0
CkBAIC04NjUsNiArODY1LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1BSSVZBVEVfRlJBTUVXT1JL
X0hFQURFUlMKICAgICBydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgKICAgICBydW50
aW1lL0pTR2xvYmFsT2JqZWN0SW5saW5lcy5oCiAgICAgcnVudGltZS9KU0ltbXV0YWJsZUJ1dHRl
cmZseS5oCisgICAgcnVudGltZS9KU0ludGVybmFsRmllbGRPYmplY3RJbXBsLmgKICAgICBydW50
aW1lL0pTSW50ZXJuYWxQcm9taXNlLmgKICAgICBydW50aW1lL0pTSW50ZXJuYWxQcm9taXNlRGVm
ZXJyZWQuaAogICAgIHJ1bnRpbWUvSlNNaWNyb3Rhc2suaApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCA1ZGFmZTY0MDllOGZhMTlmNTViMDI2YmRkNWI5ZTNlODE1ZjY1YTI5Li5iYTM0
MWM4OWRiMjk4NmVmOTBjM2UxN2I1YjU5MGUzNDQzZTI4NTdmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtMTEzLDcgKzExMyw3IEBACiAJCX07CiAJCUUxQUMyRTI3MjBGN0I5NEMw
MEIwODk3RCAvKiBVbmxvY2sgS2V5Y2hhaW4gKi8gPSB7CiAJCQlpc2EgPSBQQlhBZ2dyZWdhdGVU
YXJnZXQ7Ci0JCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gMTRDRkIxMDUyMzAzNUVGMzAwRjAw
NDhDIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCAqLzsKKwkJCWJ1aWxkQ29uZmlndXJhdGlv
bkxpc3QgPSAxNENGQjEwNTIzMDM1RUYzMDBGMDA0OEMgLyogQnVpbGQgY29uZmlndXJhdGlvbiBs
aXN0IGZvciBQQlhBZ2dyZWdhdGVUYXJnZXQgIlVubG9jayBLZXljaGFpbiIgKi87CiAJCQlidWls
ZFBoYXNlcyA9ICgKIAkJCQlFMUFDMkUyQzIwRjdCOTU4MDBCMDg5N0QgLyogVW5sb2NrIEtleWNo
YWluICovLAogCQkJKTsKQEAgLTE3ODYsOSArMTc4NiwxMSBAQAogCQlFMzI4REFFOTFEMzhEMDA1
MDAxQTI1MjkgLyogQnl0ZWNvZGVHcmFwaC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTNEMjY0MjgxRDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlR3Jh
cGguaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlF
MzI4REFFQjFEMzhEMDA1MDAxQTI1MjkgLyogQnl0ZWNvZGVSZXdyaXRlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNEMjY0MkExRDM4QzA0MjAwMEJF
MTc0IC8qIEJ5dGVjb2RlUmV3cml0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlFMzJBQjI0NDFEQ0Q3NUY0MDBENzUzM0EgLyogTWFjcm9Bc3Nl
bWJsZXJIZWxwZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMzgwQTc2QjFEQ0Q3MTk1MDAwRjg5RTYgLyogTWFjcm9Bc3NlbWJsZXJIZWxwZXJzLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTMzMDk1
REQyMzIxMEExQjAwRUI3ODU2IC8qIEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGwuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMzA5NURDMjMyMTBBMTQw
MEVCNzg1NiAvKiBKU0ludGVybmFsRmllbGRPYmplY3RJbXBsLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTMzNENCQjUyMUZEOTZBOTAwMEVCMTc4
IC8qIFJlZ0V4cEdsb2JhbERhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUzMzRDQkIzMjFGRDk2QTkwMDBFQjE3OCAvKiBSZWdFeHBHbG9iYWxEYXRh
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTMz
NjM3QTYxQjYzMjIwMjAwRUUwODQwIC8qIFJlZmxlY3RPYmplY3QuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMzYzN0E0MUI2MzIyMDIwMEVFMDg0MCAv
KiBSZWZsZWN0T2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJRTMzN0I5NjcyMjQzMjRFQTAwOTNBODIwIC8qIFdhc21DYXBhYmlsaXRpZXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMzdCOTY2
MjI0MzI0RTUwMDkzQTgyMCAvKiBXYXNtQ2FwYWJpbGl0aWVzLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTMzOTcwMDUyMzIxMEUwQjAwQjBBRTIx
IC8qIEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGxJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzM5NzAwNDIzMjEwRTBBMDBCMEFFMjEgLyog
SlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbElubGluZXMuaCAqLzsgfTsKIAkJRTMzQTk0OTYyMjU1
MzIzMDAwRDQyQjA2IC8qIFJhbmRvbWl6aW5nRnV6emVyQWdlbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzM0E5NDk0MjI1NTMyMjkwMEQ0MkIwNiAv
KiBSYW5kb21pemluZ0Z1enplckFnZW50LmggKi87IH07CiAJCUUzM0E5NDk3MjI1NTMyMzMwMEQ0
MkIwNiAvKiBGdXp6ZXJBZ2VudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTMzQTk0OTIyMjU1MzIyOTAwRDQyQjA2IC8qIEZ1enplckFnZW50LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTMzQjNFMjYx
QjdBQkQ3NTAwNDhEQjJFIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5sdXQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzM0IzRTI1MUI3
QUJENzUwMDQ4REIyRSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QubHV0LmggKi87
IH07CkBAIC0xODQyLDYgKzE4NDQsNyBAQAogCQlFM0YyM0E4MDFFQ0YxM0Y1MDA5NzhEOTkgLyog
U25pcHBldFJlZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTNGMjNBN0QxRUNGMTNFNTAwOTc4RDk5IC8qIFNuaXBwZXRSZWcuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFM0YyM0E4MTFFQ0YxM0ZBMDA5
NzhEOTkgLyogU25pcHBldFBhcmFtcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTNGMjNBN0MxRUNGMTNFNTAwOTc4RDk5IC8qIFNuaXBwZXRQYXJhbXMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFM0Yy
M0E4MjFFQ0YxM0ZFMDA5NzhEOTkgLyogU25pcHBldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNGMjNBN0IxRUNGMTNFNTAwOTc4RDk5IC8qIFNuaXBw
ZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlF
M0Y0N0E3QjIzMjExMzgxMDA1QzMxMTAgLyogSlNHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRjQ3QTc5MjMyMTEzNzYwMDVDMzExMCAv
KiBKU0dlbmVyYXRvci5oICovOyB9OwogCQlFM0ZCODUzQTIyRjM2NjdCMDA4RjkwRUQgLyogV2Fz
bUNhbGxlZVJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFM0ZCODUzODIyRjM2Njc0MDA4RjkwRUQgLyogV2FzbUNhbGxlZVJlZ2lzdHJ5Lmgg
Ki87IH07CiAJCUUzRkNDQjY0MjMxMEE5MEQwMDIzOEU3MiAvKiBDb25zdHJ1Y3RvcktpbmQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRkNDQjYzMjMx
MEE5MEQwMDIzOEU3MiAvKiBDb25zdHJ1Y3RvcktpbmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFM0ZGNzUzMzFEOUNFQTE4MDBDN0UxNkQgLyog
RE9NSklUR2V0dGVyU2V0dGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFM0ZGNzUyRjFEOUNFQTEyMDBDN0UxNkQgLyogRE9NSklUR2V0dGVyU2V0dGVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTQ4
NjcsMTEgKzQ4NzAsMTMgQEAKIAkJRTMzMDVGQjAyMEIwRjc4NzAwQ0VCODJCIC8qIEluQnlJZFZh
cmlhbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5CeUlkVmFy
aWFudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzMzA1RkIxMjBCMEY3ODgw
MENFQjgyQiAvKiBJbkJ5SWRWYXJpYW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEluQnlJZFZhcmlhbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMzMDVG
QjIyMEIwRjc4ODAwQ0VCODJCIC8qIEluQnlJZFN0YXR1cy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBJbkJ5SWRTdGF0dXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlFMzMwOTVEQzIzMjEwQTE0MDBFQjc4NTYgLyogSlNJbnRlcm5hbEZpZWxkT2Jq
ZWN0SW1wbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0ludGVybmFsRmllbGRPYmplY3RJbXBsLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzMzRDQkIyMjFGRDk2QTgwMDBFQjE3OCAvKiBS
ZWdFeHBHbG9iYWxEYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFJlZ0V4cEdsb2JhbERhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzM0
Q0JCMzIxRkQ5NkE5MDAwRUIxNzggLyogUmVnRXhwR2xvYmFsRGF0YS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSZWdFeHBHbG9iYWxEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUUzMzYzN0EzMUI2MzIyMDIwMEVFMDg0MCAvKiBSZWZsZWN0T2JqZWN0LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlZmxlY3RPYmplY3QuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzM2MzdBNDFCNjMyMjAyMDBFRTA4NDAg
LyogUmVmbGVjdE9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWZs
ZWN0T2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzMzdCOTY2MjI0MzI0
RTUwMDkzQTgyMCAvKiBXYXNtQ2FwYWJpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21DYXBh
YmlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTMzOTcwMDQyMzIxMEUw
QTAwQjBBRTIxIC8qIEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGxJbmxpbmVzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGxJbmxpbmVz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzM0E5NDkyMjI1NTMyMjkwMEQ0MkIw
NiAvKiBGdXp6ZXJBZ2VudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGdXp6ZXJBZ2VudC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlFMzNBOTQ5MzIyNTUzMjI5MDBENDJCMDYgLyogUmFuZG9t
aXppbmdGdXp6ZXJBZ2VudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSYW5kb21pemluZ0Z1enpl
ckFnZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMzQTk0OTQyMjU1MzIy
OTAwRDQyQjA2IC8qIFJhbmRvbWl6aW5nRnV6emVyQWdlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmFu
ZG9taXppbmdGdXp6ZXJBZ2VudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDk2
OSw2ICs0OTc0LDggQEAKIAkJRTNGMjNBN0MxRUNGMTNFNTAwOTc4RDk5IC8qIFNuaXBwZXRQYXJh
bXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU25pcHBldFBhcmFtcy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0YyM0E3RDFFQ0YxM0U1MDA5NzhEOTkgLyog
U25pcHBldFJlZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTbmlwcGV0UmVn
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzRjIzQTdFMUVDRjEzRTUwMDk3OEQ5
OSAvKiBTbmlwcGV0U2xvd1BhdGhDYWxscy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTbmlwcGV0U2xvd1BhdGhDYWxscy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlFM0Y0N0E3OTIzMjExMzc2MDA1QzMxMTAgLyogSlNHZW5lcmF0b3IuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNHZW5lcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTNGNDdBN0Ey
MzIxMTM3NjAwNUMzMTEwIC8qIEpTR2VuZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
R2VuZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNGQjg1MzgyMkYz
NjY3NDAwOEY5MEVEIC8qIFdhc21DYWxsZWVSZWdpc3RyeS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXYXNt
Q2FsbGVlUmVnaXN0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNGQjg1Mzky
MkYzNjY3NDAwOEY5MEVEIC8qIFdhc21DYWxsZWVSZWdpc3RyeS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXYXNtQ2FsbGVlUmVnaXN0cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlFM0ZDMjUxMDIyNTZFQ0Y0MDA1ODM1MTggLyogRG91YmxlUHJlZGljdGlvbkZ1enplckFnZW50
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERvdWJsZVByZWRpY3Rpb25GdXp6ZXJBZ2VudC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03MTY2LDYgKzcxNzMsOCBAQAogCQkJCUY2
OTJBODVFMDI1NTU5N0QwMUZGNjBGNyAvKiBKU0Z1bmN0aW9uLmNwcCAqLywKIAkJCQlGNjkyQTg1
RjAyNTU1OTdEMDFGRjYwRjcgLyogSlNGdW5jdGlvbi5oICovLAogCQkJCUE3MjAyOEI5MTc5NzYw
M0QwMDk4MDI4QyAvKiBKU0Z1bmN0aW9uSW5saW5lcy5oICovLAorCQkJCUUzRjQ3QTdBMjMyMTEz
NzYwMDVDMzExMCAvKiBKU0dlbmVyYXRvci5jcHAgKi8sCisJCQkJRTNGNDdBNzkyMzIxMTM3NjAw
NUMzMTEwIC8qIEpTR2VuZXJhdG9yLmggKi8sCiAJCQkJNzBCNzkxOEMxQzAyNDQ2MjAwMjQ4MUUy
IC8qIEpTR2VuZXJhdG9yRnVuY3Rpb24uY3BwICovLAogCQkJCTcwQjc5MThEMUMwMjQ0NjIwMDI0
ODFFMiAvKiBKU0dlbmVyYXRvckZ1bmN0aW9uLmggKi8sCiAJCQkJMEYyQjY2QzMxN0I2QjVBQjAw
QTdBRTNGIC8qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmggKi8sCkBAIC03MTg5LDYgKzcxOTgs
OCBAQAogCQkJCTBGMkI2NkNBMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0ludDE2QXJyYXkuaCAqLywK
IAkJCQkwRjJCNjZDQjE3QjZCNUFCMDBBN0FFM0YgLyogSlNJbnQzMkFycmF5LmggKi8sCiAJCQkJ
MEYyQjY2QzkxN0I2QjVBQjAwQTdBRTNGIC8qIEpTSW50OEFycmF5LmggKi8sCisJCQkJRTMzMDk1
REMyMzIxMEExNDAwRUI3ODU2IC8qIEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGwuaCAqLywKKwkJ
CQlFMzM5NzAwNDIzMjEwRTBBMDBCMEFFMjEgLyogSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbElu
bGluZXMuaCAqLywKIAkJCQlFMzNGNTA3RTFCODQyOUE0MDA0MTM4NTYgLyogSlNJbnRlcm5hbFBy
b21pc2UuY3BwICovLAogCQkJCUUzM0Y1MDdGMUI4NDI5QTQwMDQxMzg1NiAvKiBKU0ludGVybmFs
UHJvbWlzZS5oICovLAogCQkJCUUzM0Y1MDc2MUI4NDIyNTcwMDQxMzg1NiAvKiBKU0ludGVybmFs
UHJvbWlzZUNvbnN0cnVjdG9yLmNwcCAqLywKQEAgLTk2MjMsNiArOTYzNCw3IEBACiAJCQkJMEYy
QjY2RjAxN0I2QjVBQjAwQTdBRTNGIC8qIEpTRmxvYXQ2NEFycmF5LmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQzE4QzQxRjBFMTZGNUNEMDBCMzQ0NjAgLyogSlNGdW5jdGlvbi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTcyMDI4QkExNzk3NjAzRDAwOTgwMjhDIC8qIEpTRnVuY3Rpb25JbmxpbmVzLmgg
aW4gSGVhZGVycyAqLywKKwkJCQlFM0Y0N0E3QjIzMjExMzgxMDA1QzMxMTAgLyogSlNHZW5lcmF0
b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTcwQjc5MTlDMUMwMjRBNDkwMDI0ODFFMiAvKiBKU0dl
bmVyYXRvckZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCNjZGMTE3QjZCNUFCMDBB
N0FFM0YgLyogSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
MkI2NkYyMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVj
dG9yLmggaW4gSGVhZGVycyAqLywKQEAgLTk2NTEsNiArOTY2Myw4IEBACiAJCQkJMEYyQjY2Rjkx
N0I2QjVBQjAwQTdBRTNGIC8qIEpTSW50MzJBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYy
QjY2RjcxN0I2QjVBQjAwQTdBRTNGIC8qIEpTSW50OEFycmF5LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBNzZDNTE3NjExODI3NDhEMDA3MTVCMDUgLyogSlNJbnRlcmZhY2VKSVQuaCBpbiBIZWFkZXJz
ICovLAorCQkJCUUzMzA5NUREMjMyMTBBMUIwMEVCNzg1NiAvKiBKU0ludGVybmFsRmllbGRPYmpl
Y3RJbXBsLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzM5NzAwNTIzMjEwRTBCMDBCMEFFMjEgLyog
SlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbElubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUUz
M0Y1MDgxMUI4NDI5QTQwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRTMzRjUwNzkxQjg0MjI1NzAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlQ29u
c3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzM0Y1MDg3MUI4NDQ5RUYwMDQxMzg1NiAv
KiBKU0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmx1dC5oIGluIEhlYWRlcnMgKi8sCkBAIC0x
MjE4OSw3ICsxMjIwMyw3IEBACiAJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7
CiAJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBQcm9kdWN0aW9uOwogCQl9OwotCQkxNENG
QjEwNTIzMDM1RUYzMDBGMDA0OEMgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0ICovID0gewor
CQkxNENGQjEwNTIzMDM1RUYzMDBGMDA0OEMgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZv
ciBQQlhBZ2dyZWdhdGVUYXJnZXQgIlVubG9jayBLZXljaGFpbiIgKi8gPSB7CiAJCQlpc2EgPSBY
Q0NvbmZpZ3VyYXRpb25MaXN0OwogCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKIAkJCQkxNENG
QjEwMTIzMDM1RUYzMDBGMDA0OEMgLyogRGVidWcgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50
eHQKaW5kZXggMjYyMTkzYjIzODUxMmY4ZTk1ZGVkMTRhYjI4OTBjNTFkYmM1ZTljMC4uZDEwMTIw
MjI3YTBjMWJlYTU5ODkyYTI2OWRhY2I0Zjg1NDBiNWY5YyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3Vy
Y2VzLnR4dApAQCAtODI0LDYgKzgyNCw3IEBAIHJ1bnRpbWUvSlNEYXRlTWF0aC5jcHAKIHJ1bnRp
bWUvSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuY3BwCiBydW50aW1lL0pTRml4ZWRB
cnJheS5jcHAKIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHAKK3J1bnRpbWUvSlNHZW5lcmF0b3IuY3Bw
CiBydW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uY3BwCiBydW50aW1lL0pTR2xvYmFsTGV4aWNh
bEVudmlyb25tZW50LmNwcAogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlv
bi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3Jp
ZmljYXRpb24uY3BwCmluZGV4IDk1NDRiY2I0Yzg4NjliMzQ1ODZmMTY2Yzg3NGNiYjA4MTUwM2Vm
ZGYuLjI4NjA1MWNjOTVlYTRkOGZkYTY2ZmIwOTk3YmI1OTNlZGU3ZTMyYTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlv
bi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJh
dG9yaWZpY2F0aW9uLmNwcApAQCAtMzYsNyArMzYsNyBAQAogI2luY2x1ZGUgIkludGVycHJldGVy
SW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVl
SW5saW5lcy5oIgotI2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJK
U0dlbmVyYXRvci5oIgogI2luY2x1ZGUgIkxhYmVsLmgiCiAjaW5jbHVkZSAiU3Ryb25nSW5saW5l
cy5oIgogI2luY2x1ZGUgIlVubGlua2VkQ29kZUJsb2NrLmgiCkBAIC0yMjMsNyArMjIzLDcgQEAg
dm9pZCBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjo6cnVuKCkKICAgICB7CiAgICAgICAgIGF1
dG8gbmV4dFRvRW50ZXJQb2ludCA9IGVudGVyUG9pbnQoKS5uZXh0KCk7CiAgICAgICAgIHVuc2ln
bmVkIHN3aXRjaFRhYmxlSW5kZXggPSBtX2NvZGVCbG9jay0+bnVtYmVyT2ZTd2l0Y2hKdW1wVGFi
bGVzKCk7Ci0gICAgICAgIFZpcnR1YWxSZWdpc3RlciBzdGF0ZSA9IHZpcnR1YWxSZWdpc3RlckZv
ckFyZ3VtZW50KHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVy
YXRvckFyZ3VtZW50OjpTdGF0ZSkpOworICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgc3RhdGUgPSB2
aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRv
cjo6R2VuZXJhdG9yQXJndW1lbnQ6OlN0YXRlKSk7CiAgICAgICAgIGF1dG8mIGp1bXBUYWJsZSA9
IG1fY29kZUJsb2NrLT5hZGRTd2l0Y2hKdW1wVGFibGUoKTsKICAgICAgICAganVtcFRhYmxlLm1p
biA9IDA7CiAgICAgICAgIGp1bXBUYWJsZS5icmFuY2hPZmZzZXRzLnJlc2l6ZShtX3lpZWxkcy5z
aXplKCkgKyAxKTsKQEAgLTIzOCw3ICsyMzgsNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yaWZp
Y2F0aW9uOjpydW4oKQogICAgIH0KIAogICAgIGZvciAoY29uc3QgWWllbGREYXRhJiBkYXRhIDog
bV95aWVsZHMpIHsKLSAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHNjb3BlID0gdmlydHVhbFJlZ2lz
dGVyRm9yQXJndW1lbnQoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6
R2VuZXJhdG9yQXJndW1lbnQ6OkZyYW1lKSk7CisgICAgICAgIFZpcnR1YWxSZWdpc3RlciBzY29w
ZSA9IHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2Vu
ZXJhdG9yOjpHZW5lcmF0b3JBcmd1bWVudDo6RnJhbWUpKTsKIAogICAgICAgICBhdXRvIGluc3Ry
dWN0aW9uID0gbV9pbnN0cnVjdGlvbnMuYXQoZGF0YS5wb2ludCk7CiAgICAgICAgIC8vIEVtaXQg
c2F2ZSBzZXF1ZW5jZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmNwcAppbmRleCAxOTg0NDNkNTMxZmM2
Yzc5ZTdlYTE1NTM4YjIzMDFmZWJmZjQ1ZjZkLi5jZGYzYjJkN2ZjM2E1MTE2OGJkYmNjMGZmYTU5
MDFlMzZkODI4ZjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuY3BwCkBAIC0zMyw3ICszMyw3IEBA
CiAjaW5jbHVkZSAiSXRlcmF0aW9uS2luZC5oIgogI2luY2x1ZGUgIkpTQXN5bmNHZW5lcmF0b3JG
dW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKLSNpbmNsdWRlICJKU0dlbmVyYXRv
ckZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJKU0dsb2Jh
bE9iamVjdC5oIgogI2luY2x1ZGUgIkpTTW9kdWxlTG9hZGVyLmgiCiAjaW5jbHVkZSAiSlNQcm9t
aXNlLmgiCkBAIC03NCwxMSArNzQsMTEgQEAgQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6Qnl0
ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeShWTSYgdm0pCiAgICAgbV9wcm9taXNlRmxhZ3NJc0ZpcnN0
UmVzb2x2aW5nRnVuY3Rpb25DYWxsZWQuc2V0KG1fdm0sIGpzTnVtYmVyKEpTUHJvbWlzZTo6aXNG
aXJzdFJlc29sdmluZ0Z1bmN0aW9uQ2FsbGVkRmxhZykpOwogICAgIG1fcHJvbWlzZUZpZWxkRmxh
Z3Muc2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU1Byb21pc2U6OkZp
ZWxkOjpGbGFncykpKTsKICAgICBtX3Byb21pc2VGaWVsZFJlYWN0aW9uc09yUmVzdWx0LnNldCht
X3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNQcm9taXNlOjpGaWVsZDo6UmVh
Y3Rpb25zT3JSZXN1bHQpKSk7Ci0gICAgbV9HZW5lcmF0b3JSZXN1bWVNb2RlTm9ybWFsLnNldCht
X3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpH
ZW5lcmF0b3JSZXN1bWVNb2RlOjpOb3JtYWxNb2RlKSkpOwotICAgIG1fR2VuZXJhdG9yUmVzdW1l
TW9kZVRocm93LnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVy
YXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JSZXN1bWVNb2RlOjpUaHJvd01vZGUpKSk7Ci0gICAgbV9H
ZW5lcmF0b3JSZXN1bWVNb2RlUmV0dXJuLnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDxp
bnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JSZXN1bWVNb2RlOjpSZXR1cm5N
b2RlKSkpOwotICAgIG1fR2VuZXJhdG9yU3RhdGVDb21wbGV0ZWQuc2V0KG1fdm0sIGpzTnVtYmVy
KHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvclN0YXRl
OjpDb21wbGV0ZWQpKSk7Ci0gICAgbV9HZW5lcmF0b3JTdGF0ZUV4ZWN1dGluZy5zZXQobV92bSwg
anNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJh
dG9yU3RhdGU6OkV4ZWN1dGluZykpKTsKKyAgICBtX0dlbmVyYXRvclJlc3VtZU1vZGVOb3JtYWwu
c2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpHZW5l
cmF0b3JSZXN1bWVNb2RlOjpOb3JtYWxNb2RlKSkpOworICAgIG1fR2VuZXJhdG9yUmVzdW1lTW9k
ZVRocm93LnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRv
cjo6R2VuZXJhdG9yUmVzdW1lTW9kZTo6VGhyb3dNb2RlKSkpOworICAgIG1fR2VuZXJhdG9yUmVz
dW1lTW9kZVJldHVybi5zZXQobV92bSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNH
ZW5lcmF0b3I6OkdlbmVyYXRvclJlc3VtZU1vZGU6OlJldHVybk1vZGUpKSk7CisgICAgbV9HZW5l
cmF0b3JTdGF0ZUNvbXBsZXRlZC5zZXQobV92bSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJf
dD4oSlNHZW5lcmF0b3I6OkdlbmVyYXRvclN0YXRlOjpDb21wbGV0ZWQpKSk7CisgICAgbV9HZW5l
cmF0b3JTdGF0ZUV4ZWN1dGluZy5zZXQobV92bSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJf
dD4oSlNHZW5lcmF0b3I6OkdlbmVyYXRvclN0YXRlOjpFeGVjdXRpbmcpKSk7CiAgICAgbV9Bc3lu
Y0dlbmVyYXRvclN0YXRlQ29tcGxldGVkLnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDxp
bnQzMl90PihKU0FzeW5jR2VuZXJhdG9yRnVuY3Rpb246OkFzeW5jR2VuZXJhdG9yU3RhdGU6OkNv
bXBsZXRlZCkpKTsKICAgICBtX0FzeW5jR2VuZXJhdG9yU3RhdGVFeGVjdXRpbmcuc2V0KG1fdm0s
IGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbjo6
QXN5bmNHZW5lcmF0b3JTdGF0ZTo6RXhlY3V0aW5nKSkpOwogICAgIG1fQXN5bmNHZW5lcmF0b3JT
dGF0ZVN1c3BlbmRlZFN0YXJ0LnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90
PihKU0FzeW5jR2VuZXJhdG9yRnVuY3Rpb246OkFzeW5jR2VuZXJhdG9yU3RhdGU6OlN1c3BlbmRl
ZFN0YXJ0KSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlTGlzdC5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxp
c3QucmIKaW5kZXggNjU4ZTExZThiM2QwNTVmMDU3OGM2NjVmMDNjNWI1NmViNGIxNGM3Ny4uM2Iz
OTk4YWI1MGNkNjIwMzA5YmFjNmQ2N2ZkNjkxOGZmNGEwMWE3NSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCkBAIC0xMTI5LDcgKzExMjksNyBA
QAogICAgICAgICBwcm9wZXJ0eTogdW5zaWduZWQsCiAgICAgfQogCi1vcCA6Z2V0X3Byb21pc2Vf
aW50ZXJuYWxfZmllbGQsCitvcCA6Z2V0X2ludGVybmFsX2ZpZWxkLAogICAgIGFyZ3M6IHsKICAg
ICAgICAgZHN0OiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgICAgIGJhc2U6IFZpcnR1YWxSZWdpc3Rl
ciwKQEAgLTExMzksNyArMTEzOSw3IEBACiAgICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwK
ICAgICB9CiAKLW9wIDpwdXRfcHJvbWlzZV9pbnRlcm5hbF9maWVsZCwKK29wIDpwdXRfaW50ZXJu
YWxfZmllbGQsCiAgICAgYXJnczogewogICAgICAgICBiYXNlOiBWaXJ0dWFsUmVnaXN0ZXIsCiAg
ICAgICAgIGluZGV4OiB1bnNpZ25lZCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlVXNlRGVmLmgKaW5kZXggNzNiNWE1ODA0OGM3ZTQyN2E0NzQzZDIyNTdlNzNh
OGNjYTYxYTgyMS4uYmUwODU5NjQwZmIxMDdkZThiNzgyYmNmYTUwODFiYzdkMWM3OWJjMiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKQEAg
LTI1NCw4ICsyNTQsOCBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sq
IGNvZGVCbG9jaywgT3Bjb2RlSUQgb3Bjb2RlSUQsIGNvbnN0IElucwogICAgIFVTRVMoT3BTd2l0
Y2hDaGFyLCBzY3J1dGluZWUpCiAgICAgVVNFUyhPcFN3aXRjaEltbSwgc2NydXRpbmVlKQogCi0g
ICAgVVNFUyhPcEdldFByb21pc2VJbnRlcm5hbEZpZWxkLCBiYXNlKQotICAgIFVTRVMoT3BQdXRQ
cm9taXNlSW50ZXJuYWxGaWVsZCwgYmFzZSwgdmFsdWUpCisgICAgVVNFUyhPcEdldEludGVybmFs
RmllbGQsIGJhc2UpCisgICAgVVNFUyhPcFB1dEludGVybmFsRmllbGQsIGJhc2UsIHZhbHVlKQog
CiAgICAgVVNFUyhPcFlpZWxkLCBnZW5lcmF0b3IsIGFyZ3VtZW50KQogCkBAIC0zNDUsNyArMzQ1
LDcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KEJsb2NrKiBjb2RlQmxvY2ss
IE9wY29kZUlEIG9wY29kZUlELCBjb25zdCBJbnMKICAgICBjYXNlIG9wX3B1dF9zZXR0ZXJfYnlf
dmFsOgogICAgIGNhc2Ugb3BfcHV0X2J5X3ZhbDoKICAgICBjYXNlIG9wX3B1dF9ieV92YWxfZGly
ZWN0OgotICAgIGNhc2Ugb3BfcHV0X3Byb21pc2VfaW50ZXJuYWxfZmllbGQ6CisgICAgY2FzZSBv
cF9wdXRfaW50ZXJuYWxfZmllbGQ6CiAgICAgY2FzZSBvcF9kZWZpbmVfZGF0YV9wcm9wZXJ0eToK
ICAgICBjYXNlIG9wX2RlZmluZV9hY2Nlc3Nvcl9wcm9wZXJ0eToKICAgICBjYXNlIG9wX3Byb2Zp
bGVfdHlwZToKQEAgLTQ3Nyw3ICs0NzcsNyBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVP
ZmZzZXQoQmxvY2sqIGNvZGVCbG9jaywgT3Bjb2RlSUQgb3Bjb2RlSUQsIGNvbnN0IElucwogICAg
IERFRlMoT3BHZXRBcmd1bWVudCwgZHN0KQogICAgIERFRlMoT3BDcmVhdGVSZXN0LCBkc3QpCiAg
ICAgREVGUyhPcEdldFJlc3RMZW5ndGgsIGRzdCkKLSAgICBERUZTKE9wR2V0UHJvbWlzZUludGVy
bmFsRmllbGQsIGRzdCkKKyAgICBERUZTKE9wR2V0SW50ZXJuYWxGaWVsZCwgZHN0KQogCiAgICAg
REVGUyhPcENhdGNoLCBleGNlcHRpb24sIHRocm93blZhbHVlKQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IGJmMzdiMGY1OTFiMWFkYzg5ZjRl
NzYyNGRhMDkzMDhhNWFhYjFjOGYuLjI5NDNiMmIxMDAzYzVmOGYxYTMwY2U1NjUyNjg0ZDQ0MzZl
NzhlYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3Bw
CkBAIC01NDAsNyArNTQwLDcgQEAgYm9vbCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAgICAgTElO
SyhPcFRvTnVtYmVyLCBwcm9maWxlKQogICAgICAgICBMSU5LKE9wVG9PYmplY3QsIHByb2ZpbGUp
CiAgICAgICAgIExJTksoT3BHZXRBcmd1bWVudCwgcHJvZmlsZSkKLSAgICAgICAgTElOSyhPcEdl
dFByb21pc2VJbnRlcm5hbEZpZWxkLCBwcm9maWxlKQorICAgICAgICBMSU5LKE9wR2V0SW50ZXJu
YWxGaWVsZCwgcHJvZmlsZSkKICAgICAgICAgTElOSyhPcFRvVGhpcywgcHJvZmlsZSkKICAgICAg
ICAgTElOSyhPcEJpdGFuZCwgcHJvZmlsZSkKICAgICAgICAgTElOSyhPcEJpdG9yLCBwcm9maWxl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCmluZGV4IGRjYmViOGFkNjRk
MDNkOWYyODJlMjI4NzE2NWZlMDgyMzJhNDk5MDIuLjQyYTU2ZmIzMjU4YWNjNTYyMGE3YTZhZDUx
MGJkZWVhYThiOTk5YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9PcGNvZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgK
QEAgLTk3LDcgKzk3LDcgQEAgZXh0ZXJuIGNvbnN0IHVuc2lnbmVkIG9wY29kZUxlbmd0aHNbXTsK
ICAgICBtYWNybyhPcFRvTnVtYmVyKSBcCiAgICAgbWFjcm8oT3BUb09iamVjdCkgXAogICAgIG1h
Y3JvKE9wR2V0QXJndW1lbnQpIFwKLSAgICBtYWNybyhPcEdldFByb21pc2VJbnRlcm5hbEZpZWxk
KSBcCisgICAgbWFjcm8oT3BHZXRJbnRlcm5hbEZpZWxkKSBcCiAgICAgbWFjcm8oT3BUb1RoaXMp
IFwKICAgICBtYWNybyhPcENhbGwpIFwKICAgICBtYWNybyhPcFRhaWxDYWxsKSBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuY3BwCmluZGV4IDdmNjdkNjY0OWFlYjhkNjg1YzE3MTVkNDkzZjBiODZhMmVlYWU4NDEuLjZl
ZjIzZWQzZjcyOWNjNmViNTY2YmUyYjZkYTAwMzkwMTk2MzJiOTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3Bw
CkBAIC0yODA4LDE1ICsyODA4LDE1IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0RGVsZXRlQnlWYWwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlCiAgICAgcmV0
dXJuIGRzdDsKIH0KIAotUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRQcm9t
aXNlSW50ZXJuYWxGaWVsZChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIHVuc2ln
bmVkIGluZGV4KQorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRJbnRlcm5h
bEZpZWxkKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgdW5zaWduZWQgaW5kZXgp
CiB7Ci0gICAgT3BHZXRQcm9taXNlSW50ZXJuYWxGaWVsZDo6ZW1pdCh0aGlzLCBkc3QsIGJhc2Us
IGluZGV4KTsKKyAgICBPcEdldEludGVybmFsRmllbGQ6OmVtaXQodGhpcywgZHN0LCBiYXNlLCBp
bmRleCk7CiAgICAgcmV0dXJuIGRzdDsKIH0KIAotUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXRQdXRQcm9taXNlSW50ZXJuYWxGaWVsZChSZWdpc3RlcklEKiBiYXNlLCB1bnNpZ25l
ZCBpbmRleCwgUmVnaXN0ZXJJRCogdmFsdWUpCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdFB1dEludGVybmFsRmllbGQoUmVnaXN0ZXJJRCogYmFzZSwgdW5zaWduZWQgaW5kZXgs
IFJlZ2lzdGVySUQqIHZhbHVlKQogewotICAgIE9wUHV0UHJvbWlzZUludGVybmFsRmllbGQ6OmVt
aXQodGhpcywgYmFzZSwgaW5kZXgsIHZhbHVlKTsKKyAgICBPcFB1dEludGVybmFsRmllbGQ6OmVt
aXQodGhpcywgYmFzZSwgaW5kZXgsIHZhbHVlKTsKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKQEAg
LTQ1NTQsMTEgKzQ1NTQsMTEgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRZ
aWVsZChSZWdpc3RlcklEKiBhcmd1bWVudCwgSlNBc3luY0dlbmVyYXRvckYKIAogICAgIFJlZjxM
YWJlbD4gbm9ybWFsTGFiZWwgPSBuZXdMYWJlbCgpOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBj
b25kaXRpb24gPSBuZXdUZW1wb3JhcnkoKTsKLSAgICBlbWl0RXF1YWxpdHlPcDxPcFN0cmljdGVx
Pihjb25kaXRpb24uZ2V0KCksIGdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3RlcigpLCBlbWl0TG9h
ZChudWxscHRyLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0
aW9uOjpHZW5lcmF0b3JSZXN1bWVNb2RlOjpOb3JtYWxNb2RlKSkpKTsKKyAgICBlbWl0RXF1YWxp
dHlPcDxPcFN0cmljdGVxPihjb25kaXRpb24uZ2V0KCksIGdlbmVyYXRvclJlc3VtZU1vZGVSZWdp
c3RlcigpLCBlbWl0TG9hZChudWxscHRyLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihK
U0dlbmVyYXRvcjo6R2VuZXJhdG9yUmVzdW1lTW9kZTo6Tm9ybWFsTW9kZSkpKSk7CiAgICAgZW1p
dEp1bXBJZlRydWUoY29uZGl0aW9uLmdldCgpLCBub3JtYWxMYWJlbC5nZXQoKSk7CiAKICAgICBS
ZWY8TGFiZWw+IHRocm93TGFiZWwgPSBuZXdMYWJlbCgpOwotICAgIGVtaXRFcXVhbGl0eU9wPE9w
U3RyaWN0ZXE+KGNvbmRpdGlvbi5nZXQoKSwgZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCks
IGVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJh
dG9yRnVuY3Rpb246OkdlbmVyYXRvclJlc3VtZU1vZGU6OlRocm93TW9kZSkpKSk7CisgICAgZW1p
dEVxdWFsaXR5T3A8T3BTdHJpY3RlcT4oY29uZGl0aW9uLmdldCgpLCBnZW5lcmF0b3JSZXN1bWVN
b2RlUmVnaXN0ZXIoKSwgZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50
MzJfdD4oSlNHZW5lcmF0b3I6OkdlbmVyYXRvclJlc3VtZU1vZGU6OlRocm93TW9kZSkpKSk7CiAg
ICAgZW1pdEp1bXBJZlRydWUoY29uZGl0aW9uLmdldCgpLCB0aHJvd0xhYmVsLmdldCgpKTsKICAg
ICAvLyBSZXR1cm4uCiAgICAgewpAQCAtNDY2NiwxMCArNDY2NiwxMCBAQCBSZWdpc3RlcklEKiBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlbGVnYXRlWWllbGQoUmVnaXN0ZXJJRCogYXJndW1lbnQs
IFRocm93YWJsZQogICAgICAgICAgICAgICAgIFJlZjxMYWJlbD4gcmV0dXJuTGFiZWwgPSBuZXdM
YWJlbCgpOwogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IGNvbmRpdGlvbiA9IG5ld1RlbXBvcmFyeSgpOwotICAgICAgICAgICAgICAgICAg
ICBlbWl0RXF1YWxpdHlPcDxPcFN0cmljdGVxPihjb25kaXRpb24uZ2V0KCksIGdlbmVyYXRvclJl
c3VtZU1vZGVSZWdpc3RlcigpLCBlbWl0TG9hZChudWxscHRyLCBqc051bWJlcihzdGF0aWNfY2Fz
dDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JSZXN1bWVNb2RlOjpOb3Jt
YWxNb2RlKSkpKTsKKyAgICAgICAgICAgICAgICAgICAgZW1pdEVxdWFsaXR5T3A8T3BTdHJpY3Rl
cT4oY29uZGl0aW9uLmdldCgpLCBnZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSwgZW1pdExv
YWQobnVsbHB0ciwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6Okdl
bmVyYXRvclJlc3VtZU1vZGU6Ok5vcm1hbE1vZGUpKSkpOwogICAgICAgICAgICAgICAgICAgICBl
bWl0SnVtcElmVHJ1ZShjb25kaXRpb24uZ2V0KCksIG5vcm1hbExhYmVsLmdldCgpKTsKIAotICAg
ICAgICAgICAgICAgICAgICBlbWl0RXF1YWxpdHlPcDxPcFN0cmljdGVxPihjb25kaXRpb24uZ2V0
KCksIGdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3RlcigpLCBlbWl0TG9hZChudWxscHRyLCBqc051
bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JS
ZXN1bWVNb2RlOjpSZXR1cm5Nb2RlKSkpKTsKKyAgICAgICAgICAgICAgICAgICAgZW1pdEVxdWFs
aXR5T3A8T3BTdHJpY3RlcT4oY29uZGl0aW9uLmdldCgpLCBnZW5lcmF0b3JSZXN1bWVNb2RlUmVn
aXN0ZXIoKSwgZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4o
SlNHZW5lcmF0b3I6OkdlbmVyYXRvclJlc3VtZU1vZGU6OlJldHVybk1vZGUpKSkpOwogICAgICAg
ICAgICAgICAgICAgICBlbWl0SnVtcElmVHJ1ZShjb25kaXRpb24uZ2V0KCksIHJldHVybkxhYmVs
LmdldCgpKTsKIAogICAgICAgICAgICAgICAgICAgICAvLyBGYWxsdGhyb3VnaCB0byBUaHJvd01v
ZGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmgKaW5kZXggYmIwNGNlZTQyNGU1MjQxYjc3MmFhMDNhYWQ0YjNiZjQxMTRh
YTU2MC4uNWM5OGM1OGQ4Y2Q0MDJlYThjN2ZiNDFmZmNjZWUzMzdjZWNkODEwNSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuaApAQCAtMzUsNyArMzUsNyBAQAogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVk
ZSAiSlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNCaWdJbnQuaCIKLSNp
bmNsdWRlICJKU0dlbmVyYXRvckZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNHZW5lcmF0b3IuaCIK
ICNpbmNsdWRlICJKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oIgogI2luY2x1ZGUgIkxhYmVs
LmgiCiAjaW5jbHVkZSAiTGFiZWxTY29wZS5oIgpAQCAtNzc2LDggKzc3Niw4IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBSZWdpc3RlcklEKiBlbWl0RGlyZWN0UHV0QnlWYWwoUmVnaXN0ZXJJ
RCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKTsKICAgICAg
ICAgUmVnaXN0ZXJJRCogZW1pdERlbGV0ZUJ5VmFsKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJ
RCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHkpOwogCi0gICAgICAgIFJlZ2lzdGVySUQqIGVt
aXRHZXRQcm9taXNlSW50ZXJuYWxGaWVsZChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJh
c2UsIHVuc2lnbmVkIGluZGV4KTsKLSAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFB1dFByb21pc2VJ
bnRlcm5hbEZpZWxkKFJlZ2lzdGVySUQqIGJhc2UsIHVuc2lnbmVkIGluZGV4LCBSZWdpc3RlcklE
KiB2YWx1ZSk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRHZXRJbnRlcm5hbEZpZWxkKFJlZ2lz
dGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgdW5zaWduZWQgaW5kZXgpOworICAgICAgICBS
ZWdpc3RlcklEKiBlbWl0UHV0SW50ZXJuYWxGaWVsZChSZWdpc3RlcklEKiBiYXNlLCB1bnNpZ25l
ZCBpbmRleCwgUmVnaXN0ZXJJRCogdmFsdWUpOwogCiAgICAgICAgIHZvaWQgZW1pdFN1cGVyU2Ft
cGxlckJlZ2luKCk7CiAgICAgICAgIHZvaWQgZW1pdFN1cGVyU2FtcGxlckVuZCgpOwpAQCAtOTg4
LDEwICs5ODgsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdEdlbmVyYXRv
clN0YXRlQ2hhbmdlKGludDMyX3Qgc3RhdGUpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0WWll
bGQoUmVnaXN0ZXJJRCogYXJndW1lbnQsIEpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbjo6QXN5bmNH
ZW5lcmF0b3JTdXNwZW5kUmVhc29uID0gSlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uOjpBc3luY0dl
bmVyYXRvclN1c3BlbmRSZWFzb246OllpZWxkKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdERl
bGVnYXRlWWllbGQoUmVnaXN0ZXJJRCogYXJndW1lbnQsIFRocm93YWJsZUV4cHJlc3Npb25EYXRh
Kik7Ci0gICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRvclN0YXRlUmVnaXN0ZXIoKSB7IHJldHVy
biAmbV9wYXJhbWV0ZXJzW3N0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246
OkdlbmVyYXRvckFyZ3VtZW50OjpTdGF0ZSldOyB9Ci0gICAgICAgIFJlZ2lzdGVySUQqIGdlbmVy
YXRvclZhbHVlUmVnaXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJzW3N0YXRpY19jYXN0PGlu
dDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvckFyZ3VtZW50OjpWYWx1ZSldOyB9
Ci0gICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3RlcigpIHsgcmV0
dXJuICZtX3BhcmFtZXRlcnNbc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlv
bjo6R2VuZXJhdG9yQXJndW1lbnQ6OlJlc3VtZU1vZGUpXTsgfQotICAgICAgICBSZWdpc3RlcklE
KiBnZW5lcmF0b3JGcmFtZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1fcGFyYW1ldGVyc1tzdGF0aWNf
Y2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JBcmd1bWVudDo6RnJh
bWUpXTsgfQorICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JTdGF0ZVJlZ2lzdGVyKCkgeyBy
ZXR1cm4gJm1fcGFyYW1ldGVyc1tzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6R2Vu
ZXJhdG9yQXJndW1lbnQ6OlN0YXRlKV07IH0KKyAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9y
VmFsdWVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbc3RhdGljX2Nhc3Q8aW50MzJf
dD4oSlNHZW5lcmF0b3I6OkdlbmVyYXRvckFyZ3VtZW50OjpWYWx1ZSldOyB9CisgICAgICAgIFJl
Z2lzdGVySUQqIGdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFt
ZXRlcnNbc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6OkdlbmVyYXRvckFyZ3VtZW50
OjpSZXN1bWVNb2RlKV07IH0KKyAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yRnJhbWVSZWdp
c3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5l
cmF0b3I6OkdlbmVyYXRvckFyZ3VtZW50OjpGcmFtZSldOyB9CiAKICAgICAgICAgQ29kZVR5cGUg
Y29kZVR5cGUoKSBjb25zdCB7IHJldHVybiBtX2NvZGVUeXBlOyB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCAyYzgz
MjM2NjIzZWViZDUzMTVmMzY1ZTNiY2M5NWZmNDhlMTYzNGE3Li42NTdhNzBiMjg1NmU3MzBiODNj
OGI2ZGIwODQ4NmVlMmNjYzBhNTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVk
ZSAiSklULmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24u
aCIKKyNpbmNsdWRlICJKU0dlbmVyYXRvci5oIgogI2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVuY3Rp
b24uaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTSW1tdXRhYmxl
QnV0dGVyZmx5LmgiCkBAIC0xMDMwLDcgKzEwMzEsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUlu
dHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dldFByb21pc2VJbnRlcm5hbEZpZWxkKEJ5dGVj
bwogICAgIEFTU0VSVChpbmRleCA8IEpTUHJvbWlzZTo6bnVtYmVyT2ZJbnRlcm5hbEZpZWxkcyk7
CiAgICAgQVNTRVJUKCFub2RlLT5tX25leHQpOwogCi0gICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0
R2V0UHJvbWlzZUludGVybmFsRmllbGQoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSwg
YmFzZS5nZXQoKSwgaW5kZXgpOworICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdEdldEludGVybmFs
RmllbGQoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSwgaW5kZXgp
OwogfQogCiBSZWdpc3RlcklEKiBCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2lj
X2FyZ3VtZW50KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkK
QEAgLTExMTUsNyArMTExNiw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6
ZW1pdF9pbnRyaW5zaWNfcHV0UHJvbWlzZUludGVybmFsRmllbGQoQnl0ZWNvCiAKICAgICBBU1NF
UlQoIW5vZGUtPm1fbmV4dCk7CiAKLSAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmUoZHN0LCBnZW5l
cmF0b3IuZW1pdFB1dFByb21pc2VJbnRlcm5hbEZpZWxkKGJhc2UuZ2V0KCksIGluZGV4LCB2YWx1
ZS5nZXQoKSkpOworICAgIHJldHVybiBnZW5lcmF0b3IubW92ZShkc3QsIGdlbmVyYXRvci5lbWl0
UHV0SW50ZXJuYWxGaWVsZChiYXNlLmdldCgpLCBpbmRleCwgdmFsdWUuZ2V0KCkpKTsKIH0KIAog
UmVnaXN0ZXJJRCogQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY190YWlsQ2Fs
bEZvcndhcmRBcmd1bWVudHMoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJ
RCogZHN0KQpAQCAtMzk5Myw3ICszOTk0LDcgQEAgdm9pZCBGdW5jdGlvbk5vZGU6OmVtaXRCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKICAgICAgICAg
Z2VuZXJhdG9yLm1vdmUoYXJncy5hcmd1bWVudFJlZ2lzdGVyKGFyZ3VtZW50Q291bnQrKyksIGdl
bmVyYXRvci5nZW5lcmF0b3JSZWdpc3RlcigpKTsKICAgICAgICAgZ2VuZXJhdG9yLm1vdmUoYXJn
cy5hcmd1bWVudFJlZ2lzdGVyKGFyZ3VtZW50Q291bnQrKyksIGdlbmVyYXRvci5wcm9taXNlUmVn
aXN0ZXIoKSk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0TG9hZChhcmdzLmFyZ3VtZW50UmVnaXN0
ZXIoYXJndW1lbnRDb3VudCsrKSwganNVbmRlZmluZWQoKSk7Ci0gICAgICAgIGdlbmVyYXRvci5l
bWl0TG9hZChhcmdzLmFyZ3VtZW50UmVnaXN0ZXIoYXJndW1lbnRDb3VudCsrKSwganNOdW1iZXIo
c3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yUmVzdW1l
TW9kZTo6Tm9ybWFsTW9kZSkpKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGFyZ3MuYXJn
dW1lbnRSZWdpc3Rlcihhcmd1bWVudENvdW50KyspLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQz
Ml90PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9yUmVzdW1lTW9kZTo6Tm9ybWFsTW9kZSkpKTsKICAg
ICAgICAgLy8gSlNUZXh0UG9zaXRpb24oaW50IF9saW5lLCBpbnQgX29mZnNldCwgaW50IF9saW5l
U3RhcnRPZmZzZXQpCiAgICAgICAgIEpTVGV4dFBvc2l0aW9uIGRpdm90KGZpcnN0TGluZSgpLCBz
dGFydE9mZnNldCgpLCBsaW5lU3RhcnRPZmZzZXQoKSk7CiAKQEAgLTQwMTAsMTEgKzQwMTEsMTEg
QEAgdm9pZCBGdW5jdGlvbk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLCBSZWdpc3RlcklEKikKICAgICAgICAgUmVmPExhYmVsPiBnZW5lcmF0b3JCb2R5TGFi
ZWwgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKICAgICAgICAgewogICAgICAgICAgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IGNvbmRpdGlvbiA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKLSAgICAg
ICAgICAgIGdlbmVyYXRvci5lbWl0RXF1YWxpdHlPcDxPcFN0cmljdGVxPihjb25kaXRpb24uZ2V0
KCksIGdlbmVyYXRvci5nZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSwgZ2VuZXJhdG9yLmVt
aXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9y
RnVuY3Rpb246OkdlbmVyYXRvclJlc3VtZU1vZGU6Ok5vcm1hbE1vZGUpKSkpOworICAgICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRFcXVhbGl0eU9wPE9wU3RyaWN0ZXE+KGNvbmRpdGlvbi5nZXQoKSwg
Z2VuZXJhdG9yLmdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3RlcigpLCBnZW5lcmF0b3IuZW1pdExv
YWQobnVsbHB0ciwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6Okdl
bmVyYXRvclJlc3VtZU1vZGU6Ok5vcm1hbE1vZGUpKSkpOwogICAgICAgICAgICAgZ2VuZXJhdG9y
LmVtaXRKdW1wSWZUcnVlKGNvbmRpdGlvbi5nZXQoKSwgZ2VuZXJhdG9yQm9keUxhYmVsLmdldCgp
KTsKIAogICAgICAgICAgICAgUmVmPExhYmVsPiB0aHJvd0xhYmVsID0gZ2VuZXJhdG9yLm5ld0xh
YmVsKCk7Ci0gICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEVxdWFsaXR5T3A8T3BTdHJpY3RlcT4o
Y29uZGl0aW9uLmdldCgpLCBnZW5lcmF0b3IuZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCks
IGdlbmVyYXRvci5lbWl0TG9hZChudWxscHRyLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90
PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JSZXN1bWVNb2RlOjpUaHJvd01vZGUpKSkp
OworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRFcXVhbGl0eU9wPE9wU3RyaWN0ZXE+KGNvbmRp
dGlvbi5nZXQoKSwgZ2VuZXJhdG9yLmdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3RlcigpLCBnZW5l
cmF0b3IuZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNH
ZW5lcmF0b3I6OkdlbmVyYXRvclJlc3VtZU1vZGU6OlRocm93TW9kZSkpKSk7CiAgICAgICAgICAg
ICBnZW5lcmF0b3IuZW1pdEp1bXBJZlRydWUoY29uZGl0aW9uLmdldCgpLCB0aHJvd0xhYmVsLmdl
dCgpKTsKIAogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRSZXR1cm4oZ2VuZXJhdG9yLmdlbmVy
YXRvclZhbHVlUmVnaXN0ZXIoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggNDY0NzgxZGM5NzJj
MjhiODA0OTJlY2UxNWExNzBjMDliMmM1NGMyMS4uOWI2YmYwMzU5Nzg3OTdhM2UzM2E0Yzg0OTUx
NDAzMTQwYzUzMWQxMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaApAQCAtMjk0MCwxMSArMjk0MCwxMSBA
QCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZm
ZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgIGNhc2UgUHV0Q2xvc3VyZVZhcjoKICAgICAg
ICAgYnJlYWs7CiAKLSAgICBjYXNlIEdldFByb21pc2VJbnRlcm5hbEZpZWxkOgorICAgIGNhc2Ug
R2V0SW50ZXJuYWxGaWVsZDoKICAgICAgICAgbWFrZUJ5dGVjb2RlVG9wRm9yTm9kZShub2RlKTsK
ICAgICAgICAgYnJlYWs7CiAKLSAgICBjYXNlIFB1dFByb21pc2VJbnRlcm5hbEZpZWxkOgorICAg
IGNhc2UgUHV0SW50ZXJuYWxGaWVsZDoKICAgICAgICAgYnJlYWs7CiAKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCAwZjNmYjdlNmVi
YmVlMDQyMTFhMzAxY2JlZTc4ODMxZTBhNGYxMTI2Li4yYzgyYjFlOTNiZDFmZDUyY2VkNTUwNGE0
MWJhZWM5YTVkOWI5MzkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcApAQCAtNzA0OSwxNiArNzA0OSwxNiBAQCB2b2lkIEJ5dGVDb2RlUGFy
c2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgTkVYVF9PUENPREUo
b3BfdG9faW5kZXhfc3RyaW5nKTsKICAgICAgICAgfQogCi0gICAgICAgIGNhc2Ugb3BfZ2V0X3By
b21pc2VfaW50ZXJuYWxfZmllbGQ6IHsKLSAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0UHJvbWlzZUludGVybmFsRmllbGQ+KCk7Ci0gICAgICAg
ICAgICBzZXQoYnl0ZWNvZGUubV9kc3QsIGFkZFRvR3JhcGgoR2V0UHJvbWlzZUludGVybmFsRmll
bGQsIE9wSW5mbyhieXRlY29kZS5tX2luZGV4KSwgT3BJbmZvKGdldFByZWRpY3Rpb24oKSksIGdl
dChieXRlY29kZS5tX2Jhc2UpKSk7Ci0gICAgICAgICAgICBORVhUX09QQ09ERShvcF9nZXRfcHJv
bWlzZV9pbnRlcm5hbF9maWVsZCk7CisgICAgICAgIGNhc2Ugb3BfZ2V0X2ludGVybmFsX2ZpZWxk
OiB7CisgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxP
cEdldEludGVybmFsRmllbGQ+KCk7CisgICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV9kc3QsIGFk
ZFRvR3JhcGgoR2V0SW50ZXJuYWxGaWVsZCwgT3BJbmZvKGJ5dGVjb2RlLm1faW5kZXgpLCBPcElu
Zm8oZ2V0UHJlZGljdGlvbigpKSwgZ2V0KGJ5dGVjb2RlLm1fYmFzZSkpKTsKKyAgICAgICAgICAg
IE5FWFRfT1BDT0RFKG9wX2dldF9pbnRlcm5hbF9maWVsZCk7CiAgICAgICAgIH0KIAotICAgICAg
ICBjYXNlIG9wX3B1dF9wcm9taXNlX2ludGVybmFsX2ZpZWxkOiB7Ci0gICAgICAgICAgICBhdXRv
IGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFB1dFByb21pc2VJbnRlcm5hbEZp
ZWxkPigpOwotICAgICAgICAgICAgYWRkVG9HcmFwaChQdXRQcm9taXNlSW50ZXJuYWxGaWVsZCwg
T3BJbmZvKGJ5dGVjb2RlLm1faW5kZXgpLCBnZXQoYnl0ZWNvZGUubV9iYXNlKSwgZ2V0KGJ5dGVj
b2RlLm1fdmFsdWUpKTsKLSAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX3B1dF9wcm9taXNlX2lu
dGVybmFsX2ZpZWxkKTsKKyAgICAgICAgY2FzZSBvcF9wdXRfaW50ZXJuYWxfZmllbGQ6IHsKKyAg
ICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0SW50
ZXJuYWxGaWVsZD4oKTsKKyAgICAgICAgICAgIGFkZFRvR3JhcGgoUHV0SW50ZXJuYWxGaWVsZCwg
T3BJbmZvKGJ5dGVjb2RlLm1faW5kZXgpLCBnZXQoYnl0ZWNvZGUubV9iYXNlKSwgZ2V0KGJ5dGVj
b2RlLm1fdmFsdWUpKTsKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX3B1dF9pbnRlcm5hbF9m
aWVsZCk7CiAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNlIG9wX2xvZ19zaGFk
b3dfY2hpY2tlbl9wcm9sb2d1ZTogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
YXBhYmlsaXRpZXMuY3BwCmluZGV4IDVhYzdjNDI3NzZiZDU1NzE2ZDVhZTMxNmQyYWU4ZjhiZTdh
YjRhMjIuLmMwZWU5OGFlYTgzOGQ3MjU2ZTZiNzU0YjU0NTc0YmI4ZDZlOWY5ZmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKQEAgLTI3NSw4ICsy
NzUsOCBAQCBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsKE9wY29kZUlEIG9wY29kZUlE
LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgSQogICAgIGNhc2Ugb3BfcmVzb2x2ZV9zY29w
ZToKICAgICBjYXNlIG9wX3Jlc29sdmVfc2NvcGVfZm9yX2hvaXN0aW5nX2Z1bmNfZGVjbF9pbl9l
dmFsOgogICAgIGNhc2Ugb3BfbmV3X3JlZ2V4cDoKLSAgICBjYXNlIG9wX2dldF9wcm9taXNlX2lu
dGVybmFsX2ZpZWxkOgotICAgIGNhc2Ugb3BfcHV0X3Byb21pc2VfaW50ZXJuYWxfZmllbGQ6Cisg
ICAgY2FzZSBvcF9nZXRfaW50ZXJuYWxfZmllbGQ6CisgICAgY2FzZSBvcF9wdXRfaW50ZXJuYWxf
ZmllbGQ6CiAgICAgY2FzZSBvcF91bnJlYWNoYWJsZToKICAgICBjYXNlIG9wX3N1cGVyX3NhbXBs
ZXJfYmVnaW46CiAgICAgY2FzZSBvcF9zdXBlcl9zYW1wbGVyX2VuZDoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKaW5kZXggMjJkY2YzOTJlOWEzMmRlZjRkMTY2ZGVi
ZjE4MDQzYjMzZGVmY2MyYS4uYzFiN2EwYmMyMjFjZjQ4NDFjNmQ0MzFhYzRlNWNlNWFkYTFmNzFh
MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKQEAgLTEzMTcs
MTQgKzEzMTcsMTQgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwg
Y29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKICAgICAgICAgZGVmKEhlYXBM
b2NhdGlvbihDbG9zdXJlVmFyaWFibGVMb2MsIEFic3RyYWN0SGVhcChTY29wZVByb3BlcnRpZXMs
IG5vZGUtPnNjb3BlT2Zmc2V0KCkub2Zmc2V0KCkpLCBub2RlLT5jaGlsZDEoKSksIExhenlOb2Rl
KG5vZGUtPmNoaWxkMigpLm5vZGUoKSkpOwogICAgICAgICByZXR1cm47CiAKLSAgICBjYXNlIEdl
dFByb21pc2VJbnRlcm5hbEZpZWxkOiB7CisgICAgY2FzZSBHZXRJbnRlcm5hbEZpZWxkOiB7CiAg
ICAgICAgIEFic3RyYWN0SGVhcCBoZWFwKEpTUHJvbWlzZUZpZWxkcywgbm9kZS0+aW50ZXJuYWxG
aWVsZEluZGV4KCkpOwogICAgICAgICByZWFkKGhlYXApOwogICAgICAgICBkZWYoSGVhcExvY2F0
aW9uKFByb21pc2VJbnRlcm5hbEZpZWxkTG9jLCBoZWFwLCBub2RlLT5jaGlsZDEoKSksIExhenlO
b2RlKG5vZGUpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGNhc2UgUHV0UHJvbWlz
ZUludGVybmFsRmllbGQ6IHsKKyAgICBjYXNlIFB1dEludGVybmFsRmllbGQ6IHsKICAgICAgICAg
QWJzdHJhY3RIZWFwIGhlYXAoSlNQcm9taXNlRmllbGRzLCBub2RlLT5pbnRlcm5hbEZpZWxkSW5k
ZXgoKSk7CiAgICAgICAgIHdyaXRlKGhlYXApOwogICAgICAgICBkZWYoSGVhcExvY2F0aW9uKFBy
b21pc2VJbnRlcm5hbEZpZWxkTG9jLCBoZWFwLCBub2RlLT5jaGlsZDEoKSksIExhenlOb2RlKG5v
ZGUtPmNoaWxkMigpLm5vZGUoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdEb2VzR0MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0Mu
Y3BwCmluZGV4IDg5Mzg4MDU2M2U4MjFiYmE4ZGE0MTQzYjU4ZmVmZjA2YjMxMDBjMWYuLmZiMzEy
MmI3YzI2NWQzYjhlZDFhNmEwMDZiMmRjODI0YTVlNThkNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0RvZXNHQy5jcHAKQEAgLTEyMyw4ICsxMjMsOCBAQCBib29sIGRvZXNHQyhHcmFw
aCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBHZXRHbG9iYWxUaGlzOgogICAgIGNhc2Ug
R2V0Q2xvc3VyZVZhcjoKICAgICBjYXNlIFB1dENsb3N1cmVWYXI6Ci0gICAgY2FzZSBHZXRQcm9t
aXNlSW50ZXJuYWxGaWVsZDoKLSAgICBjYXNlIFB1dFByb21pc2VJbnRlcm5hbEZpZWxkOgorICAg
IGNhc2UgR2V0SW50ZXJuYWxGaWVsZDoKKyAgICBjYXNlIFB1dEludGVybmFsRmllbGQ6CiAgICAg
Y2FzZSBHZXRSZWdFeHBPYmplY3RMYXN0SW5kZXg6CiAgICAgY2FzZSBTZXRSZWdFeHBPYmplY3RM
YXN0SW5kZXg6CiAgICAgY2FzZSBSZWNvcmRSZWdFeHBDYWNoZWRSZXN1bHQ6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAppbmRleCAzYzczNTYzNDI0NjgwMjJh
NzFhYjAyMzc0OTg2ZDA0ZTc0OTgxNGYxLi5lNDVhYzVjMWU2NGM3M2ZlMjY4OWM0ZTM4ZTRlZTJi
MTI1ZGMzNzFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVw
UGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5j
cHAKQEAgLTE0ODQsMTQgKzE0ODQsMTQgQEAgY2xhc3MgRml4dXBQaGFzZSA6IHB1YmxpYyBQaGFz
ZSB7CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBHZXRDbG9zdXJlVmFyOgogICAgICAgICBj
YXNlIEdldEZyb21Bcmd1bWVudHM6Ci0gICAgICAgIGNhc2UgR2V0UHJvbWlzZUludGVybmFsRmll
bGQ6IHsKKyAgICAgICAgY2FzZSBHZXRJbnRlcm5hbEZpZWxkOiB7CiAgICAgICAgICAgICBmaXhF
ZGdlPEtub3duQ2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KIAogICAgICAgICBjYXNlIFB1dENsb3N1cmVWYXI6CiAgICAgICAgIGNhc2UgUHV0
VG9Bcmd1bWVudHM6Ci0gICAgICAgIGNhc2UgUHV0UHJvbWlzZUludGVybmFsRmllbGQ6IHsKKyAg
ICAgICAgY2FzZSBQdXRJbnRlcm5hbEZpZWxkOiB7CiAgICAgICAgICAgICBmaXhFZGdlPEtub3du
Q2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgc3BlY3VsYXRlRm9yQmFycmll
cihub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR01heUV4aXQuY3BwCmluZGV4IGZiNzNkZTZmZDRmMTA2Y2QzNzYyOGEyZGFkMDAx
NjVlYmJhMzY0OGEuLmY4ZWU5OWMzNjc1ZjMwZTE1ZTM4N2MzNGU0ZjAxZjc0MzNiZmYzNDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcApAQCAtMTAxLDcgKzEwMSw3
IEBAIEV4aXRNb2RlIG1heUV4aXRJbXBsKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgU3RhdGVU
eXBlJiBzdGF0ZSkKICAgICBjYXNlIEZlbmNlZFN0b3JlQmFycmllcjoKICAgICBjYXNlIFB1dEJ5
T2Zmc2V0OgogICAgIGNhc2UgUHV0Q2xvc3VyZVZhcjoKLSAgICBjYXNlIFB1dFByb21pc2VJbnRl
cm5hbEZpZWxkOgorICAgIGNhc2UgUHV0SW50ZXJuYWxGaWVsZDoKICAgICBjYXNlIFJlY29yZFJl
Z0V4cENhY2hlZFJlc3VsdDoKICAgICBjYXNlIE51a2VTdHJ1Y3R1cmVBbmRTZXRCdXR0ZXJmbHk6
CiAgICAgY2FzZSBGaWx0ZXJDYWxsTGlua1N0YXR1czoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlLmgKaW5kZXggNjkwMjAyNTA3Mzk1MzBkODcwN2IzNDM1YTIwNWE4ODBkNTBiYmQ4ZC4uNjlm
MDhjMTg2ZDQ4Y2ViZjZjNzZiODlhNGQ1ZDQ4NDQwN2RiM2QwZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlLmgKQEAgLTEyODYsNyArMTI4Niw3IEBAIHN0cnVjdCBOb2RlIHsKIAogICAg
IHVuc2lnbmVkIGhhc0ludGVybmFsRmllbGRJbmRleCgpCiAgICAgewotICAgICAgICByZXR1cm4g
b3AoKSA9PSBHZXRQcm9taXNlSW50ZXJuYWxGaWVsZCB8fCBvcCgpID09IFB1dFByb21pc2VJbnRl
cm5hbEZpZWxkOworICAgICAgICByZXR1cm4gb3AoKSA9PSBHZXRJbnRlcm5hbEZpZWxkIHx8IG9w
KCkgPT0gUHV0SW50ZXJuYWxGaWVsZDsKICAgICB9CiAKICAgICB1bnNpZ25lZCBpbnRlcm5hbEZp
ZWxkSW5kZXgoKQpAQCAtMTY5OSw3ICsxNjk5LDcgQEAgc3RydWN0IE5vZGUgewogICAgICAgICBj
YXNlIEdldEJ5T2Zmc2V0OgogICAgICAgICBjYXNlIE11bHRpR2V0QnlPZmZzZXQ6CiAgICAgICAg
IGNhc2UgR2V0Q2xvc3VyZVZhcjoKLSAgICAgICAgY2FzZSBHZXRQcm9taXNlSW50ZXJuYWxGaWVs
ZDoKKyAgICAgICAgY2FzZSBHZXRJbnRlcm5hbEZpZWxkOgogICAgICAgICBjYXNlIEdldEZyb21B
cmd1bWVudHM6CiAgICAgICAgIGNhc2UgR2V0QXJndW1lbnQ6CiAgICAgICAgIGNhc2UgQXJyYXlQ
b3A6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKaW5kZXggZGQ0ZWZjZGQy
ODlhMzU1M2M0NmFkOGM5ZmEzMGVjNDRhNDBhNjJmNS4uNGQ3MTU4MmUxN2E2OTFhMDU4YTgzNDcy
Mjg0ZjYwMTlmOTdkODAzOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUu
aApAQCAtNDAxLDggKzQwMSw4IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAg
ICBtYWNybyhTZXRGdW5jdGlvbk5hbWUsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhI
YXNPd25Qcm9wZXJ0eSwgTm9kZVJlc3VsdEJvb2xlYW4pIFwKICAgICBcCi0gICAgbWFjcm8oR2V0
UHJvbWlzZUludGVybmFsRmllbGQsIE5vZGVSZXN1bHRKUykgXAotICAgIG1hY3JvKFB1dFByb21p
c2VJbnRlcm5hbEZpZWxkLCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oR2V0SW50ZXJu
YWxGaWVsZCwgTm9kZVJlc3VsdEpTKSBcCisgICAgbWFjcm8oUHV0SW50ZXJuYWxGaWVsZCwgTm9k
ZU11c3RHZW5lcmF0ZSkgXAogICAgIFwKICAgICBtYWNybyhDcmVhdGVBY3RpdmF0aW9uLCBOb2Rl
UmVzdWx0SlMpIFwKICAgICBtYWNybyhQdXNoV2l0aFNjb3BlLCBOb2RlUmVzdWx0SlMgfCBOb2Rl
TXVzdEdlbmVyYXRlKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4IDMzN2M4YjQzOWY4M2Ni
ZDQxNWRjYmEwZjhlNDMwNGUwZjE0NWFlNmEuLjQ4YTQxYjMwNzJiNzY3NjM2MTkxMDQ1M2E0ZGU0
ZjVhYWViNTRiYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJl
ZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC04MjcsNyArODI3LDcgQEAg
Y2xhc3MgUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAg
ICBjYXNlIEdldEdsb2JhbFZhcjoKICAgICAgICAgY2FzZSBHZXRHbG9iYWxMZXhpY2FsVmFyaWFi
bGU6CiAgICAgICAgIGNhc2UgR2V0Q2xvc3VyZVZhcjoKLSAgICAgICAgY2FzZSBHZXRQcm9taXNl
SW50ZXJuYWxGaWVsZDoKKyAgICAgICAgY2FzZSBHZXRJbnRlcm5hbEZpZWxkOgogICAgICAgICBj
YXNlIEdldEZyb21Bcmd1bWVudHM6CiAgICAgICAgIGNhc2UgTG9hZEtleUZyb21NYXBCdWNrZXQ6
CiAgICAgICAgIGNhc2UgTG9hZFZhbHVlRnJvbU1hcEJ1Y2tldDoKQEAgLTEyNzAsNyArMTI3MCw3
IEBAIGNsYXNzIFByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKICAg
ICAgICAgY2FzZSBQdXRCeUlkV2l0aFRoaXM6CiAgICAgICAgIGNhc2UgUHV0QnlWYWw6CiAgICAg
ICAgIGNhc2UgUHV0Q2xvc3VyZVZhcjoKLSAgICAgICAgY2FzZSBQdXRQcm9taXNlSW50ZXJuYWxG
aWVsZDoKKyAgICAgICAgY2FzZSBQdXRJbnRlcm5hbEZpZWxkOgogICAgICAgICBjYXNlIFB1dFRv
QXJndW1lbnRzOgogICAgICAgICBjYXNlIFJldHVybjoKICAgICAgICAgY2FzZSBUaHJvdzoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKaW5kZXggMDU2MGVl
Y2U5ODk2MDM2NGE5OWZlOTI1NjhlOGQ1NjhkNzI1MzMwYS4uY2E4YWVhMzBhMzUyNjZjNjc1NDU5
YjliNWVmNTQ1MmM1MzE3NmQ1ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTYWZlVG9FeGVjdXRlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
YWZlVG9FeGVjdXRlLmgKQEAgLTI4Myw4ICsyODMsOCBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJz
dHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGJvb2wgaWdu
bwogICAgIGNhc2UgR2V0R2xvYmFsVmFyOgogICAgIGNhc2UgR2V0R2xvYmFsTGV4aWNhbFZhcmlh
YmxlOgogICAgIGNhc2UgUHV0R2xvYmFsVmFyaWFibGU6Ci0gICAgY2FzZSBHZXRQcm9taXNlSW50
ZXJuYWxGaWVsZDoKLSAgICBjYXNlIFB1dFByb21pc2VJbnRlcm5hbEZpZWxkOgorICAgIGNhc2Ug
R2V0SW50ZXJuYWxGaWVsZDoKKyAgICBjYXNlIFB1dEludGVybmFsRmllbGQ6CiAgICAgY2FzZSBD
aGVja0NlbGw6CiAgICAgY2FzZSBDaGVja0JhZENlbGw6CiAgICAgY2FzZSBDaGVja05vdEVtcHR5
OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApp
bmRleCA3M2VlZGMzMGU5MGNmYTI5ZjM5MmM1MTQzNDE5ZDM3Y2FkYTIxY2IwLi5jM2ZlNWE0OWIw
MDMwYzY0MDAxMzczMGMxYjMwZGU1ZDBmZDk0ZGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtMTEyNzAsNyArMTEyNzAsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0Q2xvc3VyZVZhcihOb2RlKiBub2RlKQogICAg
IG5vUmVzdWx0KG5vZGUpOwogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0UHJv
bWlzZUludGVybmFsRmllbGQoTm9kZSogbm9kZSkKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVHZXRJbnRlcm5hbEZpZWxkKE5vZGUqIG5vZGUpCiB7CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJh
bmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgSlNWYWx1ZVJlZ3NUZW1wb3Jhcnkg
cmVzdWx0KHRoaXMpOwpAQCAtMTEyNzgsMTEgKzExMjc4LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVHZXRQcm9taXNlSW50ZXJuYWxGaWVsZChOb2RlKiBub2RlKQogICAgIEdQUlJl
ZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVz
dWx0LnJlZ3MoKTsKIAotICAgIG1faml0LmxvYWRWYWx1ZShKSVRDb21waWxlcjo6QWRkcmVzcyhi
YXNlR1BSLCBKU1Byb21pc2U6Om9mZnNldE9mSW50ZXJuYWxGaWVsZChub2RlLT5pbnRlcm5hbEZp
ZWxkSW5kZXgoKSkpLCByZXN1bHRSZWdzKTsKKyAgICBtX2ppdC5sb2FkVmFsdWUoSklUQ29tcGls
ZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbDw+OjpvZmZzZXRP
ZkludGVybmFsRmllbGQobm9kZS0+aW50ZXJuYWxGaWVsZEluZGV4KCkpKSwgcmVzdWx0UmVncyk7
CiAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKIH0KIAotdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZVB1dFByb21pc2VJbnRlcm5hbEZpZWxkKE5vZGUqIG5vZGUpCit2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0SW50ZXJuYWxGaWVsZChOb2RlKiBub2RlKQogewog
ICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAg
IEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKQEAgLTExMjkwLDcg
KzExMjkwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dFByb21pc2VJbnRlcm5h
bEZpZWxkKE5vZGUqIG5vZGUpCiAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAg
IEpTVmFsdWVSZWdzIHZhbHVlUmVncyA9IHZhbHVlLmpzVmFsdWVSZWdzKCk7CiAKLSAgICBtX2pp
dC5zdG9yZVZhbHVlKHZhbHVlUmVncywgSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNQ
cm9taXNlOjpvZmZzZXRPZkludGVybmFsRmllbGQobm9kZS0+aW50ZXJuYWxGaWVsZEluZGV4KCkp
KSk7CisgICAgbV9qaXQuc3RvcmVWYWx1ZSh2YWx1ZVJlZ3MsIEpJVENvbXBpbGVyOjpBZGRyZXNz
KGJhc2VHUFIsIEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGw8Pjo6b2Zmc2V0T2ZJbnRlcm5hbEZp
ZWxkKG5vZGUtPmludGVybmFsRmllbGRJbmRleCgpKSkpOwogICAgIG5vUmVzdWx0KG5vZGUpOwog
fQogCkBAIC0xMjc1OSw4ICsxMjc1OSw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVD
cmVhdGVQcm9taXNlKE5vZGUqIG5vZGUpCiAgICAgICAgIGVtaXRBbGxvY2F0ZUpTT2JqZWN0V2l0
aEtub3duU2l6ZTxKU0ludGVybmFsUHJvbWlzZT4ocmVzdWx0R1BSLCBzdHJ1Y3R1cmVHUFIsIGJ1
dHRlcmZseSwgc2NyYXRjaDFHUFIsIHNjcmF0Y2gyR1BSLCBzbG93Q2FzZXMsIHNpemVvZihKU0lu
dGVybmFsUHJvbWlzZSkpOwogICAgIGVsc2UKICAgICAgICAgZW1pdEFsbG9jYXRlSlNPYmplY3RX
aXRoS25vd25TaXplPEpTUHJvbWlzZT4ocmVzdWx0R1BSLCBzdHJ1Y3R1cmVHUFIsIGJ1dHRlcmZs
eSwgc2NyYXRjaDFHUFIsIHNjcmF0Y2gyR1BSLCBzbG93Q2FzZXMsIHNpemVvZihKU1Byb21pc2Up
KTsKLSAgICBtX2ppdC5zdG9yZVRydXN0ZWRWYWx1ZShqc051bWJlcihzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNQcm9taXNlOjpTdGF0dXM6OlBlbmRpbmcpKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNz
KHJlc3VsdEdQUiwgSlNQcm9taXNlOjpvZmZzZXRPZkludGVybmFsRmllbGQoc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTUHJvbWlzZTo6RmllbGQ6OkZsYWdzKSkpKTsKLSAgICBtX2ppdC5zdG9yZVRy
dXN0ZWRWYWx1ZShqc1VuZGVmaW5lZCgpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MocmVzdWx0R1BS
LCBKU1Byb21pc2U6Om9mZnNldE9mSW50ZXJuYWxGaWVsZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNQcm9taXNlOjpGaWVsZDo6UmVhY3Rpb25zT3JSZXN1bHQpKSkpOworICAgIG1faml0LnN0b3Jl
VHJ1c3RlZFZhbHVlKGpzTnVtYmVyKHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU1Byb21pc2U6OlN0
YXR1czo6UGVuZGluZykpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0ludGVy
bmFsRmllbGRPYmplY3RJbXBsPD46Om9mZnNldE9mSW50ZXJuYWxGaWVsZChzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNQcm9taXNlOjpGaWVsZDo6RmxhZ3MpKSkpOworICAgIG1faml0LnN0b3JlVHJ1
c3RlZFZhbHVlKGpzVW5kZWZpbmVkKCksIENDYWxsSGVscGVyczo6QWRkcmVzcyhyZXN1bHRHUFIs
IEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGw8Pjo6b2Zmc2V0T2ZJbnRlcm5hbEZpZWxkKHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU1Byb21pc2U6OkZpZWxkOjpSZWFjdGlvbnNPclJlc3VsdCkpKSk7
CiAgICAgbV9qaXQubXV0YXRvckZlbmNlKG1faml0LnZtKCkpOwogCiAgICAgYWRkU2xvd1BhdGhH
ZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dDYXNlcywgdGhpcywgbm9kZS0+aXNJbnRlcm5hbFBy
b21pc2UoKSA/IG9wZXJhdGlvbkNyZWF0ZUludGVybmFsUHJvbWlzZSA6IG9wZXJhdGlvbkNyZWF0
ZVByb21pc2UsIHJlc3VsdEdQUiwgY2FsbGVlR1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2ppdC5ncmFwaCgpLCBnbG9iYWxPYmplY3QpKSk7CkBAIC0xMjgxNSw4ICsxMjgxNSw4IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdQcm9taXNlKE5vZGUqIG5vZGUpCiAgICAg
ICAgIGVtaXRBbGxvY2F0ZUpTT2JqZWN0V2l0aEtub3duU2l6ZTxKU0ludGVybmFsUHJvbWlzZT4o
cmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIGJ1dHRlcmZseSwgc2NyYXRjaDFH
UFIsIHNjcmF0Y2gyR1BSLCBzbG93Q2FzZXMsIHNpemVvZihKU0ludGVybmFsUHJvbWlzZSkpOwog
ICAgIGVsc2UKICAgICAgICAgZW1pdEFsbG9jYXRlSlNPYmplY3RXaXRoS25vd25TaXplPEpTUHJv
bWlzZT4ocmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIGJ1dHRlcmZseSwgc2Ny
YXRjaDFHUFIsIHNjcmF0Y2gyR1BSLCBzbG93Q2FzZXMsIHNpemVvZihKU1Byb21pc2UpKTsKLSAg
ICBtX2ppdC5zdG9yZVRydXN0ZWRWYWx1ZShqc051bWJlcihzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNQcm9taXNlOjpTdGF0dXM6OlBlbmRpbmcpKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHJlc3Vs
dEdQUiwgSlNQcm9taXNlOjpvZmZzZXRPZkludGVybmFsRmllbGQoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEpTUHJvbWlzZTo6RmllbGQ6OkZsYWdzKSkpKTsKLSAgICBtX2ppdC5zdG9yZVRydXN0ZWRW
YWx1ZShqc1VuZGVmaW5lZCgpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MocmVzdWx0R1BSLCBKU1By
b21pc2U6Om9mZnNldE9mSW50ZXJuYWxGaWVsZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNQcm9t
aXNlOjpGaWVsZDo6UmVhY3Rpb25zT3JSZXN1bHQpKSkpOworICAgIG1faml0LnN0b3JlVHJ1c3Rl
ZFZhbHVlKGpzTnVtYmVyKHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU1Byb21pc2U6OlN0YXR1czo6
UGVuZGluZykpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0ludGVybmFsRmll
bGRPYmplY3RJbXBsPD46Om9mZnNldE9mSW50ZXJuYWxGaWVsZChzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNQcm9taXNlOjpGaWVsZDo6RmxhZ3MpKSkpOworICAgIG1faml0LnN0b3JlVHJ1c3RlZFZh
bHVlKGpzVW5kZWZpbmVkKCksIENDYWxsSGVscGVyczo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTSW50
ZXJuYWxGaWVsZE9iamVjdEltcGw8Pjo6b2Zmc2V0T2ZJbnRlcm5hbEZpZWxkKHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU1Byb21pc2U6OkZpZWxkOjpSZWFjdGlvbnNPclJlc3VsdCkpKSk7CiAgICAg
bV9qaXQubXV0YXRvckZlbmNlKG1faml0LnZtKCkpOwogCiAgICAgYWRkU2xvd1BhdGhHZW5lcmF0
b3Ioc2xvd1BhdGhDYWxsKHNsb3dDYXNlcywgdGhpcywgbm9kZS0+aXNJbnRlcm5hbFByb21pc2Uo
KSA/IG9wZXJhdGlvbk5ld0ludGVybmFsUHJvbWlzZSA6IG9wZXJhdGlvbk5ld1Byb21pc2UsIHJl
c3VsdEdQUiwgVHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXggMTRkNDdmMmRhMGNiMDY0ODQxNTRj
ODFkODg1ZDIxMzViNzk1M2U2My4uZjk5MWRkMjAxNjI0ZTYwM2IyMWVkNzNkZDAzYzUzYzNiNzMx
YWRlMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
aApAQCAtMTQ0OCw4ICsxNDQ4LDggQEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQgewogICAgIHZvaWQg
Y29tcGlsZVB1dER5bmFtaWNWYXIoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUdldENsb3N1cmVW
YXIoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZVB1dENsb3N1cmVWYXIoTm9kZSopOwotICAgIHZv
aWQgY29tcGlsZUdldFByb21pc2VJbnRlcm5hbEZpZWxkKE5vZGUqKTsKLSAgICB2b2lkIGNvbXBp
bGVQdXRQcm9taXNlSW50ZXJuYWxGaWVsZChOb2RlKik7CisgICAgdm9pZCBjb21waWxlR2V0SW50
ZXJuYWxGaWVsZChOb2RlKik7CisgICAgdm9pZCBjb21waWxlUHV0SW50ZXJuYWxGaWVsZChOb2Rl
Kik7CiAgICAgdm9pZCBjb21waWxlQ29tcGFyZUVxUHRyKE5vZGUqKTsKICAgICB2b2lkIGNvbXBp
bGVEZWZpbmVEYXRhUHJvcGVydHkoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZURlZmluZUFjY2Vz
c29yUHJvcGVydHkoTm9kZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKaW5kZXggYzNkYTA4YjE3ZTk1M2JkZDViMDE1NTk1
MTdiOGYyOTNkMmY0ZTI4Mi4uMDljZjA5ODQ2OThiOWY3OTM3NmYwNTY0MTdlNTcxNjAzOWFlNTZk
YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUMzJfNjQuY3BwCkBAIC0zMjU3LDEzICszMjU3LDEzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgY2FzZSBH
ZXRQcm9taXNlSW50ZXJuYWxGaWVsZDogewotICAgICAgICBjb21waWxlR2V0UHJvbWlzZUludGVy
bmFsRmllbGQobm9kZSk7CisgICAgY2FzZSBHZXRJbnRlcm5hbEZpZWxkOiB7CisgICAgICAgIGNv
bXBpbGVHZXRJbnRlcm5hbEZpZWxkKG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9CiAKLSAg
ICBjYXNlIFB1dFByb21pc2VJbnRlcm5hbEZpZWxkOiB7Ci0gICAgICAgIGNvbXBpbGVQdXRQcm9t
aXNlSW50ZXJuYWxGaWVsZChub2RlKTsKKyAgICBjYXNlIFB1dEludGVybmFsRmllbGQ6IHsKKyAg
ICAgICAgY29tcGlsZVB1dEludGVybmFsRmllbGQobm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHAKaW5kZXggYzllMjlmNGMzYTc1MTRjNmFlZTdhNmMyZWJhMzVlYmNiOTQ3NjZiZC4uZjFm
MDRjM2M5ODc1YTYzMTY1YTYyOGZmOWYxY2VkYjVmYzcwNmIzNiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC0zNTM4LDEzICsz
NTM4LDEzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogCi0gICAgY2FzZSBHZXRQcm9taXNlSW50ZXJuYWxGaWVsZDogewot
ICAgICAgICBjb21waWxlR2V0UHJvbWlzZUludGVybmFsRmllbGQobm9kZSk7CisgICAgY2FzZSBH
ZXRJbnRlcm5hbEZpZWxkOiB7CisgICAgICAgIGNvbXBpbGVHZXRJbnRlcm5hbEZpZWxkKG5vZGUp
OwogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBjYXNlIFB1dFByb21pc2VJbnRlcm5hbEZp
ZWxkOiB7Ci0gICAgICAgIGNvbXBpbGVQdXRQcm9taXNlSW50ZXJuYWxGaWVsZChub2RlKTsKKyAg
ICBjYXNlIFB1dEludGVybmFsRmllbGQ6IHsKKyAgICAgICAgY29tcGlsZVB1dEludGVybmFsRmll
bGQobm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcApp
bmRleCA0YzczY2Y2NjAzNTkyODFmZDAwZmRhNTJiYWIyODBjZjNiMjc4YzZiLi4yNGI1NWU3ODhk
OWRlOWI1MDY5OTY3NTU3NTM3NzM4YjMzMmJlMzU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcApA
QCAtMjgyLDcgKzI4Miw3IEBAIGNsYXNzIFN0b3JlQmFycmllckluc2VydGlvblBoYXNlIDogcHVi
bGljIFBoYXNlIHsKICAgICAgICAgICAgIGNhc2UgUHV0Q2xvc3VyZVZhcjoKICAgICAgICAgICAg
IGNhc2UgUHV0VG9Bcmd1bWVudHM6CiAgICAgICAgICAgICBjYXNlIFNldFJlZ0V4cE9iamVjdExh
c3RJbmRleDoKLSAgICAgICAgICAgIGNhc2UgUHV0UHJvbWlzZUludGVybmFsRmllbGQ6IHsKKyAg
ICAgICAgICAgIGNhc2UgUHV0SW50ZXJuYWxGaWVsZDogewogICAgICAgICAgICAgICAgIGNvbnNp
ZGVyQmFycmllcihtX25vZGUtPmNoaWxkMSgpLCBtX25vZGUtPmNoaWxkMigpKTsKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgKaW5kZXggZTJlYjgxM2ExMTM1
MmUwODYyZjIwNjk1Mjk1MTFkMGJmNWUwOTQxMy4uN2IwYzg5YTk0Y2EzMjhlZTk2ZWVlMGY0Yjk2
ZmUyMjdjZDdkMWRjOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExB
YnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgKQEAgLTE0OSw3ICsxNDksNyBAQCBuYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAgICAgbWFjcm8oRGlyZWN0QXJndW1lbnRzX3N0b3JhZ2Us
IERpcmVjdEFyZ3VtZW50czo6c3RvcmFnZU9mZnNldCgpLCBzaXplb2YoRW5jb2RlZEpTVmFsdWUp
KSBcCiAgICAgbWFjcm8oSlNMZXhpY2FsRW52aXJvbm1lbnRfdmFyaWFibGVzLCBKU0xleGljYWxF
bnZpcm9ubWVudDo6b2Zmc2V0T2ZWYXJpYWJsZXMoKSwgc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSkg
XAogICAgIG1hY3JvKEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcl9jYWNoZWRQcm9wZXJ0eU5hbWVz
VmVjdG9yQ29udGVudHMsIDAsIHNpemVvZihXcml0ZUJhcnJpZXI8SlNTdHJpbmc+KSkgXAotICAg
IG1hY3JvKEpTUHJvbWlzZV9pbnRlcm5hbEZpZWxkcywgSlNQcm9taXNlOjpvZmZzZXRPZkludGVy
bmFsRmllbGRzKCksIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pKSBcCisgICAgbWFjcm8o
SlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbF9pbnRlcm5hbEZpZWxkcywgSlNJbnRlcm5hbEZpZWxk
T2JqZWN0SW1wbDw+OjpvZmZzZXRPZkludGVybmFsRmllbGRzKCksIHNpemVvZihXcml0ZUJhcnJp
ZXI8VW5rbm93bj4pKSBcCiAgICAgbWFjcm8oU2NvcGVkQXJndW1lbnRzX1N0b3JhZ2Vfc3RvcmFn
ZSwgMCwgc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSkgXAogICAgIG1hY3JvKFdyaXRlQmFycmllckJ1
ZmZlcl9idWZmZXJDb250ZW50cywgMCwgc2l6ZW9mKEpTQ2VsbCopKSBcCiAgICAgbWFjcm8oY2hh
cmFjdGVyczgsIDAsIHNpemVvZihMQ2hhcikpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAppbmRleCA0M2M5NjgzOGYxMWNhNTA0Y2RjYzNkODA4YjVh
ZDE3NWVlOTQyZjYxLi44NDVjNDE3ZWNkYjE0YmY1MGE0NWY1ZThlMDllM2FlMjM5OWY5ZDgwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCkBAIC0x
NDIsOCArMTQyLDggQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5v
ZGUpCiAgICAgY2FzZSBOZXdBc3luY0dlbmVyYXRvckZ1bmN0aW9uOgogICAgIGNhc2UgR2V0Q2xv
c3VyZVZhcjoKICAgICBjYXNlIFB1dENsb3N1cmVWYXI6Ci0gICAgY2FzZSBHZXRQcm9taXNlSW50
ZXJuYWxGaWVsZDoKLSAgICBjYXNlIFB1dFByb21pc2VJbnRlcm5hbEZpZWxkOgorICAgIGNhc2Ug
R2V0SW50ZXJuYWxGaWVsZDoKKyAgICBjYXNlIFB1dEludGVybmFsRmllbGQ6CiAgICAgY2FzZSBD
cmVhdGVEaXJlY3RBcmd1bWVudHM6CiAgICAgY2FzZSBDcmVhdGVTY29wZWRBcmd1bWVudHM6CiAg
ICAgY2FzZSBDcmVhdGVDbG9uZWRBcmd1bWVudHM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggYWJlNjUxODU1MjZmMjQzZmE3MWYzYzIzYTZl
YTBkZTRiZDdlOGU3YS4uYTU1YWVkMjEyYTgxMTlhNjhlYjRlZDQ0OTAyMjdlMDFkZjk2NGZiYyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAt
MTE3OCwxMSArMTE3OCwxMSBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBjYXNlIFB1
dENsb3N1cmVWYXI6CiAgICAgICAgICAgICBjb21waWxlUHV0Q2xvc3VyZVZhcigpOwogICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgR2V0UHJvbWlzZUludGVybmFsRmllbGQ6Ci0gICAg
ICAgICAgICBjb21waWxlR2V0UHJvbWlzZUludGVybmFsRmllbGQoKTsKKyAgICAgICAgY2FzZSBH
ZXRJbnRlcm5hbEZpZWxkOgorICAgICAgICAgICAgY29tcGlsZUdldEludGVybmFsRmllbGQoKTsK
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFB1dFByb21pc2VJbnRlcm5hbEZpZWxk
OgotICAgICAgICAgICAgY29tcGlsZVB1dFByb21pc2VJbnRlcm5hbEZpZWxkKCk7CisgICAgICAg
IGNhc2UgUHV0SW50ZXJuYWxGaWVsZDoKKyAgICAgICAgICAgIGNvbXBpbGVQdXRJbnRlcm5hbEZp
ZWxkKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBHZXRGcm9tQXJndW1lbnRz
OgogICAgICAgICAgICAgY29tcGlsZUdldEZyb21Bcmd1bWVudHMoKTsKQEAgLTU5MTMsOCArNTkx
Myw4IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICBwcm9taXNlID0gYWxsb2Nh
dGVPYmplY3Q8SlNJbnRlcm5hbFByb21pc2U+KG1fbm9kZS0+c3RydWN0dXJlKCksIG1fb3V0Lmlu
dFB0clplcm8sIHNsb3dDYXNlKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcHJvbWlzZSA9
IGFsbG9jYXRlT2JqZWN0PEpTUHJvbWlzZT4obV9ub2RlLT5zdHJ1Y3R1cmUoKSwgbV9vdXQuaW50
UHRyWmVybywgc2xvd0Nhc2UpOwotICAgICAgICBtX291dC5zdG9yZTY0KG1fb3V0LmNvbnN0SW50
NjQoSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU1Byb21p
c2U6OlN0YXR1czo6UGVuZGluZykpKSksIHByb21pc2UsIG1faGVhcHMuSlNQcm9taXNlX2ludGVy
bmFsRmllbGRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihKU1Byb21pc2U6OkZpZWxkOjpGbGFncyld
KTsKLSAgICAgICAgbV9vdXQuc3RvcmU2NChtX291dC5jb25zdEludDY0KEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKSksIHByb21pc2UsIG1faGVhcHMuSlNQcm9taXNlX2ludGVybmFsRmll
bGRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihKU1Byb21pc2U6OkZpZWxkOjpSZWFjdGlvbnNPclJl
c3VsdCldKTsKKyAgICAgICAgbV9vdXQuc3RvcmU2NChtX291dC5jb25zdEludDY0KEpTVmFsdWU6
OmVuY29kZShqc051bWJlcihzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNQcm9taXNlOjpTdGF0dXM6
OlBlbmRpbmcpKSkpLCBwcm9taXNlLCBtX2hlYXBzLkpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGxf
aW50ZXJuYWxGaWVsZHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTUHJvbWlzZTo6RmllbGQ6OkZs
YWdzKV0pOworICAgICAgICBtX291dC5zdG9yZTY0KG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpKSwgcHJvbWlzZSwgbV9oZWFwcy5KU0ludGVybmFsRmllbGRP
YmplY3RJbXBsX2ludGVybmFsRmllbGRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihKU1Byb21pc2U6
OkZpZWxkOjpSZWFjdGlvbnNPclJlc3VsdCldKTsKICAgICAgICAgbXV0YXRvckZlbmNlKCk7CiAg
ICAgICAgIFZhbHVlRnJvbUJsb2NrIGZhc3RSZXN1bHQgPSBtX291dC5hbmNob3IocHJvbWlzZSk7
CiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKQEAgLTYzMjMsOCArNjMyMyw4IEBA
IGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICBwcm9taXNlID0gYWxsb2NhdGVPYmpl
Y3Q8SlNJbnRlcm5hbFByb21pc2U+KG1fb3V0LnBoaShwb2ludGVyVHlwZSgpLCBwcm9taXNlU3Ry
dWN0dXJlLCBkZXJpdmVkU3RydWN0dXJlKSwgbV9vdXQuaW50UHRyWmVybywgc2xvd0Nhc2UpOwog
ICAgICAgICBlbHNlCiAgICAgICAgICAgICBwcm9taXNlID0gYWxsb2NhdGVPYmplY3Q8SlNQcm9t
aXNlPihtX291dC5waGkocG9pbnRlclR5cGUoKSwgcHJvbWlzZVN0cnVjdHVyZSwgZGVyaXZlZFN0
cnVjdHVyZSksIG1fb3V0LmludFB0clplcm8sIHNsb3dDYXNlKTsKLSAgICAgICAgbV9vdXQuc3Rv
cmU2NChtX291dC5jb25zdEludDY0KEpTVmFsdWU6OmVuY29kZShqc051bWJlcihzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNQcm9taXNlOjpTdGF0dXM6OlBlbmRpbmcpKSkpLCBwcm9taXNlLCBtX2hl
YXBzLkpTUHJvbWlzZV9pbnRlcm5hbEZpZWxkc1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNQcm9t
aXNlOjpGaWVsZDo6RmxhZ3MpXSk7Ci0gICAgICAgIG1fb3V0LnN0b3JlNjQobV9vdXQuY29uc3RJ
bnQ2NChKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSkpLCBwcm9taXNlLCBtX2hlYXBzLkpT
UHJvbWlzZV9pbnRlcm5hbEZpZWxkc1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNQcm9taXNlOjpG
aWVsZDo6UmVhY3Rpb25zT3JSZXN1bHQpXSk7CisgICAgICAgIG1fb3V0LnN0b3JlNjQobV9vdXQu
Y29uc3RJbnQ2NChKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTUHJvbWlzZTo6U3RhdHVzOjpQZW5kaW5nKSkpKSwgcHJvbWlzZSwgbV9oZWFwcy5KU0ludGVy
bmFsRmllbGRPYmplY3RJbXBsX2ludGVybmFsRmllbGRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihK
U1Byb21pc2U6OkZpZWxkOjpGbGFncyldKTsKKyAgICAgICAgbV9vdXQuc3RvcmU2NChtX291dC5j
b25zdEludDY0KEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKSksIHByb21pc2UsIG1faGVh
cHMuSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbF9pbnRlcm5hbEZpZWxkc1tzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNQcm9taXNlOjpGaWVsZDo6UmVhY3Rpb25zT3JSZXN1bHQpXSk7CiAgICAgICAg
IG11dGF0b3JGZW5jZSgpOwogICAgICAgICBWYWx1ZUZyb21CbG9jayBmYXN0UmVzdWx0ID0gbV9v
dXQuYW5jaG9yKHByb21pc2UpOwogICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CkBA
IC03NTA0LDIwICs3NTA0LDIwIEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICBt
X2hlYXBzLkpTTGV4aWNhbEVudmlyb25tZW50X3ZhcmlhYmxlc1ttX25vZGUtPnNjb3BlT2Zmc2V0
KCkub2Zmc2V0KCldKTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBjb21waWxlR2V0UHJvbWlzZUlu
dGVybmFsRmllbGQoKQorICAgIHZvaWQgY29tcGlsZUdldEludGVybmFsRmllbGQoKQogICAgIHsK
ICAgICAgICAgc2V0SlNWYWx1ZSgKICAgICAgICAgICAgIG1fb3V0LmxvYWQ2NCgKICAgICAgICAg
ICAgICAgICBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLAotICAgICAgICAgICAgICAgIG1faGVh
cHMuSlNQcm9taXNlX2ludGVybmFsRmllbGRzW21fbm9kZS0+aW50ZXJuYWxGaWVsZEluZGV4KCld
KSk7CisgICAgICAgICAgICAgICAgbV9oZWFwcy5KU0ludGVybmFsRmllbGRPYmplY3RJbXBsX2lu
dGVybmFsRmllbGRzW21fbm9kZS0+aW50ZXJuYWxGaWVsZEluZGV4KCldKSk7CiAgICAgfQogCi0g
ICAgdm9pZCBjb21waWxlUHV0UHJvbWlzZUludGVybmFsRmllbGQoKQorICAgIHZvaWQgY29tcGls
ZVB1dEludGVybmFsRmllbGQoKQogICAgIHsKICAgICAgICAgbV9vdXQuc3RvcmU2NCgKICAgICAg
ICAgICAgIGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDIoKSksCiAgICAgICAgICAgICBsb3dDZWxs
KG1fbm9kZS0+Y2hpbGQxKCkpLAotICAgICAgICAgICAgbV9oZWFwcy5KU1Byb21pc2VfaW50ZXJu
YWxGaWVsZHNbbV9ub2RlLT5pbnRlcm5hbEZpZWxkSW5kZXgoKV0pOworICAgICAgICAgICAgbV9o
ZWFwcy5KU0ludGVybmFsRmllbGRPYmplY3RJbXBsX2ludGVybmFsRmllbGRzW21fbm9kZS0+aW50
ZXJuYWxGaWVsZEluZGV4KCldKTsKICAgICB9CiAKICAgICB2b2lkIGNvbXBpbGVHZXRGcm9tQXJn
dW1lbnRzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRleCBiOTlkZGRmOGQ5YWRjY2I0
MmQ4NzEzOWFiZTQxOTYzMzYyODcxZWM5Li4zNmRlNTNhMGJjM2E3MmY1NTU4ZDE5ZWRhNjQ3NmFm
MDQ5NDZlYzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC00MjQsOCArNDI0LDgg
QEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Ao
b3BfcHV0X2dldHRlcl9ieV92YWwpCiAgICAgICAgIERFRklORV9PUChvcF9wdXRfc2V0dGVyX2J5
X3ZhbCkKIAotICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X3Byb21pc2VfaW50ZXJuYWxfZmllbGQp
Ci0gICAgICAgIERFRklORV9PUChvcF9wdXRfcHJvbWlzZV9pbnRlcm5hbF9maWVsZCkKKyAgICAg
ICAgREVGSU5FX09QKG9wX2dldF9pbnRlcm5hbF9maWVsZCkKKyAgICAgICAgREVGSU5FX09QKG9w
X3B1dF9pbnRlcm5hbF9maWVsZCkKIAogICAgICAgICBERUZJTkVfT1Aob3BfcmV0KQogICAgICAg
ICBERUZJTkVfT1Aob3BfcnNoaWZ0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXggMjAxODYz
ODBhMGFmYWE2ODY5OWNiMmNjODg2MzlmYjg4MjZkNzZmNS4uNDI3ZTlhZWRmNTk4NmE0NmRkMWZi
ZDQ1YWYwNTJlZGIyNzkzNTUxZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC02MzYsOCAr
NjM2LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfZGlyZWN0
X3BuYW1lKGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9lbnVtZXJh
dG9yX3N0cnVjdHVyZV9wbmFtZShjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVt
aXRfb3BfZW51bWVyYXRvcl9nZW5lcmljX3BuYW1lKGNvbnN0IEluc3RydWN0aW9uKik7Ci0gICAg
ICAgIHZvaWQgZW1pdF9vcF9nZXRfcHJvbWlzZV9pbnRlcm5hbF9maWVsZChjb25zdCBJbnN0cnVj
dGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X3Byb21pc2VfaW50ZXJuYWxfZmllbGQo
Y29uc3QgSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2dldF9pbnRlcm5hbF9m
aWVsZChjb25zdCBJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X2ludGVy
bmFsX2ZpZWxkKGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9sb2df
c2hhZG93X2NoaWNrZW5fcHJvbG9ndWUoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9p
ZCBlbWl0X29wX2xvZ19zaGFkb3dfY2hpY2tlbl90YWlsKGNvbnN0IEluc3RydWN0aW9uKik7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3Mu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKaW5k
ZXggNmE4MDY0MWY1ODJhYzhlYzU5MjYxYzFjYWY5NzY1ZWIxMjNlYzZlMS4uNDA3NThlN2YzMGFj
YzRkNzI4MmViODUzNWNiNGQzMWJjOGMwZTc0MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKQEAgLTEyMzYsOSArMTIzNiw5IEBAIHZvaWQg
SklUOjplbWl0V3JpdGVCYXJyaWVyKEpTQ2VsbCogb3duZXIsIHVuc2lnbmVkIHZhbHVlLCBXcml0
ZUJhcnJpZXJNb2RlIG1vZGUpCiAgICAgICAgIHZhbHVlTm90Q2VsbC5saW5rKHRoaXMpOwogfQog
Ci12b2lkIEpJVDo6ZW1pdF9vcF9nZXRfcHJvbWlzZV9pbnRlcm5hbF9maWVsZChjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2ludGVy
bmFsX2ZpZWxkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7Ci0gICAg
YXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BHZXRQcm9taXNlSW50ZXJu
YWxGaWVsZD4oKTsKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxP
cEdldEludGVybmFsRmllbGQ+KCk7CiAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRh
ZGF0YShtX2NvZGVCbG9jayk7CiAgICAgaW50IGRzdCA9IGJ5dGVjb2RlLm1fZHN0Lm9mZnNldCgp
OwogICAgIGludCBiYXNlID0gYnl0ZWNvZGUubV9iYXNlLm9mZnNldCgpOwpAQCAtMTI0NiwxNSAr
MTI0NiwxNSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfcHJvbWlzZV9pbnRlcm5hbF9maWVsZChj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aQogICAgIEFTU0VSVChpbmRleCA8IEpT
UHJvbWlzZTo6bnVtYmVyT2ZJbnRlcm5hbEZpZWxkcyk7CiAKICAgICBlbWl0R2V0VmlydHVhbFJl
Z2lzdGVyKGJhc2UsIHJlZ1QxKTsKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDEsIEpTUHJvbWlz
ZTo6b2Zmc2V0T2ZJbnRlcm5hbEZpZWxkKGluZGV4KSksIHJlZ1QwKTsKKyAgICBsb2FkUHRyKEFk
ZHJlc3MocmVnVDEsIEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGw8Pjo6b2Zmc2V0T2ZJbnRlcm5h
bEZpZWxkKGluZGV4KSksIHJlZ1QwKTsKIAogICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUobWV0
YWRhdGEpOwogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0KTsKIH0KIAotdm9pZCBKSVQ6
OmVtaXRfb3BfcHV0X3Byb21pc2VfaW50ZXJuYWxfZmllbGQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX3B1dF9pbnRlcm5hbF9maWVsZChj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewotICAgIGF1dG8gYnl0ZWNv
ZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0UHJvbWlzZUludGVybmFsRmllbGQ+KCk7
CisgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRJbnRlcm5h
bEZpZWxkPigpOwogICAgIGludCBiYXNlID0gYnl0ZWNvZGUubV9iYXNlLm9mZnNldCgpOwogICAg
IGludCB2YWx1ZSA9IGJ5dGVjb2RlLm1fdmFsdWUub2Zmc2V0KCk7CiAgICAgdW5zaWduZWQgaW5k
ZXggPSBieXRlY29kZS5tX2luZGV4OwpAQCAtMTI2Miw3ICsxMjYyLDcgQEAgdm9pZCBKSVQ6OmVt
aXRfb3BfcHV0X3Byb21pc2VfaW50ZXJuYWxfZmllbGQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGkKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgcmVnVDApOwog
ICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIodmFsdWUsIHJlZ1QxKTsKLSAgICBzdG9yZVB0cihy
ZWdUMSwgQWRkcmVzcyhyZWdUMCwgSlNQcm9taXNlOjpvZmZzZXRPZkludGVybmFsRmllbGQoaW5k
ZXgpKSk7CisgICAgc3RvcmVQdHIocmVnVDEsIEFkZHJlc3MocmVnVDAsIEpTSW50ZXJuYWxGaWVs
ZE9iamVjdEltcGw8Pjo6b2Zmc2V0T2ZJbnRlcm5hbEZpZWxkKGluZGV4KSkpOwogICAgIGVtaXRX
cml0ZUJhcnJpZXIoYmFzZSwgdmFsdWUsIFNob3VsZEZpbHRlclZhbHVlKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAK
aW5kZXggYmZmOGI5ZTE5YzhjMzllMDZiOWRmZjhhMjU2OThlMTkzNzBkMjA0Ny4uNTIxMzQzMTM4
MWFlNzIzNzc2MWJhMTczODM3MDg0MGRiNmExMDcyMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCkBAIC0xMjAzLDkgKzEy
MDMsOSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfdG9fYXJndW1lbnRzKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgc3RvcmUzMihyZWdUMiwgQWRkcmVzcyhyZWdU
MCwgRGlyZWN0QXJndW1lbnRzOjpzdG9yYWdlT2Zmc2V0KCkgKyBpbmRleCAqIHNpemVvZihXcml0
ZUJhcnJpZXI8VW5rbm93bj4pICsgUGF5bG9hZE9mZnNldCkpOwogfQogCi12b2lkIEpJVDo6ZW1p
dF9vcF9nZXRfcHJvbWlzZV9pbnRlcm5hbF9maWVsZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2ludGVybmFsX2ZpZWxkKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7Ci0gICAgYXV0byBieXRlY29kZSA9
IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BHZXRQcm9taXNlSW50ZXJuYWxGaWVsZD4oKTsKKyAg
ICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEdldEludGVybmFsRmll
bGQ+KCk7CiAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9j
ayk7CiAgICAgaW50IGRzdCA9IGJ5dGVjb2RlLm1fZHN0Lm9mZnNldCgpOwogICAgIGludCBiYXNl
ID0gYnl0ZWNvZGUubV9iYXNlLm9mZnNldCgpOwpAQCAtMTIxMywxNSArMTIxMywxNSBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9nZXRfcHJvbWlzZV9pbnRlcm5hbF9maWVsZChjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aQogICAgIEFTU0VSVChpbmRleCA8IEpTUHJvbWlzZTo6bnVtYmVy
T2ZJbnRlcm5hbEZpZWxkcyk7CiAKICAgICBlbWl0TG9hZFBheWxvYWQoYmFzZSwgcmVnVDIpOwot
ICAgIGxvYWQzMihBZGRyZXNzKHJlZ1QyLCBKU1Byb21pc2U6Om9mZnNldE9mSW50ZXJuYWxGaWVs
ZChpbmRleCkgKyBUYWdPZmZzZXQpLCByZWdUMSk7Ci0gICAgbG9hZDMyKEFkZHJlc3MocmVnVDIs
IEpTUHJvbWlzZTo6b2Zmc2V0T2ZJbnRlcm5hbEZpZWxkKGluZGV4KSArIFBheWxvYWRPZmZzZXQp
LCByZWdUMCk7CisgICAgbG9hZDMyKEFkZHJlc3MocmVnVDIsIEpTSW50ZXJuYWxGaWVsZE9iamVj
dEltcGw8Pjo6b2Zmc2V0T2ZJbnRlcm5hbEZpZWxkKGluZGV4KSArIFRhZ09mZnNldCksIHJlZ1Qx
KTsKKyAgICBsb2FkMzIoQWRkcmVzcyhyZWdUMiwgSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbDw+
OjpvZmZzZXRPZkludGVybmFsRmllbGQoaW5kZXgpICsgUGF5bG9hZE9mZnNldCksIHJlZ1QwKTsK
ICAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2Nr
KSk7CiAgICAgZW1pdFN0b3JlKGRzdCwgcmVnVDEsIHJlZ1QwKTsKIH0KIAotdm9pZCBKSVQ6OmVt
aXRfb3BfcHV0X3Byb21pc2VfaW50ZXJuYWxfZmllbGQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX3B1dF9pbnRlcm5hbF9maWVsZChjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewotICAgIGF1dG8gYnl0ZWNvZGUg
PSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0UHJvbWlzZUludGVybmFsRmllbGQ+KCk7Cisg
ICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRJbnRlcm5hbEZp
ZWxkPigpOwogICAgIGludCBiYXNlID0gYnl0ZWNvZGUubV9iYXNlLm9mZnNldCgpOwogICAgIGlu
dCB2YWx1ZSA9IGJ5dGVjb2RlLm1fdmFsdWUub2Zmc2V0KCk7CiAgICAgdW5zaWduZWQgaW5kZXgg
PSBieXRlY29kZS5tX2luZGV4OwpAQCAtMTIyOSw4ICsxMjI5LDggQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfcHV0X3Byb21pc2VfaW50ZXJuYWxfZmllbGQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGkKIAogICAgIGVtaXRMb2FkUGF5bG9hZChiYXNlLCByZWdUMCk7CiAgICAgZW1pdExv
YWQodmFsdWUsIHJlZ1QxLCByZWdUMik7Ci0gICAgc3RvcmUzMihyZWdUMSwgQWRkcmVzcyhyZWdU
MCwgSlNQcm9taXNlOjpvZmZzZXRPZkludGVybmFsRmllbGQoaW5kZXgpICsgVGFnT2Zmc2V0KSk7
Ci0gICAgc3RvcmUzMihyZWdUMiwgQWRkcmVzcyhyZWdUMCwgSlNQcm9taXNlOjpvZmZzZXRPZklu
dGVybmFsRmllbGQoaW5kZXgpICsgUGF5bG9hZE9mZnNldCkpOworICAgIHN0b3JlMzIocmVnVDEs
IEFkZHJlc3MocmVnVDAsIEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGw8Pjo6b2Zmc2V0T2ZJbnRl
cm5hbEZpZWxkKGluZGV4KSArIFRhZ09mZnNldCkpOworICAgIHN0b3JlMzIocmVnVDIsIEFkZHJl
c3MocmVnVDAsIEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGw8Pjo6b2Zmc2V0T2ZJbnRlcm5hbEZp
ZWxkKGluZGV4KSArIFBheWxvYWRPZmZzZXQpKTsKICAgICBlbWl0V3JpdGVCYXJyaWVyKGJhc2Us
IHZhbHVlLCBTaG91bGRGaWx0ZXJWYWx1ZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKaW5kZXggYjE4NWNlOTM4
YjBlZjkxZWYwZWM1MzMwNjY2MjFhNTY5YjhlOGUxMy4uYTI1Zjk4NGFiZGFjN2M0NzE2MmM1MDZk
OTQxN2Q3NTA5Mzg3MmQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKQEAgLTQ1LDYgKzQ1LDcgQEAKICNpbmNsdWRl
ICJKU0Nhc3QuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxP
YmplY3QuaCIKKyNpbmNsdWRlICJKU0ludGVybmFsRmllbGRPYmplY3RJbXBsLmgiCiAjaW5jbHVk
ZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJKU01vZHVsZVJlY29yZC5oIgog
I2luY2x1ZGUgIkpTT2JqZWN0LmgiCkBAIC03Niw2ICs3Nyw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
Y2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yIHsKICAgICAvLyBUaGVzZSB0eXBlcyBhcmUgdXNl
ZnVsIHNpbmNlIHdlIGNhbid0IHVzZSAnPC4uLj4nIHN5bnRheCBpbiBMTEludCBvZmZzZXRzIGV4
dHJhY3Rpb24uIGUuZy4gVmVjdG9yPGludD46Om1fZGF0YQogICAgIHVzaW5nIFZlY3RvciA9IFdU
Rjo6VmVjdG9yPGludD47CisgICAgdXNpbmcgSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbCA9IEpT
Qzo6SlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbDw+OwogICAgIHVzaW5nIFJlZkNvdW50ZWRBcnJh
eSA9IFdURjo6UmVmQ291bnRlZEFycmF5PGludD47CiAKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQppbmRleCBhY2Q3
ZTRjMmNjNjE4YzQ0NzJjNjI0MjhjNmExMTdlNDJmODg3NjMzLi43NDNlMmFiMWJlOTFjZGViMmZj
NWE5YTZiOGI1OWI3NzdiZmQzMTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC0xNjUsNiArMTY1LDcgQEAgZW5kCiAK
IGNvbnN0IEpTTGV4aWNhbEVudmlyb25tZW50X3ZhcmlhYmxlcyA9IChzaXplb2YgSlNMZXhpY2Fs
RW52aXJvbm1lbnQgKyBTbG90U2l6ZSAtIDEpICYgfihTbG90U2l6ZSAtIDEpCiBjb25zdCBEaXJl
Y3RBcmd1bWVudHNfc3RvcmFnZSA9IChzaXplb2YgRGlyZWN0QXJndW1lbnRzICsgU2xvdFNpemUg
LSAxKSAmIH4oU2xvdFNpemUgLSAxKQorY29uc3QgSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbF9p
bnRlcm5hbEZpZWxkcyA9IEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGw6Om1faW50ZXJuYWxGaWVs
ZHMKIAogY29uc3QgU3RhY2tBbGlnbm1lbnQgPSBjb25zdGV4cHIgKHN0YWNrQWxpZ25tZW50Qnl0
ZXMoKSkKIGNvbnN0IFN0YWNrQWxpZ25tZW50U2xvdHMgPSBjb25zdGV4cHIgKHN0YWNrQWxpZ25t
ZW50UmVnaXN0ZXJzKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCmluZGV4IDE1YjEyZDRlMzdhOTNhNDFiNjc3
M2I1ODI4OGRmZDA0NWEzNWU2ZGYuLjUxZDk0ZTZiNmMxZTA1YTkxNjQ3MDUyMDE1OTkwNGI4OTM4
NjQ3MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyMzJfNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyMzJfNjQuYXNtCkBAIC0yNTIxLDIzICsyNTIxLDIzIEBAIGxsaW50T3BX
aXRoUmV0dXJuKG9wX2dldF9yZXN0X2xlbmd0aCwgT3BHZXRSZXN0TGVuZ3RoLCBtYWNybyAoc2l6
ZSwgZ2V0LCBkaXNwYXRjCiBlbmQpCiAKIAotbGxpbnRPcFdpdGhQcm9maWxlKG9wX2dldF9wcm9t
aXNlX2ludGVybmFsX2ZpZWxkLCBPcEdldFByb21pc2VJbnRlcm5hbEZpZWxkLCBtYWNybyAoc2l6
ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0dXJuKQorbGxpbnRPcFdpdGhQcm9maWxlKG9wX2dldF9pbnRl
cm5hbF9maWVsZCwgT3BHZXRJbnRlcm5hbEZpZWxkLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRj
aCwgcmV0dXJuKQogICAgIGdldChtX2Jhc2UsIHQwKQogICAgIGxvYWRpIFBheWxvYWRPZmZzZXRb
Y2ZyLCB0MCwgOF0sIHQwCi0gICAgZ2V0dShzaXplLCBPcEdldFByb21pc2VJbnRlcm5hbEZpZWxk
LCBtX2luZGV4LCB0MSkKLSAgICBsb2FkaSBKU1Byb21pc2U6Om1faW50ZXJuYWxGaWVsZHMgKyBU
YWdPZmZzZXRbdDAsIHQxLCBTbG90U2l6ZV0sIHQyCi0gICAgbG9hZGkgSlNQcm9taXNlOjptX2lu
dGVybmFsRmllbGRzICsgUGF5bG9hZE9mZnNldFt0MCwgdDEsIFNsb3RTaXplXSwgdDMKKyAgICBn
ZXR1KHNpemUsIE9wR2V0SW50ZXJuYWxGaWVsZCwgbV9pbmRleCwgdDEpCisgICAgbG9hZGkgSlNJ
bnRlcm5hbEZpZWxkT2JqZWN0X2ludGVybmFsRmllbGRzICsgVGFnT2Zmc2V0W3QwLCB0MSwgU2xv
dFNpemVdLCB0MgorICAgIGxvYWRpIEpTSW50ZXJuYWxGaWVsZE9iamVjdF9pbnRlcm5hbEZpZWxk
cyArIFBheWxvYWRPZmZzZXRbdDAsIHQxLCBTbG90U2l6ZV0sIHQzCiAgICAgcmV0dXJuKHQyLCB0
MykKIGVuZCkKIAotbGxpbnRPcChvcF9wdXRfcHJvbWlzZV9pbnRlcm5hbF9maWVsZCwgT3BQdXRQ
cm9taXNlSW50ZXJuYWxGaWVsZCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gpCitsbGludE9w
KG9wX3B1dF9pbnRlcm5hbF9maWVsZCwgT3BQdXRJbnRlcm5hbEZpZWxkLCBtYWNybyAoc2l6ZSwg
Z2V0LCBkaXNwYXRjaCkKICAgICBnZXQobV9iYXNlLCB0MCkKICAgICBsb2FkaSBQYXlsb2FkT2Zm
c2V0W2NmciwgdDAsIDhdLCB0MAogICAgIGdldChtX3ZhbHVlLCB0MSkKICAgICBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlKHNpemUsIHQxLCB0MiwgdDMpCi0gICAgZ2V0dShzaXplLCBPcFB1dFByb21p
c2VJbnRlcm5hbEZpZWxkLCBtX2luZGV4LCB0MSkKLSAgICBzdG9yZWkgdDIsIEpTUHJvbWlzZTo6
bV9pbnRlcm5hbEZpZWxkcyArIFRhZ09mZnNldFt0MCwgdDEsIFNsb3RTaXplXQotICAgIHN0b3Jl
aSB0MywgSlNQcm9taXNlOjptX2ludGVybmFsRmllbGRzICsgUGF5bG9hZE9mZnNldFt0MCwgdDEs
IFNsb3RTaXplXQorICAgIGdldHUoc2l6ZSwgT3BQdXRJbnRlcm5hbEZpZWxkLCBtX2luZGV4LCB0
MSkKKyAgICBzdG9yZWkgdDIsIEpTSW50ZXJuYWxGaWVsZE9iamVjdF9pbnRlcm5hbEZpZWxkcyAr
IFRhZ09mZnNldFt0MCwgdDEsIFNsb3RTaXplXQorICAgIHN0b3JlaSB0MywgSlNJbnRlcm5hbEZp
ZWxkT2JqZWN0X2ludGVybmFsRmllbGRzICsgUGF5bG9hZE9mZnNldFt0MCwgdDEsIFNsb3RTaXpl
XQogICAgIHdyaXRlQmFycmllck9uT3BlcmFuZChzaXplLCBnZXQsIG1fYmFzZSkKICAgICBkaXNw
YXRjaCgpCiBlbmQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlcjY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyNjQuYXNtCmluZGV4IDcyZDRkY2VmNDEyZWUxNDQzOTJmOTI4NDAzNjYw
NzAxYTkyOWU5OWEuLjhkNzFjZWRhZmJhZDE1NWQ2N2UwOGNkZWY3NzA4Y2E0NGY0MzA1ZjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
NjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyNjQuYXNtCkBAIC0yNTg2LDE5ICsyNTg2LDE5IEBAIGxsaW50T3BXaXRoUmV0dXJuKG9wX2dl
dF9yZXN0X2xlbmd0aCwgT3BHZXRSZXN0TGVuZ3RoLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRj
CiBlbmQpCiAKIAotbGxpbnRPcFdpdGhQcm9maWxlKG9wX2dldF9wcm9taXNlX2ludGVybmFsX2Zp
ZWxkLCBPcEdldFByb21pc2VJbnRlcm5hbEZpZWxkLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRj
aCwgcmV0dXJuKQorbGxpbnRPcFdpdGhQcm9maWxlKG9wX2dldF9pbnRlcm5hbF9maWVsZCwgT3BH
ZXRJbnRlcm5hbEZpZWxkLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0dXJuKQogICAg
IGxvYWRWYXJpYWJsZShnZXQsIG1fYmFzZSwgdDEpCi0gICAgZ2V0dShzaXplLCBPcEdldFByb21p
c2VJbnRlcm5hbEZpZWxkLCBtX2luZGV4LCB0MikKLSAgICBsb2FkcSBKU1Byb21pc2U6Om1faW50
ZXJuYWxGaWVsZHNbdDEsIHQyLCBTbG90U2l6ZV0sIHQwCisgICAgZ2V0dShzaXplLCBPcEdldElu
dGVybmFsRmllbGQsIG1faW5kZXgsIHQyKQorICAgIGxvYWRxIEpTSW50ZXJuYWxGaWVsZE9iamVj
dEltcGxfaW50ZXJuYWxGaWVsZHNbdDEsIHQyLCBTbG90U2l6ZV0sIHQwCiAgICAgcmV0dXJuKHQw
KQogZW5kKQogCi1sbGludE9wKG9wX3B1dF9wcm9taXNlX2ludGVybmFsX2ZpZWxkLCBPcFB1dFBy
b21pc2VJbnRlcm5hbEZpZWxkLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCkKK2xsaW50T3Ao
b3BfcHV0X2ludGVybmFsX2ZpZWxkLCBPcFB1dEludGVybmFsRmllbGQsIG1hY3JvIChzaXplLCBn
ZXQsIGRpc3BhdGNoKQogICAgIGxvYWRWYXJpYWJsZShnZXQsIG1fYmFzZSwgdDApCiAgICAgZ2V0
KG1fdmFsdWUsIHQxKQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc2l6ZSwgdDEsIHQyKQot
ICAgIGdldHUoc2l6ZSwgT3BQdXRQcm9taXNlSW50ZXJuYWxGaWVsZCwgbV9pbmRleCwgdDEpCi0g
ICAgc3RvcmVxIHQyLCBKU1Byb21pc2U6Om1faW50ZXJuYWxGaWVsZHNbdDAsIHQxLCBTbG90U2l6
ZV0KKyAgICBnZXR1KHNpemUsIE9wUHV0SW50ZXJuYWxGaWVsZCwgbV9pbmRleCwgdDEpCisgICAg
c3RvcmVxIHQyLCBKU0ludGVybmFsRmllbGRPYmplY3RJbXBsX2ludGVybmFsRmllbGRzW3QwLCB0
MSwgU2xvdFNpemVdCiAgICAgd3JpdGVCYXJyaWVyT25DZWxsQW5kVmFsdWVXaXRoUmVsb2FkKHQw
LCB0MiwgbWFjcm8oKSBlbmQpCiAgICAgZGlzcGF0Y2goKQogZW5kKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRjZWIxNDhjZDQ3
YmRlNGQxMjZiMjI3ZmFiNDNkZjU4MWMyNzc3NGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRvci5jcHAKQEAgLTAsMCArMSw3MiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU0dlbmVyYXRvci5o
IgorCisjaW5jbHVkZSAiQnVpbHRpbk5hbWVzLmgiCisjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNs
dWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpT
SW50ZXJuYWxGaWVsZE9iamVjdEltcGxJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitj
b25zdCBDbGFzc0luZm8gSlNHZW5lcmF0b3I6OnNfaW5mbyA9IHsgIkdlbmVyYXRvciIsICZCYXNl
OjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNHZW5lcmF0
b3IpIH07CisKK0pTR2VuZXJhdG9yKiBKU0dlbmVyYXRvcjo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIEpTRnVuY3Rpb24qIG5leHRGdW5jdGlvbiwgSlNWYWx1ZSBnZW5lcmF0
b3JUaGlzKQoreworICAgIEpTR2VuZXJhdG9yKiBnZW5lcmF0b3IgPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxKU0dlbmVyYXRvcj4odm0uaGVhcCkpIEpTR2VuZXJhdG9yKHZtLCBzdHJ1Y3R1
cmUpOworICAgIGdlbmVyYXRvci0+ZmluaXNoQ3JlYXRpb24odm0sIG5leHRGdW5jdGlvbiwgZ2Vu
ZXJhdG9yVGhpcyk7CisgICAgcmV0dXJuIGdlbmVyYXRvcjsKK30KKworU3RydWN0dXJlKiBKU0dl
bmVyYXRvcjo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRl
KHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oSlNHZW5lcmF0b3JUeXBlLCBT
dHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK0pTR2VuZXJhdG9yOjpKU0dlbmVyYXRvcihW
TSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQor
eworfQorCit2b2lkIEpTR2VuZXJhdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTRnVuY3Rp
b24qIG5leHRGdW5jdGlvbiwgSlNWYWx1ZSBnZW5lcmF0b3JUaGlzKQoreworICAgIEJhc2U6OmZp
bmlzaENyZWF0aW9uKHZtKTsKKyAgICBpbnRlcm5hbEZpZWxkKHN0YXRpY19jYXN0PHVuc2lnbmVk
PihGaWVsZDo6U3RhdGUpKS5zZXQodm0sIHRoaXMsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMy
X3Q+KEdlbmVyYXRvclN0YXRlOjpJbml0KSkpOworICAgIGludGVybmFsRmllbGQoc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEZpZWxkOjpOZXh0KSkuc2V0KHZtLCB0aGlzLCBuZXh0RnVuY3Rpb24pOwor
ICAgIGludGVybmFsRmllbGQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEZpZWxkOjpUaGlzKSkuc2V0
KHZtLCB0aGlzLCBnZW5lcmF0b3JUaGlzKTsKKyAgICBpbnRlcm5hbEZpZWxkKHN0YXRpY19jYXN0
PHVuc2lnbmVkPihGaWVsZDo6RnJhbWUpKS5zZXQodm0sIHRoaXMsIGpzTnVsbCgpKTsKK30KKwor
dm9pZCBKU0dlbmVyYXRvcjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9y
JiB2aXNpdG9yKQoreworICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNHZW5lcmF0b3Iq
PihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8o
KSk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5l
cmF0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42YzMzY2QzMmI1NzkwNzJkZWU0ZDgwZWQzMDUyZmU4ZTFiNjNj
MDcwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
ZW5lcmF0b3IuaApAQCAtMCwwICsxLDgwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlICJKU0ludGVybmFsRmllbGRPYmplY3RJbXBsLmgiCisKK25hbWVzcGFjZSBKU0Mg
eworCitjbGFzcyBKU0Z1bmN0aW9uOworCitjbGFzcyBKU0dlbmVyYXRvciA6IHB1YmxpYyBKU0lu
dGVybmFsRmllbGRPYmplY3RJbXBsPDQ+IHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gSlNJ
bnRlcm5hbEZpZWxkT2JqZWN0SW1wbDw0PjsKKworICAgIGVudW0gY2xhc3MgR2VuZXJhdG9yUmVz
dW1lTW9kZSA6IGludDMyX3QgeworICAgICAgICBOb3JtYWxNb2RlID0gMCwKKyAgICAgICAgUmV0
dXJuTW9kZSA9IDEsCisgICAgICAgIFRocm93TW9kZSA9IDIKKyAgICB9OworCisgICAgZW51bSBj
bGFzcyBHZW5lcmF0b3JTdGF0ZSA6IGludDMyX3QgeworICAgICAgICBDb21wbGV0ZWQgPSAtMSwK
KyAgICAgICAgRXhlY3V0aW5nID0gLTIsCisgICAgICAgIEluaXQgPSAwLAorICAgIH07CisKKyAg
ICAvLyBbdGhpc10sIEBnZW5lcmF0b3IsIEBnZW5lcmF0b3JTdGF0ZSwgQGdlbmVyYXRvclZhbHVl
LCBAZ2VuZXJhdG9yUmVzdW1lTW9kZSwgQGdlbmVyYXRvckZyYW1lLgorICAgIGVudW0gY2xhc3Mg
R2VuZXJhdG9yQXJndW1lbnQgOiBpbnQzMl90IHsKKyAgICAgICAgVGhpc1ZhbHVlID0gMCwKKyAg
ICAgICAgR2VuZXJhdG9yID0gMSwKKyAgICAgICAgU3RhdGUgPSAyLAorICAgICAgICBWYWx1ZSA9
IDMsCisgICAgICAgIFJlc3VtZU1vZGUgPSA0LAorICAgICAgICBGcmFtZSA9IDUsCisgICAgfTsK
KworICAgIGVudW0gY2xhc3MgRmllbGQgOiB1aW50MzJfdCB7CisgICAgICAgIFN0YXRlID0gMCwK
KyAgICAgICAgTmV4dCwKKyAgICAgICAgVGhpcywKKyAgICAgICAgRnJhbWUsCisgICAgfTsKKyAg
ICBzdGF0aWNfYXNzZXJ0KG51bWJlck9mSW50ZXJuYWxGaWVsZHMgPT0gNCk7CisKKyAgICBzdGF0
aWMgSlNHZW5lcmF0b3IqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIEpTRnVuY3Rpb24qLCBKU1Zh
bHVlIGdlbmVyYXRvclRoaXMpOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBERUNMQVJFX0VYUE9SVF9J
TkZPOworCisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRv
ciYpOworCitwcm90ZWN0ZWQ6CisgICAgSlNHZW5lcmF0b3IoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAg
ICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNGdW5jdGlvbiosIEpTVmFsdWUgZ2VuZXJhdG9y
VGhpcyk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTSW50ZXJuYWxGaWVsZE9iamVjdEltcGwuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTSW50ZXJuYWxGaWVsZE9iamVjdEltcGwuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5kNDhkMWRmYzg5MjFiOTIzMTNhMzJkNWJiMzA5ODc1NzRjMWZiN2NhCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNJbnRlcm5hbEZpZWxkT2Jq
ZWN0SW1wbC5oCkBAIC0wLDAgKzEsNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgIkpTT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCisvLyBUaGlzIGlzIHVz
ZWQgZm9yIHNoYXJpbmcgaW50ZXJmYWNlIGFuZCBpbXBsZW1lbnRhdGlvbi4gSXQgc2hvdWxkIG5v
dCBoYXZlIGl0cyBvd24gY2xhc3NJbmZvLgordGVtcGxhdGU8dW5zaWduZWQgcGFzc2VkTnVtYmVy
T2ZJbnRlcm5hbEZpZWxkcyA9IDE+CitjbGFzcyBKU0ludGVybmFsRmllbGRPYmplY3RJbXBsIDog
cHVibGljIEpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgorICAgIGZyaWVuZCBjbGFzcyBMTElu
dE9mZnNldHNFeHRyYWN0b3I7CisKKyAgICB1c2luZyBCYXNlID0gSlNOb25GaW5hbE9iamVjdDsK
KyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG51bWJlck9mSW50ZXJuYWxGaWVsZHMgPSBw
YXNzZWROdW1iZXJPZkludGVybmFsRmllbGRzOworCisgICAgc3RhdGljIHNpemVfdCBhbGxvY2F0
aW9uU2l6ZShDaGVja2VkPHNpemVfdD4gaW5saW5lQ2FwYWNpdHkpCisgICAgeworICAgICAgICBB
U1NFUlRfVU5VU0VEKGlubGluZUNhcGFjaXR5LCAhaW5saW5lQ2FwYWNpdHkpOworICAgICAgICBy
ZXR1cm4gc2l6ZW9mKEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGwpOworICAgIH0KKworICAgIGNv
bnN0IFdyaXRlQmFycmllcjxVbmtub3duPiYgaW50ZXJuYWxGaWVsZCh1bnNpZ25lZCBpbmRleCkg
Y29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChpbmRleCA8IG51bWJlck9mSW50ZXJuYWxGaWVs
ZHMpOworICAgICAgICByZXR1cm4gbV9pbnRlcm5hbEZpZWxkc1tpbmRleF07CisgICAgfQorCisg
ICAgV3JpdGVCYXJyaWVyPFVua25vd24+JiBpbnRlcm5hbEZpZWxkKHVuc2lnbmVkIGluZGV4KQor
ICAgIHsKKyAgICAgICAgQVNTRVJUKGluZGV4IDwgbnVtYmVyT2ZJbnRlcm5hbEZpZWxkcyk7Cisg
ICAgICAgIHJldHVybiBtX2ludGVybmFsRmllbGRzW2luZGV4XTsKKyAgICB9CisKKyAgICBzdGF0
aWMgcHRyZGlmZl90IG9mZnNldE9mSW50ZXJuYWxGaWVsZHMoKSB7IHJldHVybiBPQkpFQ1RfT0ZG
U0VUT0YoSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbCwgbV9pbnRlcm5hbEZpZWxkcyk7IH0KKyAg
ICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mSW50ZXJuYWxGaWVsZCh1bnNpZ25lZCBpbmRleCkg
eyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGwsIG1faW50
ZXJuYWxGaWVsZHMpICsgaW5kZXggKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KTsgfQor
Citwcm90ZWN0ZWQ6CisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90
VmlzaXRvciYpOworCisgICAgSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbChWTSYgdm0sIFN0cnVj
dHVyZSogc3RydWN0dXJlKQorICAgICAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKKyAgICB7Cisg
ICAgfQorCisgICAgV3JpdGVCYXJyaWVyPFVua25vd24+IG1faW50ZXJuYWxGaWVsZHNbbnVtYmVy
T2ZJbnRlcm5hbEZpZWxkc10geyB9OworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ludGVybmFsRmllbGRPYmplY3RJ
bXBsSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNJbnRlcm5hbEZp
ZWxkT2JqZWN0SW1wbElubGluZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNzczNWJmNjk3ZGY5YmYyZDBlN2Zj
NzE5ODk3YTFmYzYxNjliYmRjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbElubGluZXMuaApAQCAtMCwwICsx
LDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJKU0ludGVybmFs
RmllbGRPYmplY3RJbXBsLmgiCisKK25hbWVzcGFjZSBKU0MgeworCisvLyBUaGlzIGlzIHVzZWQg
Zm9yIHNoYXJpbmcgaW50ZXJmYWNlIGFuZCBpbXBsZW1lbnRhdGlvbi4gSXQgc2hvdWxkIG5vdCBo
YXZlIGl0cyBvd24gY2xhc3NJbmZvLgordGVtcGxhdGU8dW5zaWduZWQgcGFzc2VkTnVtYmVyT2ZJ
bnRlcm5hbEZpZWxkcz4KK3ZvaWQgSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbDxwYXNzZWROdW1i
ZXJPZkludGVybmFsRmllbGRzPjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNp
dG9yJiB2aXNpdG9yKQoreworICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNJbnRlcm5h
bEZpZWxkT2JqZWN0SW1wbCo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
dGhpc09iamVjdCwgaW5mbygpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3Qs
IHZpc2l0b3IpOworICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVzKHRoaXNPYmplY3QtPm1faW50ZXJu
YWxGaWVsZHMsIG51bWJlck9mSW50ZXJuYWxGaWVsZHMpOworfQorCit9IC8vIG5hbWVzcGFjZSBK
U0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2UuY3BwCmluZGV4IDNi
OTcwYTY5MDBjNDU3MGQ5ZjVjODVlYjFlNzFlMGQ4NWRiMDgyY2EuLjM5OWM5MzYwNmJmY2I3NWY1
ZjMyNmJhZjMyYWYyZWM3ODhmNDQ2YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTUHJvbWlzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNQcm9taXNlLmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkJ1aWx0aW5OYW1l
cy5oIgogI2luY2x1ZGUgIkVycm9yLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1
ZGUgIkpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGxJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNQcm9t
aXNlQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJNaWNyb3Rhc2suaCIKIApAQCAtNTYsOCArNTcs
OCBAQCBKU1Byb21pc2U6OkpTUHJvbWlzZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQog
dm9pZCBKU1Byb21pc2U6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIHsKICAgICBCYXNlOjpmaW5p
c2hDcmVhdGlvbih2bSk7Ci0gICAgbV9pbnRlcm5hbEZpZWxkc1tzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oRmllbGQ6OkZsYWdzKV0uc2V0KHZtLCB0aGlzLCBqc051bWJlcihzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oU3RhdHVzOjpQZW5kaW5nKSkpOwotICAgIG1faW50ZXJuYWxGaWVsZHNbc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEZpZWxkOjpSZWFjdGlvbnNPclJlc3VsdCldLnNldCh2bSwgdGhpcywganNV
bmRlZmluZWQoKSk7CisgICAgaW50ZXJuYWxGaWVsZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oRmll
bGQ6OkZsYWdzKSkuc2V0KHZtLCB0aGlzLCBqc051bWJlcihzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
U3RhdHVzOjpQZW5kaW5nKSkpOworICAgIGludGVybmFsRmllbGQoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEZpZWxkOjpSZWFjdGlvbnNPclJlc3VsdCkpLnNldCh2bSwgdGhpcywganNVbmRlZmluZWQo
KSk7CiB9CiAKIHZvaWQgSlNQcm9taXNlOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xv
dFZpc2l0b3ImIHZpc2l0b3IpCkBAIC02NSwxMiArNjYsMTEgQEAgdm9pZCBKU1Byb21pc2U6OnZp
c2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICBhdXRv
KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTUHJvbWlzZSo+KGNlbGwpOwogICAgIEFTU0VSVF9HQ19P
QkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAgICBCYXNlOjp2aXNpdENoaWxk
cmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwotICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVzKHRoaXNP
YmplY3QtPm1faW50ZXJuYWxGaWVsZHMsIG51bWJlck9mSW50ZXJuYWxGaWVsZHMpOwogfQogCiBh
dXRvIEpTUHJvbWlzZTo6c3RhdHVzKFZNJikgY29uc3QgLT4gU3RhdHVzCiB7Ci0gICAgSlNWYWx1
ZSB2YWx1ZSA9IG1faW50ZXJuYWxGaWVsZHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEZpZWxkOjpG
bGFncyldLmdldCgpOworICAgIEpTVmFsdWUgdmFsdWUgPSBpbnRlcm5hbEZpZWxkKHN0YXRpY19j
YXN0PHVuc2lnbmVkPihGaWVsZDo6RmxhZ3MpKS5nZXQoKTsKICAgICB1aW50MzJfdCBmbGFncyA9
IHZhbHVlLmFzVUludDMyQXNBbnlJbnQoKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U3RhdHVz
PihmbGFncyAmIHN0YXRlTWFzayk7CiB9CkBAIC04MCwxMiArODAsMTIgQEAgSlNWYWx1ZSBKU1By
b21pc2U6OnJlc3VsdChWTSYgdm0pIGNvbnN0CiAgICAgU3RhdHVzIHN0YXR1cyA9IHRoaXMtPnN0
YXR1cyh2bSk7CiAgICAgaWYgKHN0YXR1cyA9PSBTdGF0dXM6OlBlbmRpbmcpCiAgICAgICAgIHJl
dHVybiBqc1VuZGVmaW5lZCgpOwotICAgIHJldHVybiBtX2ludGVybmFsRmllbGRzW3N0YXRpY19j
YXN0PHVuc2lnbmVkPihGaWVsZDo6UmVhY3Rpb25zT3JSZXN1bHQpXS5nZXQoKTsKKyAgICByZXR1
cm4gaW50ZXJuYWxGaWVsZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oRmllbGQ6OlJlYWN0aW9uc09y
UmVzdWx0KSkuZ2V0KCk7CiB9CiAKIGJvb2wgSlNQcm9taXNlOjppc0hhbmRsZWQoVk0mKSBjb25z
dAogewotICAgIEpTVmFsdWUgdmFsdWUgPSBtX2ludGVybmFsRmllbGRzW3N0YXRpY19jYXN0PHVu
c2lnbmVkPihGaWVsZDo6RmxhZ3MpXS5nZXQoKTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gaW50ZXJu
YWxGaWVsZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oRmllbGQ6OkZsYWdzKSkuZ2V0KCk7CiAgICAg
dWludDMyX3QgZmxhZ3MgPSB2YWx1ZS5hc1VJbnQzMkFzQW55SW50KCk7CiAgICAgcmV0dXJuIGZs
YWdzICYgaXNIYW5kbGVkRmxhZzsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTUHJvbWlzZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQ
cm9taXNlLmgKaW5kZXggZDZkNjU2ZWJkZmQxY2ExMTRiMWU0NjYwNWJkNTUyOWI2ZjA4OGQzOC4u
MGNmMTk3NDkwYzEyZmZiMjMzZmVhMmRiYjJiZmRjNjE1MzhiMDY2OCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlLmgKQEAgLTI1LDIwICsyNSwxMyBAQAogCiAjcHJh
Z21hIG9uY2UKIAotI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNJbnRlcm5hbEZp
ZWxkT2JqZWN0SW1wbC5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAotY2xhc3MgSlNQcm9taXNlIDog
cHVibGljIEpTTm9uRmluYWxPYmplY3QgeworY2xhc3MgSlNQcm9taXNlIDogcHVibGljIEpTSW50
ZXJuYWxGaWVsZE9iamVjdEltcGw8Mj4gewogcHVibGljOgotICAgIGZyaWVuZCBjbGFzcyBMTElu
dE9mZnNldHNFeHRyYWN0b3I7Ci0gICAgdXNpbmcgQmFzZSA9IEpTTm9uRmluYWxPYmplY3Q7Ci0K
LSAgICBzdGF0aWMgc2l6ZV90IGFsbG9jYXRpb25TaXplKENoZWNrZWQ8c2l6ZV90PiBpbmxpbmVD
YXBhY2l0eSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQoaW5saW5lQ2FwYWNpdHksICFp
bmxpbmVDYXBhY2l0eSk7Ci0gICAgICAgIHJldHVybiBzaXplb2YoSlNQcm9taXNlKTsKLSAgICB9
CisgICAgdXNpbmcgQmFzZSA9IEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGw8Mj47CiAKICAgICBz
dGF0aWMgSlNQcm9taXNlKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqKTsKICAgICBzdGF0aWMgU3Ry
dWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwpA
QCAtNTgsNyArNTEsNyBAQCBjbGFzcyBKU1Byb21pc2UgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVj
dCB7CiAgICAgICAgIEZsYWdzID0gMCwKICAgICAgICAgUmVhY3Rpb25zT3JSZXN1bHQgPSAxLAog
ICAgIH07Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBudW1iZXJPZkludGVybmFsRmll
bGRzID0gMjsKKyAgICBzdGF0aWNfYXNzZXJ0KG51bWJlck9mSW50ZXJuYWxGaWVsZHMgPT0gMik7
CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBTdGF0dXMgc3RhdHVzKFZNJikgY29uc3Q7CiAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSByZXN1bHQoVk0mKSBjb25zdDsKQEAgLTY4LDE0ICs2
MSw5IEBAIGNsYXNzIEpTUHJvbWlzZSA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKIAogICAg
IHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAotICAg
IHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZJbnRlcm5hbEZpZWxkcygpIHsgcmV0dXJuIE9CSkVD
VF9PRkZTRVRPRihKU1Byb21pc2UsIG1faW50ZXJuYWxGaWVsZHMpOyB9Ci0gICAgc3RhdGljIHB0
cmRpZmZfdCBvZmZzZXRPZkludGVybmFsRmllbGQodW5zaWduZWQgaW5kZXgpIHsgcmV0dXJuIE9C
SkVDVF9PRkZTRVRPRihKU1Byb21pc2UsIG1faW50ZXJuYWxGaWVsZHMpICsgaW5kZXggKiBzaXpl
b2YoV3JpdGVCYXJyaWVyPFVua25vd24+KTsgfQotCiBwcm90ZWN0ZWQ6CiAgICAgSlNQcm9taXNl
KFZNJiwgU3RydWN0dXJlKik7CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOwotCi0gICAg
V3JpdGVCYXJyaWVyPFVua25vd24+IG1faW50ZXJuYWxGaWVsZHNbbnVtYmVyT2ZJbnRlcm5hbEZp
ZWxkc10geyB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNUeXBlLmNwcAppbmRleCA4NDliMzc5MTg4ZWZjZTU3MDkyM2Y1YTFhNWE0Zjcx
YmM5ZDk5NDc2Li5kYWM1ZTY5ZGEyMDQ1MWI5MGZkNDhiMDdhNzBjMTEyMjNmNTcwNzZhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5jcHAKQEAgLTk2LDYgKzk2LDcgQEAg
dm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEpTQzo6SlNUeXBlIHR5cGUpCiAg
ICAgQ0FTRShXaXRoU2NvcGVUeXBlKQogICAgIENBU0UoUmVnRXhwT2JqZWN0VHlwZSkKICAgICBD
QVNFKFByb3h5T2JqZWN0VHlwZSkKKyAgICBDQVNFKEpTR2VuZXJhdG9yVHlwZSkKICAgICBDQVNF
KEpTUHJvbWlzZVR5cGUpCiAgICAgQ0FTRShKU01hcFR5cGUpCiAgICAgQ0FTRShKU1NldFR5cGUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCmluZGV4IDhkMzVhYzc3OTgzNzM5
YjFhM2ZlNWQ1MGE2ZjkxYjkwMTI5ZmY3N2QuLjAxZTcwMjI3MzQ3NjRiMThkOWUzMWE5MWVlOGNk
NjBhOTk1OTI1ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
VHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCkBAIC0x
MDgsNiArMTA4LDcgQEAgZW51bSBKU1R5cGUgOiB1aW50OF90IHsKIAogICAgIFJlZ0V4cE9iamVj
dFR5cGUsCiAgICAgUHJveHlPYmplY3RUeXBlLAorICAgIEpTR2VuZXJhdG9yVHlwZSwKICAgICBK
U1Byb21pc2VUeXBlLAogICAgIEpTTWFwVHlwZSwKICAgICBKU1NldFR5cGUsCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378267</attachid>
            <date>2019-09-06 20:08:41 -0700</date>
            <delta_ts>2019-09-07 01:47:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201159-20190906200841.patch</filename>
            <type>text/plain</type>
            <size>100753</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5NTgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
YjQ1NmYyOTdmYjkwZTFiOTBiNjE3MGRmYzE2MTE0Y2U2M2E1ZjlmLi41YmViZmFmNzliNzNkMDI3
NDY1N2E3ODY4NDM1ZWNhZWMzNjlmMzkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMjUgQEAKKzIwMTktMDktMDYgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBHZW5lcmF0b3Igc2hvdWxkIGhhdmUgaW50ZXJuYWwgZmllbGRz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDExNTkK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEphdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogU291cmNlcy50
eHQ6CisgICAgICAgICogYnVpbHRpbnMvQXN5bmNGdW5jdGlvblByb3RvdHlwZS5qczoKKyAgICAg
ICAgKGdsb2JhbFByaXZhdGUuYXN5bmNGdW5jdGlvblJlc3VtZSk6CisgICAgICAgICogYnVpbHRp
bnMvR2VuZXJhdG9yUHJvdG90eXBlLmpzOgorICAgICAgICAoZ2xvYmFsUHJpdmF0ZS5nZW5lcmF0
b3JSZXN1bWUpOgorICAgICAgICAobmV4dCk6CisgICAgICAgIChyZXR1cm4pOgorICAgICAgICAo
dGhyb3cpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNw
cDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb246OnJ1bik6CisgICAg
ICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5jcHA6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6OkJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkp
OgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuaDoKKyAgICAg
ICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3QucmI6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNv
ZGVVc2VEZWYuaDoKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCk6
CisgICAgICAgIChKU0M6OmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAq
IGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluaXNo
Q3JlYXRpb24pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmFsaXplTExJbnRJbmxpbmVD
YWNoZXMpOgorICAgICAgICAqIGJ5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcDoKKyAgICAgICAg
KEpTQzo6c3BlY3VsYXRpb25Gcm9tSlNUeXBlKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Qnl0
ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1
dEdlbmVyYXRvckZpZWxkcyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
Q3JlYXRlR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRO
ZXdHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFlpZWxk
KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWxlZ2F0ZVlpZWxkKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZW5lcmF0b3JTdGF0ZUNoYW5n
ZSk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXNHZW5lcmF0b3IpOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdG9yU3RhdGVSZWdpc3Rlcik6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0b3JWYWx1ZVJlZ2lzdGVyKToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3Rlcik6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0b3JGcmFtZVJlZ2lzdGVyKToK
KyAgICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6
Z2VuZXJhdG9ySW50ZXJuYWxGaWVsZEluZGV4KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVJbnRy
aW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19nZXRHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19wdXRHZW5l
cmF0b3JJbnRlcm5hbEZpZWxkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVJbnRyaW5zaWNOb2Rl
OjplbWl0X2ludHJpbnNpY19pc0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uTm9k
ZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklu
bGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0
U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sp
OgorICAgICAgICAqIGRmZy9ERkdDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OmNhcGFiaWxpdHlMZXZlbCk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAgICAg
ICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcnNFeGl0
U3RhdGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJzRXhpdFN0YXRlKToKKyAgICAg
ICAgKiBkZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OkNvbnN0YW50Rm9sZGluZ1BoYXNlOjpmb2xkQ29uc3RhbnRzKToKKyAgICAgICAgKiBkZmcvREZH
RG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAgICAqIGRmZy9E
RkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5v
ZGUpOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwSXNDZWxsV2l0aFR5cGUp
OgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6Y29u
dmVydFRvTmV3R2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNTdHJ1Y3R1
cmUpOgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdPcGVy
YXRpb25zLmNwcDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGRm
Zy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1Nh
ZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAg
ICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjb21waWxlQ3JlYXRlR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0dlbmVyYXRvcik6CisgICAgICAgICogZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmg6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAg
KiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRp
b25QaGFzZS5jcHA6CisgICAgICAgICogZnRsL0ZUTENhcGFiaWxpdGllcy5jcHA6CisgICAgICAg
IChKU0M6OkZUTDo6Y2FuQ29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5j
cHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOb2RlKToK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5ld0dlbmVyYXRv
cik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDcmVhdGVH
ZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjppc0NlbGxX
aXRoVHlwZSk6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJp
dmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVT
bG93Q2FzZXMpOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBq
aXQvSklUT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIu
YXNtOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpT
Qzo6U0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmg6
CisgICAgICAgICogcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6
SW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmVTbG93KToKKyAgICAgICAg
KiBydW50aW1lL0ludGVybmFsRnVuY3Rpb24uaDoKKyAgICAgICAgKEpTQzo6SW50ZXJuYWxGdW5j
dGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5l
cmF0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SlNHZW5lcmF0b3I6OmNyZWF0ZSk6Cisg
ICAgICAgIChKU0M6OkpTR2VuZXJhdG9yOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlND
OjpKU0dlbmVyYXRvcjo6SlNHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKU0dlbmVyYXRvcjo6
ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpKU0dlbmVyYXRvcjo6dmlzaXRDaGlsZHJl
bik6CisgICAgICAgICogcnVudGltZS9KU0dlbmVyYXRvci5oOiBDb3BpZWQgZnJvbSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmguCisgICAgICAgICog
cnVudGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmg6CisgICAgICAgICogcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0KToKKyAgICAg
ICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRp
bWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmdlbmVy
YXRvclN0cnVjdHVyZSBjb25zdCk6CisgICAgICAgICogcnVudGltZS9KU1R5cGUuY3BwOgorICAg
ICAgICAoV1RGOjpwcmludEludGVybmFsKToKKyAgICAgICAgKiBydW50aW1lL0pTVHlwZS5oOgor
CiAyMDE5LTA5LTA2ICBSeWFuIEhhZGRhZCAgPHJ5YW5oYWRkYWRAYXBwbGUuY29tPgogCiAgICAg
ICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyNDk1NjYuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IDBkODhiNTQ0Y2FjMWY3OGY4ZThlNjk3NmVmMDIwYmMzYWVkZjg3ZDYuLjI1
MzA0MDMxOWYwZDJiZDMzNjJiYzU2MjA4NGM0NWQ4NDVmZWUzNTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0xODA0LDYgKzE4MDQsNyBAQAogCQlFMzQwMEVDMTIyQTFDQzdCMDA5
REVENTQgLyogRnVuY3Rpb25FeGVjdXRhYmxlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM0MDBFQzAyMkExQ0M3ODAwOURFRDU0IC8qIEZ1
bmN0aW9uRXhlY3V0YWJsZUlubGluZXMuaCAqLzsgfTsKIAkJRTM0RTY1NzUyMDY2OEVBQTAwRkI4
MUFDIC8qIFBhcnNlSGFzaC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTM0RTY1NzMyMDY2OEU4RDAwRkI4MUFDIC8qIFBhcnNlSGFzaC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzNEVEQkY3MURCNUZG
QzkwMERDODdBNSAvKiBGcmFtZVRyYWNlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUzNEVEQkY2MURCNUZGQzEwMERDODdBNSAvKiBGcmFtZVRyYWNl
cnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlF
MzRGOTMwRTIzMjJEODgyMDAyQjhEQjQgLyogSlNHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNEY5MzBDMjMyMkQ4ODEwMDJCOERCNCAv
KiBKU0dlbmVyYXRvci5oICovOyB9OwogCQlFMzUwNzA4QTFEQzQ5QkJGMDA4OUJDRDYgLyogRE9N
SklUU2lnbmF0dXJlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMzUwNzA4OTFEQzQ5QkI2MDA4OUJDRDYgLyogRE9NSklUU2lnbmF0dXJlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM1NDYyMkIxQjYw
NjVEMTAwNTQ1Mzg2IC8qIENvbnN0cnVjdEFiaWxpdHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNTQ2MjJBMUI2MDY1RDEwMDU0NTM4NiAvKiBDb25z
dHJ1Y3RBYmlsaXR5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJRTM1NTVCOEExREFFMDNBNTAwRjM2OTIxIC8qIERPTUpJVENhbGxET01HZXR0ZXJT
bmlwcGV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
MzU1NUI4OTFEQUUwM0EyMDBGMzY5MjEgLyogRE9NSklUQ2FsbERPTUdldHRlclNuaXBwZXQuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNDg5OSw2
ICs0OTAwLDggQEAKIAkJRTM0RTY1NzMyMDY2OEU4RDAwRkI4MUFDIC8qIFBhcnNlSGFzaC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYXJzZUhhc2guaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRTM0RTY1NzQyMDY2OEU4RTAwRkI4MUFDIC8qIFBhcnNlSGFzaC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYXJzZUhhc2guY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzRFREJGNjFEQjVGRkMxMDBEQzg3QTUgLyog
RnJhbWVUcmFjZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZyYW1lVHJh
Y2Vycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzRGOTMwQjIzMjJEODgxMDAy
QjhEQjQgLyogSlNHZW5lcmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNHZW5lcmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzRG
OTMwQzIzMjJEODgxMDAyQjhEQjQgLyogSlNHZW5lcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNHZW5lcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRTM1MDcwODkxREM0OUJCNjAwODlCQ0Q2IC8qIERPTUpJVFNpZ25hdHVyZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01KSVRTaWduYXR1cmUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRTM1NDYyMkExQjYwNjVEMTAwNTQ1Mzg2IC8qIENvbnN0cnVjdEFi
aWxpdHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29uc3RydWN0QWJpbGl0
eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzU1NUI4OTFEQUUwM0EyMDBGMzY5
MjEgLyogRE9NSklUQ2FsbERPTUdldHRlclNuaXBwZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRE9NSklUQ2FsbERPTUdldHRlclNuaXBwZXQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTcxNzAsNiArNzE3Myw4IEBACiAJCQkJRjY5MkE4NUUwMjU1NTk3RDAx
RkY2MEY3IC8qIEpTRnVuY3Rpb24uY3BwICovLAogCQkJCUY2OTJBODVGMDI1NTU5N0QwMUZGNjBG
NyAvKiBKU0Z1bmN0aW9uLmggKi8sCiAJCQkJQTcyMDI4QjkxNzk3NjAzRDAwOTgwMjhDIC8qIEpT
RnVuY3Rpb25JbmxpbmVzLmggKi8sCisJCQkJRTM0RjkzMEIyMzIyRDg4MTAwMkI4REI0IC8qIEpT
R2VuZXJhdG9yLmNwcCAqLywKKwkJCQlFMzRGOTMwQzIzMjJEODgxMDAyQjhEQjQgLyogSlNHZW5l
cmF0b3IuaCAqLywKIAkJCQk3MEI3OTE4QzFDMDI0NDYyMDAyNDgxRTIgLyogSlNHZW5lcmF0b3JG
dW5jdGlvbi5jcHAgKi8sCiAJCQkJNzBCNzkxOEQxQzAyNDQ2MjAwMjQ4MUUyIC8qIEpTR2VuZXJh
dG9yRnVuY3Rpb24uaCAqLywKIAkJCQkwRjJCNjZDMzE3QjZCNUFCMDBBN0FFM0YgLyogSlNHZW5l
cmljVHlwZWRBcnJheVZpZXcuaCAqLywKQEAgLTk2MjksNiArOTYzNCw3IEBACiAJCQkJMEYyQjY2
RjAxN0I2QjVBQjAwQTdBRTNGIC8qIEpTRmxvYXQ2NEFycmF5LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCQzE4QzQxRjBFMTZGNUNEMDBCMzQ0NjAgLyogSlNGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTcyMDI4QkExNzk3NjAzRDAwOTgwMjhDIC8qIEpTRnVuY3Rpb25JbmxpbmVzLmggaW4g
SGVhZGVycyAqLywKKwkJCQlFMzRGOTMwRTIzMjJEODgyMDAyQjhEQjQgLyogSlNHZW5lcmF0b3Iu
aCBpbiBIZWFkZXJzICovLAogCQkJCTcwQjc5MTlDMUMwMjRBNDkwMDI0ODFFMiAvKiBKU0dlbmVy
YXRvckZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCNjZGMTE3QjZCNUFCMDBBN0FF
M0YgLyogSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2
NkYyMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9y
LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3Vy
Y2VzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCAyNjIxOTNi
MjM4NTEyZjhlOTVkZWQxNGFiMjg5MGM1MWRiYzVlOWMwLi5kMTAxMjAyMjdhMGMxYmVhNTk4OTJh
MjY5ZGFjYjRmODU0MGI1ZjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291
cmNlcy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC04MjQs
NiArODI0LDcgQEAgcnVudGltZS9KU0RhdGVNYXRoLmNwcAogcnVudGltZS9KU0Rlc3RydWN0aWJs
ZU9iamVjdEhlYXBDZWxsVHlwZS5jcHAKIHJ1bnRpbWUvSlNGaXhlZEFycmF5LmNwcAogcnVudGlt
ZS9KU0Z1bmN0aW9uLmNwcAorcnVudGltZS9KU0dlbmVyYXRvci5jcHAKIHJ1bnRpbWUvSlNHZW5l
cmF0b3JGdW5jdGlvbi5jcHAKIHJ1bnRpbWUvSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQuY3Bw
CiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J1aWx0aW5zL0FzeW5jRnVuY3Rpb25Qcm90b3R5cGUuanMgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnVpbHRpbnMvQXN5bmNGdW5jdGlvblByb3RvdHlwZS5qcwppbmRleCA1MjE0YmQ2
ZjNhMWI0ZTJlNWYxZTk1YWExYzk5MTE4OTliODk1MDBmLi45NjhjZjFlNzM0NjE5MmYxZDQ1OGMz
Nzk4ZWMzN2M4ZDFiYzkxZDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVp
bHRpbnMvQXN5bmNGdW5jdGlvblByb3RvdHlwZS5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnVpbHRpbnMvQXN5bmNGdW5jdGlvblByb3RvdHlwZS5qcwpAQCAtMzEsMjIgKzMxLDIyIEBA
IGZ1bmN0aW9uIGFzeW5jRnVuY3Rpb25SZXN1bWUoZ2VuZXJhdG9yLCBwcm9taXNlLCBzZW50VmFs
dWUsIHJlc3VtZU1vZGUpCiAKICAgICBAYXNzZXJ0KEBpc1Byb21pc2UocHJvbWlzZSkpOwogCi0g
ICAgdmFyIHN0YXRlID0gQGdldEJ5SWREaXJlY3RQcml2YXRlKGdlbmVyYXRvciwgImdlbmVyYXRv
clN0YXRlIik7CisgICAgdmFyIHN0YXRlID0gQGdldEdlbmVyYXRvckludGVybmFsRmllbGQoZ2Vu
ZXJhdG9yLCBAZ2VuZXJhdG9yRmllbGRTdGF0ZSk7CiAgICAgdmFyIHZhbHVlID0gQHVuZGVmaW5l
ZDsKIAogICAgIGlmIChzdGF0ZSA9PT0gQEdlbmVyYXRvclN0YXRlQ29tcGxldGVkIHx8IChyZXN1
bWVNb2RlICE9PSBAR2VuZXJhdG9yUmVzdW1lTW9kZU5vcm1hbCAmJiByZXN1bWVNb2RlICE9PSBA
R2VuZXJhdG9yUmVzdW1lTW9kZVRocm93KSkKICAgICAgICAgQHRocm93VHlwZUVycm9yKCJBc3lu
YyBmdW5jdGlvbiBpbGxlZ2FsbHkgcmVzdW1lZCIpOwogCiAgICAgdHJ5IHsKLSAgICAgICAgQHB1
dEJ5SWREaXJlY3RQcml2YXRlKGdlbmVyYXRvciwgImdlbmVyYXRvclN0YXRlIiwgQEdlbmVyYXRv
clN0YXRlRXhlY3V0aW5nKTsKLSAgICAgICAgdmFsdWUgPSBAZ2V0QnlJZERpcmVjdFByaXZhdGUo
Z2VuZXJhdG9yLCAiZ2VuZXJhdG9yTmV4dCIpLkBjYWxsKEBnZXRCeUlkRGlyZWN0UHJpdmF0ZShn
ZW5lcmF0b3IsICJnZW5lcmF0b3JUaGlzIiksIGdlbmVyYXRvciwgc3RhdGUsIHNlbnRWYWx1ZSwg
cmVzdW1lTW9kZSwgQGdldEJ5SWREaXJlY3RQcml2YXRlKGdlbmVyYXRvciwgImdlbmVyYXRvckZy
YW1lIikpOwotICAgICAgICBpZiAoQGdldEJ5SWREaXJlY3RQcml2YXRlKGdlbmVyYXRvciwgImdl
bmVyYXRvclN0YXRlIikgPT09IEBHZW5lcmF0b3JTdGF0ZUV4ZWN1dGluZykgewotICAgICAgICAg
ICAgQHB1dEJ5SWREaXJlY3RQcml2YXRlKGdlbmVyYXRvciwgImdlbmVyYXRvclN0YXRlIiwgQEdl
bmVyYXRvclN0YXRlQ29tcGxldGVkKTsKKyAgICAgICAgQHB1dEdlbmVyYXRvckludGVybmFsRmll
bGQoZ2VuZXJhdG9yLCBAZ2VuZXJhdG9yRmllbGRTdGF0ZSwgQEdlbmVyYXRvclN0YXRlRXhlY3V0
aW5nKTsKKyAgICAgICAgdmFsdWUgPSBAZ2V0R2VuZXJhdG9ySW50ZXJuYWxGaWVsZChnZW5lcmF0
b3IsIEBnZW5lcmF0b3JGaWVsZE5leHQpLkBjYWxsKEBnZXRHZW5lcmF0b3JJbnRlcm5hbEZpZWxk
KGdlbmVyYXRvciwgQGdlbmVyYXRvckZpZWxkVGhpcyksIGdlbmVyYXRvciwgc3RhdGUsIHNlbnRW
YWx1ZSwgcmVzdW1lTW9kZSwgQGdldEdlbmVyYXRvckludGVybmFsRmllbGQoZ2VuZXJhdG9yLCBA
Z2VuZXJhdG9yRmllbGRGcmFtZSkpOworICAgICAgICBpZiAoQGdldEdlbmVyYXRvckludGVybmFs
RmllbGQoZ2VuZXJhdG9yLCBAZ2VuZXJhdG9yRmllbGRTdGF0ZSkgPT09IEBHZW5lcmF0b3JTdGF0
ZUV4ZWN1dGluZykgeworICAgICAgICAgICAgQHB1dEdlbmVyYXRvckludGVybmFsRmllbGQoZ2Vu
ZXJhdG9yLCBAZ2VuZXJhdG9yRmllbGRTdGF0ZSwgQEdlbmVyYXRvclN0YXRlQ29tcGxldGVkKTsK
ICAgICAgICAgICAgIEByZXNvbHZlUHJvbWlzZVdpdGhGaXJzdFJlc29sdmluZ0Z1bmN0aW9uQ2Fs
bENoZWNrKHByb21pc2UsIHZhbHVlKTsKICAgICAgICAgICAgIHJldHVybiBwcm9taXNlOwogICAg
ICAgICB9CiAgICAgfSBjYXRjaCAoZXJyb3IpIHsKLSAgICAgICAgQHB1dEJ5SWREaXJlY3RQcml2
YXRlKGdlbmVyYXRvciwgImdlbmVyYXRvclN0YXRlIiwgQEdlbmVyYXRvclN0YXRlQ29tcGxldGVk
KTsKKyAgICAgICAgQHB1dEdlbmVyYXRvckludGVybmFsRmllbGQoZ2VuZXJhdG9yLCBAZ2VuZXJh
dG9yRmllbGRTdGF0ZSwgQEdlbmVyYXRvclN0YXRlQ29tcGxldGVkKTsKICAgICAgICAgQHJlamVj
dFByb21pc2VXaXRoRmlyc3RSZXNvbHZpbmdGdW5jdGlvbkNhbGxDaGVjayhwcm9taXNlLCBlcnJv
cik7CiAgICAgICAgIHJldHVybiBwcm9taXNlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9idWlsdGlucy9HZW5lcmF0b3JQcm90b3R5cGUuanMgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnVpbHRpbnMvR2VuZXJhdG9yUHJvdG90eXBlLmpzCmluZGV4IGIyODAxZGY4
ODJiOGE4YmM2ZTE1ZTZlMTRhOWYyOTZjZDFjNjkyNWQuLjgzOTNlYTI4YWU4OTk3NjkyY2ZlYjZl
ZTI1NGJhZjc5NTI3MWMwOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWls
dGlucy9HZW5lcmF0b3JQcm90b3R5cGUuanMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1
aWx0aW5zL0dlbmVyYXRvclByb3RvdHlwZS5qcwpAQCAtMzQsMTQgKzM0LDE0IEBAIGZ1bmN0aW9u
IGdlbmVyYXRvclJlc3VtZShnZW5lcmF0b3IsIHN0YXRlLCBnZW5lcmF0b3JUaGlzLCBzZW50VmFs
dWUsIHZhbHVlLCByZXN1CiAgICAgdmFyIGRvbmUgPSBzdGF0ZSA9PT0gQEdlbmVyYXRvclN0YXRl
Q29tcGxldGVkOwogICAgIGlmICghZG9uZSkgewogICAgICAgICB0cnkgewotICAgICAgICAgICAg
QHB1dEJ5SWREaXJlY3RQcml2YXRlKGdlbmVyYXRvciwgImdlbmVyYXRvclN0YXRlIiwgQEdlbmVy
YXRvclN0YXRlRXhlY3V0aW5nKTsKLSAgICAgICAgICAgIHZhbHVlID0gQGdldEJ5SWREaXJlY3RQ
cml2YXRlKGdlbmVyYXRvciwgImdlbmVyYXRvck5leHQiKS5AY2FsbChnZW5lcmF0b3JUaGlzLCBn
ZW5lcmF0b3IsIHN0YXRlLCBzZW50VmFsdWUsIHJlc3VtZU1vZGUsIEBnZXRCeUlkRGlyZWN0UHJp
dmF0ZShnZW5lcmF0b3IsICJnZW5lcmF0b3JGcmFtZSIpKTsKLSAgICAgICAgICAgIGlmIChAZ2V0
QnlJZERpcmVjdFByaXZhdGUoZ2VuZXJhdG9yLCAiZ2VuZXJhdG9yU3RhdGUiKSA9PT0gQEdlbmVy
YXRvclN0YXRlRXhlY3V0aW5nKSB7Ci0gICAgICAgICAgICAgICAgQHB1dEJ5SWREaXJlY3RQcml2
YXRlKGdlbmVyYXRvciwgImdlbmVyYXRvclN0YXRlIiwgQEdlbmVyYXRvclN0YXRlQ29tcGxldGVk
KTsKKyAgICAgICAgICAgIEBwdXRHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKGdlbmVyYXRvciwgQGdl
bmVyYXRvckZpZWxkU3RhdGUsIEBHZW5lcmF0b3JTdGF0ZUV4ZWN1dGluZyk7CisgICAgICAgICAg
ICB2YWx1ZSA9IEBnZXRHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKGdlbmVyYXRvciwgQGdlbmVyYXRv
ckZpZWxkTmV4dCkuQGNhbGwoZ2VuZXJhdG9yVGhpcywgZ2VuZXJhdG9yLCBzdGF0ZSwgc2VudFZh
bHVlLCByZXN1bWVNb2RlLCBAZ2V0R2VuZXJhdG9ySW50ZXJuYWxGaWVsZChnZW5lcmF0b3IsIEBn
ZW5lcmF0b3JGaWVsZEZyYW1lKSk7CisgICAgICAgICAgICBpZiAoQGdldEdlbmVyYXRvckludGVy
bmFsRmllbGQoZ2VuZXJhdG9yLCBAZ2VuZXJhdG9yRmllbGRTdGF0ZSkgPT09IEBHZW5lcmF0b3JT
dGF0ZUV4ZWN1dGluZykgeworICAgICAgICAgICAgICAgIEBwdXRHZW5lcmF0b3JJbnRlcm5hbEZp
ZWxkKGdlbmVyYXRvciwgQGdlbmVyYXRvckZpZWxkU3RhdGUsIEBHZW5lcmF0b3JTdGF0ZUNvbXBs
ZXRlZCk7CiAgICAgICAgICAgICAgICAgZG9uZSA9IHRydWU7CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0gY2F0Y2ggKGVycm9yKSB7Ci0gICAgICAgICAgICBAcHV0QnlJZERpcmVjdFByaXZhdGUo
Z2VuZXJhdG9yLCAiZ2VuZXJhdG9yU3RhdGUiLCBAR2VuZXJhdG9yU3RhdGVDb21wbGV0ZWQpOwor
ICAgICAgICAgICAgQHB1dEdlbmVyYXRvckludGVybmFsRmllbGQoZ2VuZXJhdG9yLCBAZ2VuZXJh
dG9yRmllbGRTdGF0ZSwgQEdlbmVyYXRvclN0YXRlQ29tcGxldGVkKTsKICAgICAgICAgICAgIHRo
cm93IGVycm9yOwogICAgICAgICB9CiAgICAgfQpAQCAtNTIsNDMgKzUyLDQzIEBAIGZ1bmN0aW9u
IG5leHQodmFsdWUpCiB7CiAgICAgInVzZSBzdHJpY3QiOwogCi0gICAgdmFyIHN0YXRlID0gQGdl
dEJ5SWREaXJlY3RQcml2YXRlKHRoaXMsICJnZW5lcmF0b3JTdGF0ZSIpOwotICAgIGlmICh0eXBl
b2Ygc3RhdGUgIT09ICJudW1iZXIiKQorICAgIGlmICghQGlzR2VuZXJhdG9yKHRoaXMpKQogICAg
ICAgICBAdGhyb3dUeXBlRXJyb3IoInx0aGlzfCBzaG91bGQgYmUgYSBnZW5lcmF0b3IiKTsKIAor
ICAgIHZhciBzdGF0ZSA9IEBnZXRHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKHRoaXMsIEBnZW5lcmF0
b3JGaWVsZFN0YXRlKTsKICAgICBpZiAoc3RhdGUgPT09IEBHZW5lcmF0b3JTdGF0ZUV4ZWN1dGlu
ZykKICAgICAgICAgQHRocm93VHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgZXhlY3V0aW5nIik7CiAK
LSAgICByZXR1cm4gQGdlbmVyYXRvclJlc3VtZSh0aGlzLCBzdGF0ZSwgQGdldEJ5SWREaXJlY3RQ
cml2YXRlKHRoaXMsICJnZW5lcmF0b3JUaGlzIiksIHZhbHVlLCBAdW5kZWZpbmVkLCBAR2VuZXJh
dG9yUmVzdW1lTW9kZU5vcm1hbCk7CisgICAgcmV0dXJuIEBnZW5lcmF0b3JSZXN1bWUodGhpcywg
c3RhdGUsIEBnZXRHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKHRoaXMsIEBnZW5lcmF0b3JGaWVsZFRo
aXMpLCB2YWx1ZSwgQHVuZGVmaW5lZCwgQEdlbmVyYXRvclJlc3VtZU1vZGVOb3JtYWwpOwogfQog
CiBmdW5jdGlvbiByZXR1cm4odmFsdWUpCiB7CiAgICAgInVzZSBzdHJpY3QiOwogCi0gICAgdmFy
IHN0YXRlID0gQGdldEJ5SWREaXJlY3RQcml2YXRlKHRoaXMsICJnZW5lcmF0b3JTdGF0ZSIpOwot
ICAgIGlmICh0eXBlb2Ygc3RhdGUgIT09ICJudW1iZXIiKQorICAgIGlmICghQGlzR2VuZXJhdG9y
KHRoaXMpKQogICAgICAgICBAdGhyb3dUeXBlRXJyb3IoInx0aGlzfCBzaG91bGQgYmUgYSBnZW5l
cmF0b3IiKTsKIAorICAgIHZhciBzdGF0ZSA9IEBnZXRHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKHRo
aXMsIEBnZW5lcmF0b3JGaWVsZFN0YXRlKTsKICAgICBpZiAoc3RhdGUgPT09IEBHZW5lcmF0b3JT
dGF0ZUV4ZWN1dGluZykKICAgICAgICAgQHRocm93VHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgZXhl
Y3V0aW5nIik7CiAKLSAgICByZXR1cm4gQGdlbmVyYXRvclJlc3VtZSh0aGlzLCBzdGF0ZSwgQGdl
dEJ5SWREaXJlY3RQcml2YXRlKHRoaXMsICJnZW5lcmF0b3JUaGlzIiksIHZhbHVlLCB2YWx1ZSwg
QEdlbmVyYXRvclJlc3VtZU1vZGVSZXR1cm4pOworICAgIHJldHVybiBAZ2VuZXJhdG9yUmVzdW1l
KHRoaXMsIHN0YXRlLCBAZ2V0R2VuZXJhdG9ySW50ZXJuYWxGaWVsZCh0aGlzLCBAZ2VuZXJhdG9y
RmllbGRUaGlzKSwgdmFsdWUsIHZhbHVlLCBAR2VuZXJhdG9yUmVzdW1lTW9kZVJldHVybik7CiB9
CiAKIGZ1bmN0aW9uIHRocm93KGV4Y2VwdGlvbikKIHsKICAgICAidXNlIHN0cmljdCI7CiAKLSAg
ICB2YXIgc3RhdGUgPSBAZ2V0QnlJZERpcmVjdFByaXZhdGUodGhpcywgImdlbmVyYXRvclN0YXRl
Iik7Ci0gICAgaWYgKHR5cGVvZiBzdGF0ZSAhPT0gIm51bWJlciIpCisgICAgaWYgKCFAaXNHZW5l
cmF0b3IodGhpcykpCiAgICAgICAgIEB0aHJvd1R5cGVFcnJvcigifHRoaXN8IHNob3VsZCBiZSBh
IGdlbmVyYXRvciIpOwogCisgICAgdmFyIHN0YXRlID0gQGdldEdlbmVyYXRvckludGVybmFsRmll
bGQodGhpcywgQGdlbmVyYXRvckZpZWxkU3RhdGUpOwogICAgIGlmIChzdGF0ZSA9PT0gQEdlbmVy
YXRvclN0YXRlRXhlY3V0aW5nKQogICAgICAgICBAdGhyb3dUeXBlRXJyb3IoIkdlbmVyYXRvciBp
cyBleGVjdXRpbmciKTsKIAogICAgIGlmIChzdGF0ZSA9PT0gQEdlbmVyYXRvclN0YXRlQ29tcGxl
dGVkKQogICAgICAgICB0aHJvdyBleGNlcHRpb247CiAKLSAgICByZXR1cm4gQGdlbmVyYXRvclJl
c3VtZSh0aGlzLCBzdGF0ZSwgQGdldEJ5SWREaXJlY3RQcml2YXRlKHRoaXMsICJnZW5lcmF0b3JU
aGlzIiksIGV4Y2VwdGlvbiwgQHVuZGVmaW5lZCwgQEdlbmVyYXRvclJlc3VtZU1vZGVUaHJvdyk7
CisgICAgcmV0dXJuIEBnZW5lcmF0b3JSZXN1bWUodGhpcywgc3RhdGUsIEBnZXRHZW5lcmF0b3JJ
bnRlcm5hbEZpZWxkKHRoaXMsIEBnZW5lcmF0b3JGaWVsZFRoaXMpLCBleGNlcHRpb24sIEB1bmRl
ZmluZWQsIEBHZW5lcmF0b3JSZXN1bWVNb2RlVGhyb3cpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlv
bi5jcHAKaW5kZXggOTU0NGJjYjRjODg2OWIzNDU4NmYxNjZjODc0Y2JiMDgxNTAzZWZkZi4uMjg2
MDUxY2M5NWVhNGQ4ZmRhNjZmYjA5OTdiYjU5M2VkZTdlMzJhNiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmlj
YXRpb24uY3BwCkBAIC0zNiw3ICszNiw3IEBACiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXJJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVz
LmgiCi0jaW5jbHVkZSAiSlNHZW5lcmF0b3JGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTR2VuZXJh
dG9yLmgiCiAjaW5jbHVkZSAiTGFiZWwuaCIKICNpbmNsdWRlICJTdHJvbmdJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiVW5saW5rZWRDb2RlQmxvY2suaCIKQEAgLTIyMyw3ICsyMjMsNyBAQCB2b2lkIEJ5
dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uOjpydW4oKQogICAgIHsKICAgICAgICAgYXV0byBuZXh0
VG9FbnRlclBvaW50ID0gZW50ZXJQb2ludCgpLm5leHQoKTsKICAgICAgICAgdW5zaWduZWQgc3dp
dGNoVGFibGVJbmRleCA9IG1fY29kZUJsb2NrLT5udW1iZXJPZlN3aXRjaEp1bXBUYWJsZXMoKTsK
LSAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHN0YXRlID0gdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1l
bnQoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yQXJn
dW1lbnQ6OlN0YXRlKSk7CisgICAgICAgIFZpcnR1YWxSZWdpc3RlciBzdGF0ZSA9IHZpcnR1YWxS
ZWdpc3RlckZvckFyZ3VtZW50KHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpHZW5l
cmF0b3JBcmd1bWVudDo6U3RhdGUpKTsKICAgICAgICAgYXV0byYganVtcFRhYmxlID0gbV9jb2Rl
QmxvY2stPmFkZFN3aXRjaEp1bXBUYWJsZSgpOwogICAgICAgICBqdW1wVGFibGUubWluID0gMDsK
ICAgICAgICAganVtcFRhYmxlLmJyYW5jaE9mZnNldHMucmVzaXplKG1feWllbGRzLnNpemUoKSAr
IDEpOwpAQCAtMjM4LDcgKzIzOCw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb246
OnJ1bigpCiAgICAgfQogCiAgICAgZm9yIChjb25zdCBZaWVsZERhdGEmIGRhdGEgOiBtX3lpZWxk
cykgewotICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgc2NvcGUgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JB
cmd1bWVudChzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0
b3JBcmd1bWVudDo6RnJhbWUpKTsKKyAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHNjb3BlID0gdmly
dHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6
OkdlbmVyYXRvckFyZ3VtZW50OjpGcmFtZSkpOwogCiAgICAgICAgIGF1dG8gaW5zdHJ1Y3Rpb24g
PSBtX2luc3RydWN0aW9ucy5hdChkYXRhLnBvaW50KTsKICAgICAgICAgLy8gRW1pdCBzYXZlIHNl
cXVlbmNlLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlSW50cmluc2ljUmVnaXN0cnkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuY3BwCmluZGV4IDE5ODQ0M2Q1MzFmYzZjNzllN2Vh
MTU1MzhiMjMwMWZlYmZmNDVmNmQuLjNhZDJiYWQ0NTM1ZjIyMGZkZTRjM2NhYTc0ZjNiMDgzNWYz
OWEwMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUludHJpbnNpY1JlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKICNpbmNs
dWRlICJJdGVyYXRpb25LaW5kLmgiCiAjaW5jbHVkZSAiSlNBc3luY0dlbmVyYXRvckZ1bmN0aW9u
LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgotI2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVuY3Rp
b24uaCIKKyNpbmNsdWRlICJKU0dlbmVyYXRvci5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0
LmgiCiAjaW5jbHVkZSAiSlNNb2R1bGVMb2FkZXIuaCIKICNpbmNsdWRlICJKU1Byb21pc2UuaCIK
QEAgLTc0LDExICs3NCwxNSBAQCBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5OjpCeXRlY29kZUlu
dHJpbnNpY1JlZ2lzdHJ5KFZNJiB2bSkKICAgICBtX3Byb21pc2VGbGFnc0lzRmlyc3RSZXNvbHZp
bmdGdW5jdGlvbkNhbGxlZC5zZXQobV92bSwganNOdW1iZXIoSlNQcm9taXNlOjppc0ZpcnN0UmVz
b2x2aW5nRnVuY3Rpb25DYWxsZWRGbGFnKSk7CiAgICAgbV9wcm9taXNlRmllbGRGbGFncy5zZXQo
bV92bSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTUHJvbWlzZTo6RmllbGQ6OkZs
YWdzKSkpOwogICAgIG1fcHJvbWlzZUZpZWxkUmVhY3Rpb25zT3JSZXN1bHQuc2V0KG1fdm0sIGpz
TnVtYmVyKHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU1Byb21pc2U6OkZpZWxkOjpSZWFjdGlvbnNP
clJlc3VsdCkpKTsKLSAgICBtX0dlbmVyYXRvclJlc3VtZU1vZGVOb3JtYWwuc2V0KG1fdm0sIGpz
TnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRv
clJlc3VtZU1vZGU6Ok5vcm1hbE1vZGUpKSk7Ci0gICAgbV9HZW5lcmF0b3JSZXN1bWVNb2RlVGhy
b3cuc2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVu
Y3Rpb246OkdlbmVyYXRvclJlc3VtZU1vZGU6OlRocm93TW9kZSkpKTsKLSAgICBtX0dlbmVyYXRv
clJlc3VtZU1vZGVSZXR1cm4uc2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+
KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvclJlc3VtZU1vZGU6OlJldHVybk1vZGUpKSk7
Ci0gICAgbV9HZW5lcmF0b3JTdGF0ZUNvbXBsZXRlZC5zZXQobV92bSwganNOdW1iZXIoc3RhdGlj
X2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yU3RhdGU6OkNvbXBs
ZXRlZCkpKTsKLSAgICBtX0dlbmVyYXRvclN0YXRlRXhlY3V0aW5nLnNldChtX3ZtLCBqc051bWJl
cihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JTdGF0
ZTo6RXhlY3V0aW5nKSkpOworICAgIG1fZ2VuZXJhdG9yRmllbGRTdGF0ZS5zZXQobV92bSwganNO
dW1iZXIoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTR2VuZXJhdG9yOjpGaWVsZDo6U3RhdGUpKSk7
CisgICAgbV9nZW5lcmF0b3JGaWVsZE5leHQuc2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0dlbmVyYXRvcjo6RmllbGQ6Ok5leHQpKSk7CisgICAgbV9nZW5lcmF0b3JG
aWVsZFRoaXMuc2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0dlbmVy
YXRvcjo6RmllbGQ6OlRoaXMpKSk7CisgICAgbV9nZW5lcmF0b3JGaWVsZEZyYW1lLnNldChtX3Zt
LCBqc051bWJlcihzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNHZW5lcmF0b3I6OkZpZWxkOjpGcmFt
ZSkpKTsKKyAgICBtX0dlbmVyYXRvclJlc3VtZU1vZGVOb3JtYWwuc2V0KG1fdm0sIGpzTnVtYmVy
KHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpHZW5lcmF0b3JSZXN1bWVNb2RlOjpO
b3JtYWxNb2RlKSkpOworICAgIG1fR2VuZXJhdG9yUmVzdW1lTW9kZVRocm93LnNldChtX3ZtLCBq
c051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9yUmVzdW1l
TW9kZTo6VGhyb3dNb2RlKSkpOworICAgIG1fR2VuZXJhdG9yUmVzdW1lTW9kZVJldHVybi5zZXQo
bV92bSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6OkdlbmVyYXRv
clJlc3VtZU1vZGU6OlJldHVybk1vZGUpKSk7CisgICAgbV9HZW5lcmF0b3JTdGF0ZUNvbXBsZXRl
ZC5zZXQobV92bSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6Okdl
bmVyYXRvclN0YXRlOjpDb21wbGV0ZWQpKSk7CisgICAgbV9HZW5lcmF0b3JTdGF0ZUV4ZWN1dGlu
Zy5zZXQobV92bSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6Okdl
bmVyYXRvclN0YXRlOjpFeGVjdXRpbmcpKSk7CiAgICAgbV9Bc3luY0dlbmVyYXRvclN0YXRlQ29t
cGxldGVkLnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0FzeW5jR2Vu
ZXJhdG9yRnVuY3Rpb246OkFzeW5jR2VuZXJhdG9yU3RhdGU6OkNvbXBsZXRlZCkpKTsKICAgICBt
X0FzeW5jR2VuZXJhdG9yU3RhdGVFeGVjdXRpbmcuc2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRpY19j
YXN0PGludDMyX3Q+KEpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbjo6QXN5bmNHZW5lcmF0b3JTdGF0
ZTo6RXhlY3V0aW5nKSkpOwogICAgIG1fQXN5bmNHZW5lcmF0b3JTdGF0ZVN1c3BlbmRlZFN0YXJ0
LnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0FzeW5jR2VuZXJhdG9y
RnVuY3Rpb246OkFzeW5jR2VuZXJhdG9yU3RhdGU6OlN1c3BlbmRlZFN0YXJ0KSkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVn
aXN0cnkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNp
Y1JlZ2lzdHJ5LmgKaW5kZXggZDVmNmMzYjA1ZWViODk2NTlhY2Q5ODdiMTZmMjBjOTQzNmJiYTc1
MC4uMjgwYjdmOTA2ZDY1ZTUwZmZiNzY3NWUxMWVhMmUyOTNiN2Q1N2VhOSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnku
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNS
ZWdpc3RyeS5oCkBAIC00MiwxMSArNDIsMTMgQEAgY2xhc3MgUmVnaXN0ZXJJRDsKICAgICBtYWNy
byhnZXRCeUlkRGlyZWN0KSBcCiAgICAgbWFjcm8oZ2V0QnlJZERpcmVjdFByaXZhdGUpIFwKICAg
ICBtYWNybyhnZXRQcm9taXNlSW50ZXJuYWxGaWVsZCkgXAorICAgIG1hY3JvKGdldEdlbmVyYXRv
ckludGVybmFsRmllbGQpIFwKICAgICBtYWNybyhpZFdpdGhQcm9maWxlKSBcCiAgICAgbWFjcm8o
aXNPYmplY3QpIFwKICAgICBtYWNybyhpc0pTQXJyYXkpIFwKICAgICBtYWNybyhpc1Byb3h5T2Jq
ZWN0KSBcCiAgICAgbWFjcm8oaXNEZXJpdmVkQXJyYXkpIFwKKyAgICBtYWNybyhpc0dlbmVyYXRv
cikgXAogICAgIG1hY3JvKGlzUHJvbWlzZSkgXAogICAgIG1hY3JvKGlzUmVnRXhwT2JqZWN0KSBc
CiAgICAgbWFjcm8oaXNNYXApIFwKQEAgLTYxLDYgKzYzLDcgQEAgY2xhc3MgUmVnaXN0ZXJJRDsK
ICAgICBtYWNybyhwdXRCeUlkRGlyZWN0UHJpdmF0ZSkgXAogICAgIG1hY3JvKHB1dEJ5VmFsRGly
ZWN0KSBcCiAgICAgbWFjcm8ocHV0UHJvbWlzZUludGVybmFsRmllbGQpIFwKKyAgICBtYWNybyhw
dXRHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKSBcCiAgICAgbWFjcm8odG9OdW1iZXIpIFwKICAgICBt
YWNybyh0b1N0cmluZykgXAogICAgIG1hY3JvKHRvT2JqZWN0KSBcCkBAIC05OCw2ICsxMDEsMTAg
QEAgY2xhc3MgUmVnaXN0ZXJJRDsKICAgICBtYWNybyhwcm9taXNlRmxhZ3NJc0ZpcnN0UmVzb2x2
aW5nRnVuY3Rpb25DYWxsZWQpIFwKICAgICBtYWNybyhwcm9taXNlRmllbGRGbGFncykgXAogICAg
IG1hY3JvKHByb21pc2VGaWVsZFJlYWN0aW9uc09yUmVzdWx0KSBcCisgICAgbWFjcm8oZ2VuZXJh
dG9yRmllbGRTdGF0ZSkgXAorICAgIG1hY3JvKGdlbmVyYXRvckZpZWxkTmV4dCkgXAorICAgIG1h
Y3JvKGdlbmVyYXRvckZpZWxkVGhpcykgXAorICAgIG1hY3JvKGdlbmVyYXRvckZpZWxkRnJhbWUp
IFwKICAgICBtYWNybyhHZW5lcmF0b3JSZXN1bWVNb2RlTm9ybWFsKSBcCiAgICAgbWFjcm8oR2Vu
ZXJhdG9yUmVzdW1lTW9kZVRocm93KSBcCiAgICAgbWFjcm8oR2VuZXJhdG9yUmVzdW1lTW9kZVJl
dHVybikgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlTGlzdC5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3Qu
cmIKaW5kZXggM2IzOTk4YWI1MGNkNjIwMzA5YmFjNmQ2N2ZkNjkxOGZmNGEwMWE3NS4uMWJhNDFm
MTA2YjdhMTE1MTI1NTcxMmY2YTNkOTMzNzcwZjJkNzNmMSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCkBAIC0xMzQsNiArMTM0LDIwIEBACiAg
ICAgICAgIGlzSW50ZXJuYWxQcm9taXNlOiBib29sLAogICAgIH0KIAorb3AgOmNyZWF0ZV9nZW5l
cmF0b3IsCisgICAgYXJnczogeworICAgICAgICBkc3Q6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAg
ICAgY2FsbGVlOiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgfSwKKyAgICBtZXRhZGF0YTogeworICAg
ICAgICBjYWNoZWRDYWxsZWU6IFdyaXRlQmFycmllcltKU0NlbGxdCisgICAgfQorCitvcCA6bmV3
X2dlbmVyYXRvciwKKyAgICBhcmdzOiB7CisgICAgICAgIGRzdDogVmlydHVhbFJlZ2lzdGVyLAor
ICAgIH0KKwogb3AgOmdldF9hcmd1bWVudCwKICAgICBhcmdzOiB7CiAgICAgICAgIGRzdDogVmly
dHVhbFJlZ2lzdGVyLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlVXNlRGVmLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVVc2VEZWYuaAppbmRleCBiZTA4NTk2NDBmYjEwN2RlOGI3ODJiY2ZhNTA4MWJjN2QxYzc5YmMy
Li40MDc5MjQ5OTY1ZDU2MThlOTNmOTg2NzI0NzI0ZWNjMzczMjAxNWM3IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaApAQCAtODAsNiArODAs
NyBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqIGNvZGVCbG9jaywg
T3Bjb2RlSUQgb3Bjb2RlSUQsIGNvbnN0IElucwogICAgIGNhc2Ugb3Bfam1wOgogICAgIGNhc2Ug
b3BfbmV3X29iamVjdDoKICAgICBjYXNlIG9wX25ld19wcm9taXNlOgorICAgIGNhc2Ugb3BfbmV3
X2dlbmVyYXRvcjoKICAgICBjYXNlIG9wX2VudGVyOgogICAgIGNhc2Ugb3BfYXJndW1lbnRfY291
bnQ6CiAgICAgY2FzZSBvcF9jYXRjaDoKQEAgLTE5NCw2ICsxOTUsNyBAQCB2b2lkIGNvbXB1dGVV
c2VzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqIGNvZGVCbG9jaywgT3Bjb2RlSUQgb3Bjb2RlSUQs
IGNvbnN0IElucwogICAgIFVTRVMoT3BOZXdBcnJheVdpdGhTaXplLCBsZW5ndGgpCiAgICAgVVNF
UyhPcENyZWF0ZVRoaXMsIGNhbGxlZSkKICAgICBVU0VTKE9wQ3JlYXRlUHJvbWlzZSwgY2FsbGVl
KQorICAgIFVTRVMoT3BDcmVhdGVHZW5lcmF0b3IsIGNhbGxlZSkKICAgICBVU0VTKE9wRGVsQnlJ
ZCwgYmFzZSkKICAgICBVU0VTKE9wTmV3RnVuYywgc2NvcGUpCiAgICAgVVNFUyhPcE5ld0FzeW5j
R2VuZXJhdG9yRnVuYywgc2NvcGUpCkBAIC0zODUsNiArMzg3LDcgQEAgdm9pZCBjb21wdXRlRGVm
c0ZvckJ5dGVjb2RlT2Zmc2V0KEJsb2NrKiBjb2RlQmxvY2ssIE9wY29kZUlEIG9wY29kZUlELCBj
b25zdCBJbnMKICAgICBERUZTKE9wVG9QcmltaXRpdmUsIGRzdCkKICAgICBERUZTKE9wQ3JlYXRl
VGhpcywgZHN0KQogICAgIERFRlMoT3BDcmVhdGVQcm9taXNlLCBkc3QpCisgICAgREVGUyhPcENy
ZWF0ZUdlbmVyYXRvciwgZHN0KQogICAgIERFRlMoT3BOZXdBcnJheSwgZHN0KQogICAgIERFRlMo
T3BOZXdBcnJheVdpdGhTcHJlYWQsIGRzdCkKICAgICBERUZTKE9wU3ByZWFkLCBkc3QpCkBAIC00
NjUsNiArNDY4LDcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KEJsb2NrKiBj
b2RlQmxvY2ssIE9wY29kZUlEIG9wY29kZUlELCBjb25zdCBJbnMKICAgICBERUZTKE9wTW92LCBk
c3QpCiAgICAgREVGUyhPcE5ld09iamVjdCwgZHN0KQogICAgIERFRlMoT3BOZXdQcm9taXNlLCBk
c3QpCisgICAgREVGUyhPcE5ld0dlbmVyYXRvciwgZHN0KQogICAgIERFRlMoT3BUb1RoaXMsIHNy
Y0RzdCkKICAgICBERUZTKE9wR2V0U2NvcGUsIGRzdCkKICAgICBERUZTKE9wQ3JlYXRlRGlyZWN0
QXJndW1lbnRzLCBkc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suY3BwCmluZGV4IDI5NDNiMmIxMDAzYzVmOGYxYTMwY2U1NjUyNjg0ZDQ0MzZlNzhlYTMuLjNh
NzE5OTZjNWNkMTc5MDFjNjcwN2E2MjdkOGFlOWFjNjhjODI2OGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC01NjgsNiArNTY4LDcgQEAgYm9v
bCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3du
ZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAgICAgTElOSyhPcFB1dEJ5SWQpCiAgICAgICAgIExJ
TksoT3BDcmVhdGVUaGlzKQogICAgICAgICBMSU5LKE9wQ3JlYXRlUHJvbWlzZSkKKyAgICAgICAg
TElOSyhPcENyZWF0ZUdlbmVyYXRvcikKIAogICAgICAgICBMSU5LKE9wQWRkKQogICAgICAgICBM
SU5LKE9wTXVsKQpAQCAtMTMwNyw2ICsxMzA4LDE5IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6
ZUxMSW50SW5saW5lQ2FjaGVzKCkKICAgICAgICAgICAgIGNhY2hlV3JpdGVCYXJyaWVyLmNsZWFy
KCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBjYXNlIG9wX2NyZWF0
ZV9nZW5lcmF0b3I6IHsKKyAgICAgICAgICAgIGF1dG8mIG1ldGFkYXRhID0gY3VySW5zdHJ1Y3Rp
b24tPmFzPE9wQ3JlYXRlR2VuZXJhdG9yPigpLm1ldGFkYXRhKHRoaXMpOworICAgICAgICAgICAg
YXV0byYgY2FjaGVXcml0ZUJhcnJpZXIgPSBtZXRhZGF0YS5tX2NhY2hlZENhbGxlZTsKKyAgICAg
ICAgICAgIGlmICghY2FjaGVXcml0ZUJhcnJpZXIgfHwgY2FjaGVXcml0ZUJhcnJpZXIudW52YWxp
ZGF0ZWRHZXQoKSA9PSBKU0NlbGw6OnNlZW5NdWx0aXBsZUNhbGxlZU9iamVjdHMoKSkKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIEpTQ2VsbCogY2FjaGVkRnVuY3Rpb24gPSBj
YWNoZVdyaXRlQmFycmllci5nZXQoKTsKKyAgICAgICAgICAgIGlmICh2bS5oZWFwLmlzTWFya2Vk
KGNhY2hlZEZ1bmN0aW9uKSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGlm
IChPcHRpb25zOjp2ZXJib3NlT1NSKCkpCisgICAgICAgICAgICAgICAgZGF0YUxvZ0YoIkNsZWFy
aW5nIExMSW50IGNyZWF0ZV9nZW5lcmF0b3Igd2l0aCBjYWNoZWQgY2FsbGVlICVwLlxuIiwgY2Fj
aGVkRnVuY3Rpb24pOworICAgICAgICAgICAgY2FjaGVXcml0ZUJhcnJpZXIuY2xlYXIoKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcmVzb2x2ZV9zY29w
ZTogewogICAgICAgICAgICAgLy8gUmlnaHQgbm93IHRoaXMgaXNuJ3Qgc3RyaWN0bHkgbmVjZXNz
YXJ5LiBBbnkgc3ltYm9sIHRhYmxlcyB0aGF0IHRoaXMgd2lsbCByZWZlciB0bwogICAgICAgICAg
ICAgLy8gYXJlIGZvciBvdXRlciBmdW5jdGlvbnMsIGFuZCB3ZSByZWZlciB0byB0aG9zZSBmdW5j
dGlvbnMgc3Ryb25nbHksIGFuZCB0aGV5IHJlZmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcAppbmRleCA0MmI2MjZjMDVlZTFmNTE4NDYw
NmVhNmRhOTQwZmYxOWFhMjMwMjc4Li4zNTNlNTZjZmM4ZWIwOTVkNzk2ZmFhYWJkYjEyNTRlYmIw
M2RjZTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3Vs
YXRlZFR5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxh
dGVkVHlwZS5jcHAKQEAgLTYwOSw5ICs2MDksOCBAQCBTcGVjdWxhdGVkVHlwZSBzcGVjdWxhdGlv
bkZyb21KU1R5cGUoSlNUeXBlIHR5cGUpCiAgICAgY2FzZSBEYXRhVmlld1R5cGU6CiAgICAgICAg
IHJldHVybiBTcGVjRGF0YVZpZXdPYmplY3Q7CiAgICAgZGVmYXVsdDoKLSAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBTcGVjQ2VsbDsKICAgICB9Ci0gICAgcmV0
dXJuIFNwZWNOb25lOwogfQogCiBTcGVjdWxhdGVkVHlwZSBsZWFzdFVwcGVyQm91bmRPZlN0cmlj
dGx5RXF1aXZhbGVudFNwZWN1bGF0aW9ucyhTcGVjdWxhdGVkVHlwZSB0eXBlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmNwcAppbmRleCBlYTdhNGFjNDYwODc0Zjg5ZjA5ZmM1Njk0MGE0MWIwYjE2MTEyNjE3Li5kZWM1
Y2YwYTBjY2I4MzY5MzBiNGE4NzVhYTA2NWRjOTcyNjljYmFjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApA
QCAtNjgzLDcgKzY4MywxNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3Io
Vk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogCiAgICAgc3dpdGNo
IChwYXJzZU1vZGUpIHsKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yV3JhcHBl
ckZ1bmN0aW9uTW9kZToKLSAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yV3JhcHBl
ck1ldGhvZE1vZGU6CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvcldyYXBwZXJN
ZXRob2RNb2RlOiB7CisgICAgICAgIG1fZ2VuZXJhdG9yUmVnaXN0ZXIgPSBhZGRWYXIoKTsKKwor
ICAgICAgICAvLyBGSVhNRTogRW1pdCB0b190aGlzIG9ubHkgd2hlbiBHZW5lcmF0b3IgdXNlcyBp
dC4KKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1
MTU4NgorICAgICAgICBlbWl0VG9UaGlzKCk7CisKKyAgICAgICAgZW1pdENyZWF0ZUdlbmVyYXRv
cihtX2dlbmVyYXRvclJlZ2lzdGVyLCAmbV9jYWxsZWVSZWdpc3Rlcik7CisgICAgICAgIGJyZWFr
OworICAgIH0KKwogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpBc3luY0dlbmVyYXRvcldyYXBw
ZXJNZXRob2RNb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpBc3luY0dlbmVyYXRvcldy
YXBwZXJGdW5jdGlvbk1vZGU6IHsKICAgICAgICAgbV9nZW5lcmF0b3JSZWdpc3RlciA9IGFkZFZh
cigpOwpAQCAtNzExLDcgKzcyMSw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVy
YXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAgICAg
ICAgICBlbWl0VG9UaGlzKCk7CiAgICAgICAgIH0KIAotICAgICAgICBlbWl0TmV3T2JqZWN0KG1f
Z2VuZXJhdG9yUmVnaXN0ZXIpOworICAgICAgICBlbWl0TmV3R2VuZXJhdG9yKG1fZ2VuZXJhdG9y
UmVnaXN0ZXIpOwogICAgICAgICBlbWl0TmV3UHJvbWlzZShwcm9taXNlUmVnaXN0ZXIoKSwgbV9p
c0J1aWx0aW5GdW5jdGlvbik7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTg2Niw3ICs4NzYs
MTAgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rp
b25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVubGlua2UKICAgICAgICAgICAgIC8vIEdlbmVyYXRvcmlm
aWNhdGlvbiBpbnNlcnRzIGxleGljYWwgZW52aXJvbm1lbnQgY3JlYXRpb24gaWYgbmVjZXNzYXJ5
LiBPdGhlcndpc2UsIHdlIGNvbnZlcnQgaXQgdG8gb3BfbW92IGZyYW1lLCBgdW5kZWZpbmVkYC4K
ICAgICAgICAgICAgIE9wQ3JlYXRlR2VuZXJhdG9yRnJhbWVFbnZpcm9ubWVudDo6ZW1pdCh0aGlz
LCBnZW5lcmF0b3JGcmFtZVJlZ2lzdGVyKCksIHNjb3BlUmVnaXN0ZXIoKSwgVmlydHVhbFJlZ2lz
dGVyIHsgc3ltYm9sVGFibGVDb25zdGFudEluZGV4IH0sIGFkZENvbnN0YW50VmFsdWUoanNVbmRl
ZmluZWQoKSkpOwogICAgICAgICB9Ci0gICAgICAgIGVtaXRQdXRCeUlkKGdlbmVyYXRvclJlZ2lz
dGVyKCksIHByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZh
dGVOYW1lKCksIGdlbmVyYXRvckZyYW1lUmVnaXN0ZXIoKSk7CisgICAgICAgIGlmIChwYXJzZU1v
ZGUgPT0gU291cmNlUGFyc2VNb2RlOjpBc3luY0dlbmVyYXRvckJvZHlNb2RlKQorICAgICAgICAg
ICAgZW1pdFB1dEJ5SWQoZ2VuZXJhdG9yUmVnaXN0ZXIoKSwgcHJvcGVydHlOYW1lcygpLmJ1aWx0
aW5OYW1lcygpLmdlbmVyYXRvckZyYW1lUHJpdmF0ZU5hbWUoKSwgZ2VuZXJhdG9yRnJhbWVSZWdp
c3RlcigpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZW1pdFB1dEludGVybmFsRmllbGQo
Z2VuZXJhdG9yUmVnaXN0ZXIoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTR2VuZXJhdG9yOjpG
aWVsZDo6RnJhbWUpLCBnZW5lcmF0b3JGcmFtZVJlZ2lzdGVyKCkpOwogICAgIH0KIAogICAgIGJv
b2wgc2hvdWxkSW5pdGlhbGl6ZUJsb2NrU2NvcGVkRnVuY3Rpb25zID0gZmFsc2U7IC8vIFdlIGdl
bmVyYXRlIHRvcC1sZXZlbCBmdW5jdGlvbiBkZWNsYXJhdGlvbnMgaW4gOjpnZW5lcmF0ZSgpLgpA
QCAtMjcwNiwyMCArMjcxOSwxMiBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0U2V0
dGVyQnlWYWwoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydAogCiB2b2lkIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0R2VuZXJhdG9yRmllbGRzKFJlZ2lzdGVySUQqIG5leHRG
dW5jdGlvbikKIHsKLSAgICAvLyBGSVhNRTogQ3VycmVudGx5LCB3ZSBqdXN0IGNyZWF0ZSBhbiBv
YmplY3QgYW5kIHN0b3JlIGdlbmVyYXRvciByZWxhdGVkIGZpZWxkcyBhcyBpdHMgcHJvcGVydGll
cyBmb3IgZWFzZS4KLSAgICAvLyBCdXQgdG8gbWFrZSBpdCBlZmZpY2llbnQsIHdlIHdpbGwgaW50
cm9kdWNlIEpTR2VuZXJhdG9yIGNsYXNzLCBhZGQgb3Bjb2RlIG5ld19nZW5lcmF0b3IgYW5kIHVz
ZSBpdHMgQysrIGZpZWxkcyBpbnN0ZWFkIG9mIHRoZXNlIHByaXZhdGUgcHJvcGVydGllcy4KLSAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTQ1Ci0KLSAg
ICBlbWl0RGlyZWN0UHV0QnlJZChtX2dlbmVyYXRvclJlZ2lzdGVyLCBwcm9wZXJ0eU5hbWVzKCku
YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yTmV4dFByaXZhdGVOYW1lKCksIG5leHRGdW5jdGlvbiwg
UHJvcGVydHlOb2RlOjpLbm93bkRpcmVjdCk7CisgICAgZW1pdFB1dEludGVybmFsRmllbGQobV9n
ZW5lcmF0b3JSZWdpc3Rlciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTR2VuZXJhdG9yOjpGaWVs
ZDo6TmV4dCksIG5leHRGdW5jdGlvbik7CiAKICAgICAvLyBXZSBkbyBub3Qgc3RvcmUgJ3RoaXMn
IGluIGFycm93IGZ1bmN0aW9uIHdpdGhpbiBjb25zdHJ1Y3RvciwKICAgICAvLyBiZWNhdXNlIGl0
IG1pZ2h0IGJlIG5vdCBpbml0aWFsaXplZCwgaWYgc3VwZXIgaXMgY2FsbGVkIGxhdGVyLgogICAg
IGlmICghKGlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCgpICYmIG1fY29kZUJsb2NrLT5wYXJz
ZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jQXJyb3dGdW5jdGlvbk1vZGUpKQotICAg
ICAgICBlbWl0RGlyZWN0UHV0QnlJZChtX2dlbmVyYXRvclJlZ2lzdGVyLCBwcm9wZXJ0eU5hbWVz
KCkuYnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yVGhpc1ByaXZhdGVOYW1lKCksICZtX3RoaXNSZWdp
c3RlciwgUHJvcGVydHlOb2RlOjpLbm93bkRpcmVjdCk7Ci0KLSAgICBlbWl0RGlyZWN0UHV0QnlJ
ZChtX2dlbmVyYXRvclJlZ2lzdGVyLCBwcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuZ2Vu
ZXJhdG9yU3RhdGVQcml2YXRlTmFtZSgpLCBlbWl0TG9hZChudWxscHRyLCBqc051bWJlcigwKSks
IFByb3BlcnR5Tm9kZTo6S25vd25EaXJlY3QpOwotCi0gICAgZW1pdERpcmVjdFB1dEJ5SWQobV9n
ZW5lcmF0b3JSZWdpc3RlciwgcHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRv
ckZyYW1lUHJpdmF0ZU5hbWUoKSwgZW1pdExvYWQobnVsbHB0ciwganNOdWxsKCkpLCBQcm9wZXJ0
eU5vZGU6Oktub3duRGlyZWN0KTsKKyAgICAgICAgZW1pdFB1dEludGVybmFsRmllbGQobV9nZW5l
cmF0b3JSZWdpc3Rlciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTR2VuZXJhdG9yOjpGaWVsZDo6
VGhpcyksICZtX3RoaXNSZWdpc3Rlcik7CiB9CiAKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRQdXRBc3luY0dlbmVyYXRvckZpZWxkcyhSZWdpc3RlcklEKiBuZXh0RnVuY3Rpb24pCkBAIC0y
ODY4LDYgKzI4NzMsMTggQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdQ
cm9taXNlKFJlZ2lzdGVySUQqIGRzdCwgYm9vbCBpc0ludGVybmFsUHIKICAgICByZXR1cm4gZHN0
OwogfQogCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENyZWF0ZUdlbmVyYXRv
cihSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIG5ld1RhcmdldCkKK3sKKyAgICBPcENyZWF0
ZUdlbmVyYXRvcjo6ZW1pdCh0aGlzLCBkc3QsIG5ld1RhcmdldCk7CisgICAgcmV0dXJuIGRzdDsK
K30KKworUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdHZW5lcmF0b3IoUmVn
aXN0ZXJJRCogZHN0KQoreworICAgIE9wTmV3R2VuZXJhdG9yOjplbWl0KHRoaXMsIGRzdCk7Cisg
ICAgcmV0dXJuIGRzdDsKK30KKwogdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFREWkNoZWNr
KFJlZ2lzdGVySUQqIHRhcmdldCkKIHsKICAgICBPcENoZWNrVGR6OjplbWl0KHRoaXMsIHRhcmdl
dCk7CkBAIC00NTU0LDExICs0NTcxLDExIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0WWllbGQoUmVnaXN0ZXJJRCogYXJndW1lbnQsIEpTQXN5bmNHZW5lcmF0b3JGCiAKICAg
ICBSZWY8TGFiZWw+IG5vcm1hbExhYmVsID0gbmV3TGFiZWwoKTsKICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gY29uZGl0aW9uID0gbmV3VGVtcG9yYXJ5KCk7Ci0gICAgZW1pdEVxdWFsaXR5T3A8T3BT
dHJpY3RlcT4oY29uZGl0aW9uLmdldCgpLCBnZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSwg
ZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0
b3JGdW5jdGlvbjo6R2VuZXJhdG9yUmVzdW1lTW9kZTo6Tm9ybWFsTW9kZSkpKSk7CisgICAgZW1p
dEVxdWFsaXR5T3A8T3BTdHJpY3RlcT4oY29uZGl0aW9uLmdldCgpLCBnZW5lcmF0b3JSZXN1bWVN
b2RlUmVnaXN0ZXIoKSwgZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50
MzJfdD4oSlNHZW5lcmF0b3I6OkdlbmVyYXRvclJlc3VtZU1vZGU6Ok5vcm1hbE1vZGUpKSkpOwog
ICAgIGVtaXRKdW1wSWZUcnVlKGNvbmRpdGlvbi5nZXQoKSwgbm9ybWFsTGFiZWwuZ2V0KCkpOwog
CiAgICAgUmVmPExhYmVsPiB0aHJvd0xhYmVsID0gbmV3TGFiZWwoKTsKLSAgICBlbWl0RXF1YWxp
dHlPcDxPcFN0cmljdGVxPihjb25kaXRpb24uZ2V0KCksIGdlbmVyYXRvclJlc3VtZU1vZGVSZWdp
c3RlcigpLCBlbWl0TG9hZChudWxscHRyLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihK
U0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JSZXN1bWVNb2RlOjpUaHJvd01vZGUpKSkpOwor
ICAgIGVtaXRFcXVhbGl0eU9wPE9wU3RyaWN0ZXE+KGNvbmRpdGlvbi5nZXQoKSwgZ2VuZXJhdG9y
UmVzdW1lTW9kZVJlZ2lzdGVyKCksIGVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0YXRpY19j
YXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpHZW5lcmF0b3JSZXN1bWVNb2RlOjpUaHJvd01vZGUp
KSkpOwogICAgIGVtaXRKdW1wSWZUcnVlKGNvbmRpdGlvbi5nZXQoKSwgdGhyb3dMYWJlbC5nZXQo
KSk7CiAgICAgLy8gUmV0dXJuLgogICAgIHsKQEAgLTQ2NjYsMTAgKzQ2ODMsMTAgQEAgUmVnaXN0
ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWxlZ2F0ZVlpZWxkKFJlZ2lzdGVySUQqIGFy
Z3VtZW50LCBUaHJvd2FibGUKICAgICAgICAgICAgICAgICBSZWY8TGFiZWw+IHJldHVybkxhYmVs
ID0gbmV3TGFiZWwoKTsKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiBjb25kaXRpb24gPSBuZXdUZW1wb3JhcnkoKTsKLSAgICAgICAgICAg
ICAgICAgICAgZW1pdEVxdWFsaXR5T3A8T3BTdHJpY3RlcT4oY29uZGl0aW9uLmdldCgpLCBnZW5l
cmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSwgZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoc3Rh
dGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yUmVzdW1lTW9k
ZTo6Tm9ybWFsTW9kZSkpKSk7CisgICAgICAgICAgICAgICAgICAgIGVtaXRFcXVhbGl0eU9wPE9w
U3RyaWN0ZXE+KGNvbmRpdGlvbi5nZXQoKSwgZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCks
IGVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJh
dG9yOjpHZW5lcmF0b3JSZXN1bWVNb2RlOjpOb3JtYWxNb2RlKSkpKTsKICAgICAgICAgICAgICAg
ICAgICAgZW1pdEp1bXBJZlRydWUoY29uZGl0aW9uLmdldCgpLCBub3JtYWxMYWJlbC5nZXQoKSk7
CiAKLSAgICAgICAgICAgICAgICAgICAgZW1pdEVxdWFsaXR5T3A8T3BTdHJpY3RlcT4oY29uZGl0
aW9uLmdldCgpLCBnZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSwgZW1pdExvYWQobnVsbHB0
ciwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2Vu
ZXJhdG9yUmVzdW1lTW9kZTo6UmV0dXJuTW9kZSkpKSk7CisgICAgICAgICAgICAgICAgICAgIGVt
aXRFcXVhbGl0eU9wPE9wU3RyaWN0ZXE+KGNvbmRpdGlvbi5nZXQoKSwgZ2VuZXJhdG9yUmVzdW1l
TW9kZVJlZ2lzdGVyKCksIGVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGlu
dDMyX3Q+KEpTR2VuZXJhdG9yOjpHZW5lcmF0b3JSZXN1bWVNb2RlOjpSZXR1cm5Nb2RlKSkpKTsK
ICAgICAgICAgICAgICAgICAgICAgZW1pdEp1bXBJZlRydWUoY29uZGl0aW9uLmdldCgpLCByZXR1
cm5MYWJlbC5nZXQoKSk7CiAKICAgICAgICAgICAgICAgICAgICAgLy8gRmFsbHRocm91Z2ggdG8g
VGhyb3dNb2RlLgpAQCAtNDc3MSw3ICs0Nzg4LDEwIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0RGVsZWdhdGVZaWVsZChSZWdpc3RlcklEKiBhcmd1bWVudCwgVGhyb3dhYmxl
CiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2VuZXJhdG9yU3RhdGVDaGFuZ2UoaW50MzJf
dCBzdGF0ZSkKIHsKICAgICBSZWdpc3RlcklEKiBjb21wbGV0ZWRTdGF0ZSA9IGVtaXRMb2FkKG51
bGxwdHIsIGpzTnVtYmVyKHN0YXRlKSk7Ci0gICAgZW1pdFB1dEJ5SWQoZ2VuZXJhdG9yUmVnaXN0
ZXIoKSwgcHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclN0YXRlUHJpdmF0
ZU5hbWUoKSwgY29tcGxldGVkU3RhdGUpOworICAgIGlmIChtX2NvZGVCbG9jay0+cGFyc2VNb2Rl
KCkgPT0gU291cmNlUGFyc2VNb2RlOjpBc3luY0dlbmVyYXRvckJvZHlNb2RlKQorICAgICAgICBl
bWl0UHV0QnlJZChnZW5lcmF0b3JSZWdpc3RlcigpLCBwcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5h
bWVzKCkuZ2VuZXJhdG9yU3RhdGVQcml2YXRlTmFtZSgpLCBjb21wbGV0ZWRTdGF0ZSk7CisgICAg
ZWxzZQorICAgICAgICBlbWl0UHV0SW50ZXJuYWxGaWVsZChnZW5lcmF0b3JSZWdpc3RlcigpLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNHZW5lcmF0b3I6OkZpZWxkOjpTdGF0ZSksIGNvbXBsZXRl
ZFN0YXRlKTsKIH0KIAogYm9vbCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEp1bXBWaWFGaW5hbGx5
SWZOZWVkZWQoaW50IHRhcmdldExhYmVsU2NvcGVEZXB0aCwgTGFiZWwmIGp1bXBUYXJnZXQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmgKaW5kZXggOTRlZWIxMzI2MTA2ZmY2ZGRjZDc0OTMxZGVhMGFiMjkxOTRkZGNjNy4u
N2E1ZjFkNGRlOGUxZmMxMjg5N2IzN2YzNDY3ZmQ1M2QzZDM3ZGI4YyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApA
QCAtMzUsNyArMzUsNyBAQAogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSlNB
c3luY0dlbmVyYXRvckZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNCaWdJbnQuaCIKLSNpbmNsdWRl
ICJKU0dlbmVyYXRvckZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNHZW5lcmF0b3IuaCIKICNpbmNs
dWRlICJKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oIgogI2luY2x1ZGUgIkxhYmVsLmgiCiAj
aW5jbHVkZSAiTGFiZWxTY29wZS5oIgpAQCAtNzI0LDEyICs3MjQsMTQgQEAgbmFtZXNwYWNlIEpT
QyB7CiAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdENyZWF0ZVRoaXMoUmVnaXN0ZXJJRCogZHN0
KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdENyZWF0ZVByb21pc2UoUmVnaXN0ZXJJRCogZHN0
LCBSZWdpc3RlcklEKiBuZXdUYXJnZXQsIGJvb2wgaXNJbnRlcm5hbFByb21pc2UpOworICAgICAg
ICBSZWdpc3RlcklEKiBlbWl0Q3JlYXRlR2VuZXJhdG9yKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0
ZXJJRCogbmV3VGFyZ2V0KTsKICAgICAgICAgdm9pZCBlbWl0VERaQ2hlY2soUmVnaXN0ZXJJRCog
dGFyZ2V0KTsKICAgICAgICAgYm9vbCBuZWVkc1REWkNoZWNrKGNvbnN0IFZhcmlhYmxlJik7CiAg
ICAgICAgIHZvaWQgZW1pdFREWkNoZWNrSWZOZWNlc3NhcnkoY29uc3QgVmFyaWFibGUmLCBSZWdp
c3RlcklEKiB0YXJnZXQsIFJlZ2lzdGVySUQqIHNjb3BlKTsKICAgICAgICAgdm9pZCBsaWZ0VERa
Q2hlY2tJZlBvc3NpYmxlKGNvbnN0IFZhcmlhYmxlJik7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVt
aXROZXdPYmplY3QoUmVnaXN0ZXJJRCogZHN0KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5l
d1Byb21pc2UoUmVnaXN0ZXJJRCogZHN0LCBib29sIGlzSW50ZXJuYWxQcm9taXNlKTsKKyAgICAg
ICAgUmVnaXN0ZXJJRCogZW1pdE5ld0dlbmVyYXRvcihSZWdpc3RlcklEKiBkc3QpOwogICAgICAg
ICBSZWdpc3RlcklEKiBlbWl0TmV3QXJyYXkoUmVnaXN0ZXJJRCogZHN0LCBFbGVtZW50Tm9kZSos
IHVuc2lnbmVkIGxlbmd0aCwgSW5kZXhpbmdUeXBlIHJlY29tbWVuZGVkSW5kZXhpbmdUeXBlKTsg
Ly8gc3RvcHMgYXQgZmlyc3QgZWxpc2lvbgogICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3QXJy
YXlCdWZmZXIoUmVnaXN0ZXJJRCogZHN0LCBKU0ltbXV0YWJsZUJ1dHRlcmZseSosIEluZGV4aW5n
VHlwZSByZWNvbW1lbmRlZEluZGV4aW5nVHlwZSk7CiAgICAgICAgIC8vIEZJWE1FOiBuZXdfYXJy
YXlfd2l0aF9zcHJlYWQgc2hvdWxkIHVzZSBhbiBhcnJheSBhbGxvY2F0aW9uIHByb2ZpbGUgYW5k
IHRha2UgYSByZWNvbW1lbmRlZEluZGV4aW5nVHlwZQpAQCAtODY2LDYgKzg2OCw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBSZWdpc3RlcklEKiBlbWl0VG9JbmRleFN0cmluZyhSZWdpc3Rl
cklEKiBkc3QsIFJlZ2lzdGVySUQqIGluZGV4KTsKIAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0
SXNDZWxsV2l0aFR5cGUoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMsIEpTVHlwZSk7
CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJc0dlbmVyYXRvcihSZWdpc3RlcklEKiBkc3QsIFJl
Z2lzdGVySUQqIHNyYykgeyByZXR1cm4gZW1pdElzQ2VsbFdpdGhUeXBlKGRzdCwgc3JjLCBKU0dl
bmVyYXRvclR5cGUpOyB9CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJc0pTQXJyYXkoUmVnaXN0
ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMpIHsgcmV0dXJuIGVtaXRJc0NlbGxXaXRoVHlwZShk
c3QsIHNyYywgQXJyYXlUeXBlKTsgfQogICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXNQcm9taXNl
KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjKSB7IHJldHVybiBlbWl0SXNDZWxsV2l0
aFR5cGUoZHN0LCBzcmMsIEpTUHJvbWlzZVR5cGUpOyB9CiAgICAgICAgIFJlZ2lzdGVySUQqIGVt
aXRJc1Byb3h5T2JqZWN0KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjKSB7IHJldHVy
biBlbWl0SXNDZWxsV2l0aFR5cGUoZHN0LCBzcmMsIFByb3h5T2JqZWN0VHlwZSk7IH0KQEAgLTk4
OCwxMCArOTkxLDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRHZW5lcmF0
b3JTdGF0ZUNoYW5nZShpbnQzMl90IHN0YXRlKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFlp
ZWxkKFJlZ2lzdGVySUQqIGFyZ3VtZW50LCBKU0FzeW5jR2VuZXJhdG9yRnVuY3Rpb246OkFzeW5j
R2VuZXJhdG9yU3VzcGVuZFJlYXNvbiA9IEpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbjo6QXN5bmNH
ZW5lcmF0b3JTdXNwZW5kUmVhc29uOjpZaWVsZCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRE
ZWxlZ2F0ZVlpZWxkKFJlZ2lzdGVySUQqIGFyZ3VtZW50LCBUaHJvd2FibGVFeHByZXNzaW9uRGF0
YSopOwotICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JTdGF0ZVJlZ2lzdGVyKCkgeyByZXR1
cm4gJm1fcGFyYW1ldGVyc1tzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9u
OjpHZW5lcmF0b3JBcmd1bWVudDo6U3RhdGUpXTsgfQotICAgICAgICBSZWdpc3RlcklEKiBnZW5l
cmF0b3JWYWx1ZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1fcGFyYW1ldGVyc1tzdGF0aWNfY2FzdDxp
bnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JBcmd1bWVudDo6VmFsdWUpXTsg
fQotICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSB7IHJl
dHVybiAmbV9wYXJhbWV0ZXJzW3N0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rp
b246OkdlbmVyYXRvckFyZ3VtZW50OjpSZXN1bWVNb2RlKV07IH0KLSAgICAgICAgUmVnaXN0ZXJJ
RCogZ2VuZXJhdG9yRnJhbWVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbc3RhdGlj
X2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yQXJndW1lbnQ6OkZy
YW1lKV07IH0KKyAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yU3RhdGVSZWdpc3RlcigpIHsg
cmV0dXJuICZtX3BhcmFtZXRlcnNbc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6Okdl
bmVyYXRvckFyZ3VtZW50OjpTdGF0ZSldOyB9CisgICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRv
clZhbHVlUmVnaXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJzW3N0YXRpY19jYXN0PGludDMy
X3Q+KEpTR2VuZXJhdG9yOjpHZW5lcmF0b3JBcmd1bWVudDo6VmFsdWUpXTsgfQorICAgICAgICBS
ZWdpc3RlcklEKiBnZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSB7IHJldHVybiAmbV9wYXJh
bWV0ZXJzW3N0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpHZW5lcmF0b3JBcmd1bWVu
dDo6UmVzdW1lTW9kZSldOyB9CisgICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRvckZyYW1lUmVn
aXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJzW3N0YXRpY19jYXN0PGludDMyX3Q+KEpTR2Vu
ZXJhdG9yOjpHZW5lcmF0b3JBcmd1bWVudDo6RnJhbWUpXTsgfQogCiAgICAgICAgIENvZGVUeXBl
IGNvZGVUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlVHlwZTsgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggNDg5
MDllZjliMDRkMTVhZGM0YTAyZDI2Yzc1ZjhjYzVjOWMxNTNiMS4uODc3OGZiNjY0Njk1OTljZTI1
YjBiNjg5ZDBkMzkwZWEzMDlhNmRjMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1
ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9u
LmgiCi0jaW5jbHVkZSAiSlNHZW5lcmF0b3JGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTR2VuZXJh
dG9yLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU0ltbXV0YWJs
ZUJ1dHRlcmZseS5oIgogI2luY2x1ZGUgIkxhYmVsU2NvcGUuaCIKQEAgLTEwMjAsNiArMTAyMCwy
MCBAQCBzdGF0aWMgSlNQcm9taXNlOjpGaWVsZCBwcm9taXNlSW50ZXJuYWxGaWVsZEluZGV4KEJ5
dGVjb2RlSW50cmluc2ljTm9kZSogbm9kZSkKICAgICByZXR1cm4gSlNQcm9taXNlOjpGaWVsZDo6
RmxhZ3M7CiB9CiAKK3N0YXRpYyBKU0dlbmVyYXRvcjo6RmllbGQgZ2VuZXJhdG9ySW50ZXJuYWxG
aWVsZEluZGV4KEJ5dGVjb2RlSW50cmluc2ljTm9kZSogbm9kZSkKK3sKKyAgICBpZiAobm9kZS0+
ZW1pdHRlcigpID09ICZCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dlbmVy
YXRvckZpZWxkU3RhdGUpCisgICAgICAgIHJldHVybiBKU0dlbmVyYXRvcjo6RmllbGQ6OlN0YXRl
OworICAgIGlmIChub2RlLT5lbWl0dGVyKCkgPT0gJkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1p
dF9pbnRyaW5zaWNfZ2VuZXJhdG9yRmllbGROZXh0KQorICAgICAgICByZXR1cm4gSlNHZW5lcmF0
b3I6OkZpZWxkOjpOZXh0OworICAgIGlmIChub2RlLT5lbWl0dGVyKCkgPT0gJkJ5dGVjb2RlSW50
cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfZ2VuZXJhdG9yRmllbGRUaGlzKQorICAgICAgICBy
ZXR1cm4gSlNHZW5lcmF0b3I6OkZpZWxkOjpUaGlzOworICAgIGlmIChub2RlLT5lbWl0dGVyKCkg
PT0gJkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfZ2VuZXJhdG9yRmllbGRG
cmFtZSkKKyAgICAgICAgcmV0dXJuIEpTR2VuZXJhdG9yOjpGaWVsZDo6RnJhbWU7CisgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gSlNHZW5lcmF0b3I6OkZpZWxk
OjpTdGF0ZTsKK30KKwogUmVnaXN0ZXJJRCogQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2lu
dHJpbnNpY19nZXRQcm9taXNlSW50ZXJuYWxGaWVsZChCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7CiAgICAgQXJndW1lbnRMaXN0Tm9kZSogbm9kZSA9IG1f
YXJncy0+bV9saXN0Tm9kZTsKQEAgLTEwMzMsNiArMTA0NywxOSBAQCBSZWdpc3RlcklEKiBCeXRl
Y29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dldFByb21pc2VJbnRlcm5hbEZpZWxk
KEJ5dGVjbwogICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdEdldEludGVybmFsRmllbGQoZ2VuZXJh
dG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSwgaW5kZXgpOwogfQogCitSZWdp
c3RlcklEKiBCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dldEdlbmVyYXRv
ckludGVybmFsRmllbGQoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCog
ZHN0KQoreworICAgIEFyZ3VtZW50TGlzdE5vZGUqIG5vZGUgPSBtX2FyZ3MtPm1fbGlzdE5vZGU7
CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGJhc2UgPSBnZW5lcmF0b3IuZW1pdE5vZGUobm9kZSk7
CisgICAgbm9kZSA9IG5vZGUtPm1fbmV4dDsKKyAgICBSRUxFQVNFX0FTU0VSVChub2RlLT5tX2V4
cHItPmlzQnl0ZWNvZGVJbnRyaW5zaWNOb2RlKCkpOworICAgIHVuc2lnbmVkIGluZGV4ID0gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGdlbmVyYXRvckludGVybmFsRmllbGRJbmRleChzdGF0aWNfY2Fz
dDxCeXRlY29kZUludHJpbnNpY05vZGUqPihub2RlLT5tX2V4cHIpKSk7CisgICAgQVNTRVJUKGlu
ZGV4IDwgSlNHZW5lcmF0b3I6Om51bWJlck9mSW50ZXJuYWxGaWVsZHMpOworICAgIEFTU0VSVCgh
bm9kZS0+bV9uZXh0KTsKKworICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdEdldEludGVybmFsRmll
bGQoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSwgaW5kZXgpOwor
fQorCiBSZWdpc3RlcklEKiBCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2Fy
Z3VtZW50KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsK
ICAgICBBcmd1bWVudExpc3ROb2RlKiBub2RlID0gbV9hcmdzLT5tX2xpc3ROb2RlOwpAQCAtMTEx
OCw2ICsxMTQ1LDIyIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9p
bnRyaW5zaWNfcHV0UHJvbWlzZUludGVybmFsRmllbGQoQnl0ZWNvCiAgICAgcmV0dXJuIGdlbmVy
YXRvci5tb3ZlKGRzdCwgZ2VuZXJhdG9yLmVtaXRQdXRJbnRlcm5hbEZpZWxkKGJhc2UuZ2V0KCks
IGluZGV4LCB2YWx1ZS5nZXQoKSkpOwogfQogCitSZWdpc3RlcklEKiBCeXRlY29kZUludHJpbnNp
Y05vZGU6OmVtaXRfaW50cmluc2ljX3B1dEdlbmVyYXRvckludGVybmFsRmllbGQoQnl0ZWNvZGVH
ZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQoreworICAgIEFyZ3VtZW50TGlz
dE5vZGUqIG5vZGUgPSBtX2FyZ3MtPm1fbGlzdE5vZGU7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IGJhc2UgPSBnZW5lcmF0b3IuZW1pdE5vZGUobm9kZSk7CisgICAgbm9kZSA9IG5vZGUtPm1fbmV4
dDsKKyAgICBSRUxFQVNFX0FTU0VSVChub2RlLT5tX2V4cHItPmlzQnl0ZWNvZGVJbnRyaW5zaWNO
b2RlKCkpOworICAgIHVuc2lnbmVkIGluZGV4ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGdlbmVy
YXRvckludGVybmFsRmllbGRJbmRleChzdGF0aWNfY2FzdDxCeXRlY29kZUludHJpbnNpY05vZGUq
Pihub2RlLT5tX2V4cHIpKSk7CisgICAgQVNTRVJUKGluZGV4IDwgSlNHZW5lcmF0b3I6Om51bWJl
ck9mSW50ZXJuYWxGaWVsZHMpOworICAgIG5vZGUgPSBub2RlLT5tX25leHQ7CisgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXROb2RlKG5vZGUpOworCisgICAgQVNT
RVJUKCFub2RlLT5tX25leHQpOworCisgICAgcmV0dXJuIGdlbmVyYXRvci5tb3ZlKGRzdCwgZ2Vu
ZXJhdG9yLmVtaXRQdXRJbnRlcm5hbEZpZWxkKGJhc2UuZ2V0KCksIGluZGV4LCB2YWx1ZS5nZXQo
KSkpOworfQorCiBSZWdpc3RlcklEKiBCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmlu
c2ljX3RhaWxDYWxsRm9yd2FyZEFyZ3VtZW50cyhCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9y
LCBSZWdpc3RlcklEKiBkc3QpCiB7CiAgICAgQXJndW1lbnRMaXN0Tm9kZSogbm9kZSA9IG1fYXJn
cy0+bV9saXN0Tm9kZTsKQEAgLTEyMzEsNiArMTI3NCwxNSBAQCBSZWdpc3RlcklEKiBCeXRlY29k
ZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2lkV2l0aFByb2ZpbGUoQnl0ZWNvZGVHZW5l
cmF0bwogCiAgICAgcmV0dXJuIGdlbmVyYXRvci5tb3ZlKGRzdCwgZ2VuZXJhdG9yLmVtaXRJZFdp
dGhQcm9maWxlKGlkVmFsdWUuZ2V0KCksIHNwZWN1bGF0aW9uKSk7CiB9CisKK1JlZ2lzdGVySUQq
IEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfaXNHZW5lcmF0b3IoSlNDOjpC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBKU0M6OlJlZ2lzdGVySUQqIGRzdCkKK3sKKyAg
ICBBcmd1bWVudExpc3ROb2RlKiBub2RlID0gbV9hcmdzLT5tX2xpc3ROb2RlOworICAgIFJlZlB0
cjxSZWdpc3RlcklEPiBzcmMgPSBnZW5lcmF0b3IuZW1pdE5vZGUobm9kZSk7CisgICAgQVNTRVJU
KCFub2RlLT5tX25leHQpOworCisgICAgcmV0dXJuIGdlbmVyYXRvci5tb3ZlKGRzdCwgZ2VuZXJh
dG9yLmVtaXRJc0dlbmVyYXRvcihnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIHNyYy5n
ZXQoKSkpOworfQogICAgIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0
X2ludHJpbnNpY19pc0pTQXJyYXkoSlNDOjpCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBK
U0M6OlJlZ2lzdGVySUQqIGRzdCkKIHsKQEAgLTM5OTMsNyArNDA0NSw3IEBAIHZvaWQgRnVuY3Rp
b25Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0
ZXJJRCopCiAgICAgICAgIGdlbmVyYXRvci5tb3ZlKGFyZ3MuYXJndW1lbnRSZWdpc3Rlcihhcmd1
bWVudENvdW50KyspLCBnZW5lcmF0b3IuZ2VuZXJhdG9yUmVnaXN0ZXIoKSk7CiAgICAgICAgIGdl
bmVyYXRvci5tb3ZlKGFyZ3MuYXJndW1lbnRSZWdpc3Rlcihhcmd1bWVudENvdW50KyspLCBnZW5l
cmF0b3IucHJvbWlzZVJlZ2lzdGVyKCkpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdExvYWQoYXJn
cy5hcmd1bWVudFJlZ2lzdGVyKGFyZ3VtZW50Q291bnQrKyksIGpzVW5kZWZpbmVkKCkpOwotICAg
ICAgICBnZW5lcmF0b3IuZW1pdExvYWQoYXJncy5hcmd1bWVudFJlZ2lzdGVyKGFyZ3VtZW50Q291
bnQrKyksIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246
OkdlbmVyYXRvclJlc3VtZU1vZGU6Ok5vcm1hbE1vZGUpKSk7CisgICAgICAgIGdlbmVyYXRvci5l
bWl0TG9hZChhcmdzLmFyZ3VtZW50UmVnaXN0ZXIoYXJndW1lbnRDb3VudCsrKSwganNOdW1iZXIo
c3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6OkdlbmVyYXRvclJlc3VtZU1vZGU6Ok5v
cm1hbE1vZGUpKSk7CiAgICAgICAgIC8vIEpTVGV4dFBvc2l0aW9uKGludCBfbGluZSwgaW50IF9v
ZmZzZXQsIGludCBfbGluZVN0YXJ0T2Zmc2V0KQogICAgICAgICBKU1RleHRQb3NpdGlvbiBkaXZv
dChmaXJzdExpbmUoKSwgc3RhcnRPZmZzZXQoKSwgbGluZVN0YXJ0T2Zmc2V0KCkpOwogCkBAIC00
MDEwLDExICs0MDYyLDExIEBAIHZvaWQgRnVuY3Rpb25Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCiAgICAgICAgIFJlZjxMYWJlbD4g
Z2VuZXJhdG9yQm9keUxhYmVsID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CiAgICAgICAgIHsKICAg
ICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBjb25kaXRpb24gPSBnZW5lcmF0b3IubmV3VGVt
cG9yYXJ5KCk7Ci0gICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEVxdWFsaXR5T3A8T3BTdHJpY3Rl
cT4oY29uZGl0aW9uLmdldCgpLCBnZW5lcmF0b3IuZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVy
KCksIGdlbmVyYXRvci5lbWl0TG9hZChudWxscHRyLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQz
Ml90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JSZXN1bWVNb2RlOjpOb3JtYWxNb2Rl
KSkpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0RXF1YWxpdHlPcDxPcFN0cmljdGVxPihj
b25kaXRpb24uZ2V0KCksIGdlbmVyYXRvci5nZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSwg
Z2VuZXJhdG9yLmVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+
KEpTR2VuZXJhdG9yOjpHZW5lcmF0b3JSZXN1bWVNb2RlOjpOb3JtYWxNb2RlKSkpKTsKICAgICAg
ICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcElmVHJ1ZShjb25kaXRpb24uZ2V0KCksIGdlbmVyYXRv
ckJvZHlMYWJlbC5nZXQoKSk7CiAKICAgICAgICAgICAgIFJlZjxMYWJlbD4gdGhyb3dMYWJlbCA9
IGdlbmVyYXRvci5uZXdMYWJlbCgpOwotICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRFcXVhbGl0
eU9wPE9wU3RyaWN0ZXE+KGNvbmRpdGlvbi5nZXQoKSwgZ2VuZXJhdG9yLmdlbmVyYXRvclJlc3Vt
ZU1vZGVSZWdpc3RlcigpLCBnZW5lcmF0b3IuZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoc3Rh
dGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yUmVzdW1lTW9k
ZTo6VGhyb3dNb2RlKSkpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0RXF1YWxpdHlPcDxP
cFN0cmljdGVxPihjb25kaXRpb24uZ2V0KCksIGdlbmVyYXRvci5nZW5lcmF0b3JSZXN1bWVNb2Rl
UmVnaXN0ZXIoKSwgZ2VuZXJhdG9yLmVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0YXRpY19j
YXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpHZW5lcmF0b3JSZXN1bWVNb2RlOjpUaHJvd01vZGUp
KSkpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZUcnVlKGNvbmRpdGlvbi5nZXQo
KSwgdGhyb3dMYWJlbC5nZXQoKSk7CiAKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UmV0dXJu
KGdlbmVyYXRvci5nZW5lcmF0b3JWYWx1ZVJlZ2lzdGVyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCmlu
ZGV4IDliNmJmMDM1OTc4Nzk3YTNlMzNhNGM4NDk1MTQwMzE0MGM1MzFkMTMuLmUzMDcxYzViZjMy
ZWQxMWY5NWZlMTE3ZTNmMzYwOGQxYWI0ZDc4MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTM3
LDYgKzM3LDcgQEAKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJIYXNoTWFw
SW1wbC5oIgogI2luY2x1ZGUgIkpJVE9wZXJhdGlvbnMuaCIKKyNpbmNsdWRlICJKU0dlbmVyYXRv
ci5oIgogI2luY2x1ZGUgIkpTSW1tdXRhYmxlQnV0dGVyZmx5LmgiCiAjaW5jbHVkZSAiSlNJbnRl
cm5hbFByb21pc2UuaCIKICNpbmNsdWRlICJKU0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmgi
CkBAIC0xNTY1LDYgKzE1NjYsMTMgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0
U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAg
ICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgSXNDZWxsV2l0aFR5cGU6CisgICAgICAgICAgICBp
ZiAobm9kZS0+c3BlY3VsYXRlZFR5cGVGb3JRdWVyeSgpID09IFNwZWNDZWxsKSB7CisgICAgICAg
ICAgICAgICAgaWYgKCEoY2hpbGQubV90eXBlICYgU3BlY0NlbGwpKSB7CisgICAgICAgICAgICAg
ICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzQm9vbGVhbihmYWxzZSkpOworICAgICAgICAgICAg
ICAgICAgICBjb25zdGFudFdhc1NldCA9IHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCEoY2hpbGQu
bV90eXBlICYgfm5vZGUtPnNwZWN1bGF0ZWRUeXBlRm9yUXVlcnkoKSkpIHsKICAgICAgICAgICAg
ICAgICBzZXRDb25zdGFudChub2RlLCBqc0Jvb2xlYW4odHJ1ZSkpOwogICAgICAgICAgICAgICAg
IGNvbnN0YW50V2FzU2V0ID0gdHJ1ZTsKQEAgLTI2NzUsMTAgKzI2ODMsNDIgQEAgYm9vbCBBYnN0
cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWdu
ZWQgY2xvYmJlckxpbWkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBDcmVhdGVH
ZW5lcmF0b3I6IHsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgIGlmIChK
U1ZhbHVlIGJhc2UgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3ZhbHVlKSB7CisgICAgICAg
ICAgICBpZiAoYXV0byogZnVuY3Rpb24gPSBqc0R5bmFtaWNDYXN0PEpTRnVuY3Rpb24qPihtX2dy
YXBoLm1fdm0sIGJhc2UpKSB7CisgICAgICAgICAgICAgICAgaWYgKEZ1bmN0aW9uUmFyZURhdGEq
IHJhcmVEYXRhID0gZnVuY3Rpb24tPnJhcmVEYXRhKCkpIHsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKHJhcmVEYXRhLT5hbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnRTZXQoKS5pc1N0aWxsVmFs
aWQoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBy
YXJlRGF0YS0+aW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25TdHJ1Y3R1cmUoKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChzdHJ1Y3R1cmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAmJiBzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpID09IEpTR2VuZXJhdG9yOjppbmZvKCkKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAmJiBzdHJ1Y3R1cmUtPmdsb2JhbE9iamVjdCgpID09IGds
b2JhbE9iamVjdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIHJhcmVEYXRhLT5hbGxv
Y2F0aW9uUHJvZmlsZVdhdGNocG9pbnRTZXQoKS5pc1N0aWxsVmFsaWQoKSkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguZnJlZXplKHJhcmVEYXRhKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtX2dyYXBoLndhdGNocG9pbnRzKCkuYWRkTGF6aWx5KHJhcmVEYXRh
LT5hbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnRTZXQoKSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbV9zdGF0ZS5zZXRGb3VuZENvbnN0YW50cyh0cnVlKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkaWRGb2xkQ2xvYmJlcldvcmxkKCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2V0Rm9yTm9kZShub2RlLCBzdHJ1Y3R1cmUpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgICAgIGNsb2JiZXJXb3JsZCgpOworICAgICAgICBzZXRUeXBlRm9yTm9kZShub2RlLCBTcGVj
T2JqZWN0T3RoZXIpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIE5ld1Byb21p
c2U6CiAgICAgICAgIEFTU0VSVCghIW5vZGUtPnN0cnVjdHVyZSgpLmdldCgpKTsKICAgICAgICAg
c2V0Rm9yTm9kZShub2RlLCBub2RlLT5zdHJ1Y3R1cmUoKSk7CiAgICAgICAgIGJyZWFrOworCisg
ICAgY2FzZSBOZXdHZW5lcmF0b3I6CisgICAgICAgIEFTU0VSVCghIW5vZGUtPnN0cnVjdHVyZSgp
LmdldCgpKTsKKyAgICAgICAgc2V0Rm9yTm9kZShub2RlLCBub2RlLT5zdHJ1Y3R1cmUoKSk7Cisg
ICAgICAgIGJyZWFrOwogICAgICAgICAKICAgICBjYXNlIE5ld09iamVjdDoKICAgICAgICAgQVNT
RVJUKCEhbm9kZS0+c3RydWN0dXJlKCkuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCAyYzgyYjFlOTNiZDFmZDUyY2VkNTUw
NGE0MWJhZWM5YTVkOWI5MzkyLi4zZTU0MjgxZTM3NjFkZDAwMGNiNGM2ZmJhMTBkMDFiN2Y3MmI5
YThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFy
c2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2Vy
LmNwcApAQCAtNDkzOSw2ICs0OTM5LDUyIEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxv
Y2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9jcmVhdGVfcHJv
bWlzZSk7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIG9wX2NyZWF0ZV9nZW5lcmF0b3I6IHsK
KyAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihjdXJyZW50Tm9kZU9yaWdpbigpLnNlbWFudGljKTsKKyAgICAgICAgICAgIGF1
dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wQ3JlYXRlR2VuZXJhdG9yPigp
OworICAgICAgICAgICAgTm9kZSogY2FsbGVlID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihieXRlY29k
ZS5tX2NhbGxlZSkpOworCisgICAgICAgICAgICBib29sIGFscmVhZHlFbWl0dGVkID0gZmFsc2U7
CisKKyAgICAgICAgICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gY2FsbGVlLT5keW5hbWljQ2Fz
dENvbnN0YW50PEpTRnVuY3Rpb24qPigqbV92bSk7CisgICAgICAgICAgICBpZiAoIWZ1bmN0aW9u
KSB7CisgICAgICAgICAgICAgICAgSlNDZWxsKiBjYWNoZWRGdW5jdGlvbiA9IGJ5dGVjb2RlLm1l
dGFkYXRhKGNvZGVCbG9jaykubV9jYWNoZWRDYWxsZWUudW52YWxpZGF0ZWRHZXQoKTsKKyAgICAg
ICAgICAgICAgICBpZiAoY2FjaGVkRnVuY3Rpb24KKyAgICAgICAgICAgICAgICAgICAgJiYgY2Fj
aGVkRnVuY3Rpb24gIT0gSlNDZWxsOjpzZWVuTXVsdGlwbGVDYWxsZWVPYmplY3RzKCkKKyAgICAg
ICAgICAgICAgICAgICAgJiYgIW1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhp
dFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZENlbGwpKSB7CisgICAgICAgICAgICAgICAgICAgIEFT
U0VSVChjYWNoZWRGdW5jdGlvbi0+aW5oZXJpdHM8SlNGdW5jdGlvbj4oKm1fdm0pKTsKKworICAg
ICAgICAgICAgICAgICAgICBGcm96ZW5WYWx1ZSogZnJvemVuID0gbV9ncmFwaC5mcmVlemUoY2Fj
aGVkRnVuY3Rpb24pOworICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKENoZWNrQ2VsbCwg
T3BJbmZvKGZyb3plbiksIGNhbGxlZSk7CisKKyAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24g
PSBzdGF0aWNfY2FzdDxKU0Z1bmN0aW9uKj4oY2FjaGVkRnVuY3Rpb24pOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGZ1bmN0aW9uKSB7CisgICAg
ICAgICAgICAgICAgaWYgKEZ1bmN0aW9uUmFyZURhdGEqIHJhcmVEYXRhID0gZnVuY3Rpb24tPnJh
cmVEYXRhKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHJhcmVEYXRhLT5hbGxvY2F0aW9u
UHJvZmlsZVdhdGNocG9pbnRTZXQoKS5pc1N0aWxsVmFsaWQoKSkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSByYXJlRGF0YS0+aW50ZXJuYWxGdW5jdGlv
bkFsbG9jYXRpb25TdHJ1Y3R1cmUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdHJ1
Y3R1cmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBzdHJ1Y3R1cmUtPmNsYXNzSW5m
bygpID09IEpTR2VuZXJhdG9yOjppbmZvKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAm
JiBzdHJ1Y3R1cmUtPmdsb2JhbE9iamVjdCgpID09IGdsb2JhbE9iamVjdAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICYmIHJhcmVEYXRhLT5hbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnRT
ZXQoKS5pc1N0aWxsVmFsaWQoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3Jh
cGguZnJlZXplKHJhcmVEYXRhKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBo
LndhdGNocG9pbnRzKCkuYWRkTGF6aWx5KHJhcmVEYXRhLT5hbGxvY2F0aW9uUHJvZmlsZVdhdGNo
cG9pbnRTZXQoKSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgY2FsbGVl
IGlzIHN0aWxsIGxpdmUgdXAgdG8gdGhpcyBwb2ludC4KKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBhZGRUb0dyYXBoKFBoYW50b20sIGNhbGxlZSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2RzdCksIGFkZFRvR3JhcGgoTmV3
R2VuZXJhdG9yLCBPcEluZm8obV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShzdHJ1Y3R1cmUpKSkp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFscmVhZHlFbWl0dGVkID0gdHJ1ZTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghYWxyZWFkeUVtaXR0ZWQp
CisgICAgICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2RzdCksIGFk
ZFRvR3JhcGgoQ3JlYXRlR2VuZXJhdG9yLCBjYWxsZWUpKTsKKyAgICAgICAgICAgIE5FWFRfT1BD
T0RFKG9wX2NyZWF0ZV9nZW5lcmF0b3IpOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBvcF9u
ZXdfb2JqZWN0OiB7CiAgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0
aW9uLT5hczxPcE5ld09iamVjdD4oKTsKICAgICAgICAgICAgIHNldChieXRlY29kZS5tX2RzdCwK
QEAgLTQ5NTMsNiArNDk5OSwxMyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVu
c2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLm1fZHN0LCBhZGRUb0dyYXBo
KE5ld1Byb21pc2UsIE9wSW5mbyhtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKGJ5dGVjb2RlLm1f
aXNJbnRlcm5hbFByb21pc2UgPyBnbG9iYWxPYmplY3QtPmludGVybmFsUHJvbWlzZVN0cnVjdHVy
ZSgpIDogZ2xvYmFsT2JqZWN0LT5wcm9taXNlU3RydWN0dXJlKCkpKSwgT3BJbmZvKGJ5dGVjb2Rl
Lm1faXNJbnRlcm5hbFByb21pc2UpKSk7CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9uZXdf
cHJvbWlzZSk7CiAgICAgICAgIH0KKworICAgICAgICBjYXNlIG9wX25ld19nZW5lcmF0b3I6IHsK
KyAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wTmV3
R2VuZXJhdG9yPigpOworICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGN1cnJlbnROb2RlT3JpZ2luKCkuc2VtYW50aWMpOwor
ICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLm1fZHN0LCBhZGRUb0dyYXBoKE5ld0dlbmVyYXRvciwg
T3BJbmZvKG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5nZW5lcmF0b3JT
dHJ1Y3R1cmUoKSkpKSk7CisgICAgICAgICAgICBORVhUX09QQ09ERShvcF9uZXdfZ2VuZXJhdG9y
KTsKKyAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgIGNhc2Ugb3BfbmV3X2FycmF5OiB7
CiAgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcE5l
d0FycmF5PigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBh
YmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMu
Y3BwCmluZGV4IGMwZWU5OGFlYTgzOGQ3MjU2ZTZiNzU0YjU0NTc0YmI4ZDZlOWY5ZmEuLjcxZWM3
ZjE2Mjg0OTVlYjJjODQwNDU5NTE3ODU3MTAyZjFkOGU0MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKQEAgLTExNyw2ICsxMTcsNyBAQCBDYXBh
YmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsKE9wY29kZUlEIG9wY29kZUlELCBDb2RlQmxvY2sq
IGNvZGVCbG9jaywgY29uc3QgSQogICAgIGNhc2Ugb3BfY2hlY2tfdGR6OgogICAgIGNhc2Ugb3Bf
Y3JlYXRlX3RoaXM6CiAgICAgY2FzZSBvcF9jcmVhdGVfcHJvbWlzZToKKyAgICBjYXNlIG9wX2Ny
ZWF0ZV9nZW5lcmF0b3I6CiAgICAgY2FzZSBvcF9iaXRub3Q6CiAgICAgY2FzZSBvcF9iaXRhbmQ6
CiAgICAgY2FzZSBvcF9iaXRvcjoKQEAgLTIxMiw2ICsyMTMsNyBAQCBDYXBhYmlsaXR5TGV2ZWwg
Y2FwYWJpbGl0eUxldmVsKE9wY29kZUlEIG9wY29kZUlELCBDb2RlQmxvY2sqIGNvZGVCbG9jaywg
Y29uc3QgSQogICAgIGNhc2Ugb3BfZW5kOgogICAgIGNhc2Ugb3BfbmV3X29iamVjdDoKICAgICBj
YXNlIG9wX25ld19wcm9taXNlOgorICAgIGNhc2Ugb3BfbmV3X2dlbmVyYXRvcjoKICAgICBjYXNl
IG9wX25ld19hcnJheToKICAgICBjYXNlIG9wX25ld19hcnJheV93aXRoX3NpemU6CiAgICAgY2Fz
ZSBvcF9uZXdfYXJyYXlfYnVmZmVyOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDbG9iYmVyaXplLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2Ji
ZXJpemUuaAppbmRleCBjMWI3YTBiYzIyMWNmNDg0MWM2ZDQzMWFjNGU1Y2U1YWRhMWY3MWEwLi5i
OGMxNzFkM2E3NmNkYzMzODMyOWQ4OTFhZWI1YmUwNzZiMjRkZjYzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaApAQCAtNjY3LDYgKzY2Nyw3IEBAIHZvaWQgY2xv
YmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFk
LCBjb25zdCBXcml0ZUZ1CiAgICAgY2FzZSBOdW1iZXJUb1N0cmluZ1dpdGhSYWRpeDoKICAgICBj
YXNlIENyZWF0ZVRoaXM6CiAgICAgY2FzZSBDcmVhdGVQcm9taXNlOgorICAgIGNhc2UgQ3JlYXRl
R2VuZXJhdG9yOgogICAgIGNhc2UgSW5zdGFuY2VPZjoKICAgICBjYXNlIFN0cmluZ1ZhbHVlT2Y6
CiAgICAgY2FzZSBPYmplY3RLZXlzOgpAQCAtMTU2NSw2ICsxNTY2LDcgQEAgdm9pZCBjbG9iYmVy
aXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNv
bnN0IFdyaXRlRnUKIAogICAgIGNhc2UgTmV3T2JqZWN0OgogICAgIGNhc2UgTmV3UHJvbWlzZToK
KyAgICBjYXNlIE5ld0dlbmVyYXRvcjoKICAgICBjYXNlIE5ld1JlZ2V4cDoKICAgICBjYXNlIE5l
d1N5bWJvbDoKICAgICBjYXNlIE5ld1N0cmluZ09iamVjdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHAKaW5kZXggMzcwZmQxZGMyYzVj
MTQ3NmM3YjVhNTNjZmRjMmRiN2MxZjRlMDFjNC4uZDJmN2JhNDc4ZDhlYzgzNGNkMjUwOGQ1M2Jk
OWZhMTRkMjgwMDkwZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
bG9iYmVyc0V4aXRTdGF0ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
bG9iYmVyc0V4aXRTdGF0ZS5jcHAKQEAgLTU4LDYgKzU4LDcgQEAgYm9vbCBjbG9iYmVyc0V4aXRT
dGF0ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBBcnJheWlmeToKICAgICBj
YXNlIE5ld09iamVjdDoKICAgICBjYXNlIE5ld1Byb21pc2U6CisgICAgY2FzZSBOZXdHZW5lcmF0
b3I6CiAgICAgY2FzZSBOZXdSZWdleHA6CiAgICAgY2FzZSBOZXdTeW1ib2w6CiAgICAgY2FzZSBO
ZXdTdHJpbmdPYmplY3Q6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCmluZGV4IDk5ZDg3NWU2NmE2YjcwZmJlNTI4ODFlMDAx
MTdhNzA4YmVhNDNiZDAuLmYzZjVjYjYwZDg4YWM1YzY0NTJkZGYxNWJlNGM0NWRmZTEwOGQ5YTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5n
UGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xk
aW5nUGhhc2UuY3BwCkBAIC03NzgsNiArNzc4LDMwIEBAIGNsYXNzIENvbnN0YW50Rm9sZGluZ1Bo
YXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IH0KIAorICAgICAgICAgICAgY2FzZSBDcmVhdGVHZW5lcmF0b3I6IHsKKyAgICAgICAgICAgICAg
ICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgICAgICAgICBpZiAoSlNWYWx1ZSBiYXNl
ID0gbV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3ZhbHVlKSB7CisgICAgICAgICAg
ICAgICAgICAgIGlmIChhdXRvKiBmdW5jdGlvbiA9IGpzRHluYW1pY0Nhc3Q8SlNGdW5jdGlvbio+
KG1fZ3JhcGgubV92bSwgYmFzZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChGdW5j
dGlvblJhcmVEYXRhKiByYXJlRGF0YSA9IGZ1bmN0aW9uLT5yYXJlRGF0YSgpKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKHJhcmVEYXRhLT5hbGxvY2F0aW9uUHJvZmlsZVdhdGNo
cG9pbnRTZXQoKS5pc1N0aWxsVmFsaWQoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHJhcmVEYXRhLT5pbnRlcm5hbEZ1bmN0aW9uQWxs
b2NhdGlvblN0cnVjdHVyZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
c3RydWN0dXJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBzdHJ1Y3R1
cmUtPmNsYXNzSW5mbygpID09IEpTR2VuZXJhdG9yOjppbmZvKCkKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICYmIHN0cnVjdHVyZS0+Z2xvYmFsT2JqZWN0KCkgPT0gZ2xvYmFs
T2JqZWN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiByYXJlRGF0YS0+
YWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50U2V0KCkuaXNTdGlsbFZhbGlkKCkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguZnJlZXplKHJhcmVEYXRhKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgud2F0Y2hwb2ludHMo
KS5hZGRMYXppbHkocmFyZURhdGEtPmFsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludFNldCgpKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb05ld0dl
bmVyYXRvcihtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHN0cnVjdHVyZSkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgY2FzZSBPYmpl
Y3RDcmVhdGU6IHsKICAgICAgICAgICAgICAgICBpZiAoSlNWYWx1ZSBiYXNlID0gbV9zdGF0ZS5m
b3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3ZhbHVlKSB7CiAgICAgICAgICAgICAgICAgICAgIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdEb2VzR0MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3Bw
CmluZGV4IGZiMzEyMmI3YzI2NWQzYjhlZDFhNmEwMDZiMmRjODI0YTVlNThkNzUuLmJlYTFlMTY2
ZTQ5ZTZmZGJhMDM1Nzc1OGYwNWNlMzU4MWVmY2JhZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0RvZXNHQy5jcHAKQEAgLTMzMiw2ICszMzIsNyBAQCBib29sIGRvZXNHQyhHcmFwaCYg
Z3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBUcnlHZXRCeUlkOgogICAgIGNhc2UgQ3JlYXRl
VGhpczoKICAgICBjYXNlIENyZWF0ZVByb21pc2U6CisgICAgY2FzZSBDcmVhdGVHZW5lcmF0b3I6
CiAgICAgY2FzZSBPYmplY3RDcmVhdGU6CiAgICAgY2FzZSBPYmplY3RLZXlzOgogICAgIGNhc2Ug
QWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2U6CkBAIC0zNDAsNiArMzQxLDcgQEAgYm9vbCBkb2VzR0Mo
R3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgQXJyYXlpZnlUb1N0cnVjdHVyZToK
ICAgICBjYXNlIE5ld09iamVjdDoKICAgICBjYXNlIE5ld1Byb21pc2U6CisgICAgY2FzZSBOZXdH
ZW5lcmF0b3I6CiAgICAgY2FzZSBOZXdBcnJheToKICAgICBjYXNlIE5ld0FycmF5V2l0aFNwcmVh
ZDoKICAgICBjYXNlIFNwcmVhZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRml4dXBQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVw
UGhhc2UuY3BwCmluZGV4IGU0NWFjNWMxZTY0YzczZmUyNjg5YzRlMzhlNGVlMmIxMjVkYzM3MWQu
LmE1MDFjZGQ4NDNlMTBjNGVmMjg4OWM0MDU3MGUwMDBkYjIxNjQ5NmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcApAQCAtMTY0Niw2ICsxNjQ2LDcgQEAg
Y2xhc3MgRml4dXBQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgIGNhc2UgQ2hlY2tDZWxs
OgogICAgICAgICBjYXNlIENyZWF0ZVRoaXM6CiAgICAgICAgIGNhc2UgQ3JlYXRlUHJvbWlzZToK
KyAgICAgICAgY2FzZSBDcmVhdGVHZW5lcmF0b3I6CiAgICAgICAgIGNhc2UgR2V0QnV0dGVyZmx5
OiB7CiAgICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAg
ICAgICAgIGJyZWFrOwpAQCAtMjQwOCw2ICsyNDA5LDcgQEAgY2xhc3MgRml4dXBQaGFzZSA6IHB1
YmxpYyBQaGFzZSB7CiAgICAgICAgIGNhc2UgUHJvZmlsZUNvbnRyb2xGbG93OgogICAgICAgICBj
YXNlIE5ld09iamVjdDoKICAgICAgICAgY2FzZSBOZXdQcm9taXNlOgorICAgICAgICBjYXNlIE5l
d0dlbmVyYXRvcjoKICAgICAgICAgY2FzZSBOZXdSZWdleHA6CiAgICAgICAgIGNhc2UgRGVsZXRl
QnlJZDoKICAgICAgICAgY2FzZSBEZWxldGVCeVZhbDoKQEAgLTI2MzMsNiArMjYzNSw5IEBAIGNs
YXNzIEZpeHVwUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgU3BlY0Nl
bGw6CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChub2RlLT5j
aGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlQ2VsbCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZS5oCmluZGV4IDY5ZjA4YzE4NmQ0OGNlYmY2Yzc2Yjg5YTRkNWQ0ODQ0MDdkYjNkMGUuLjky
MmNlMWVjY2YyMGFjMmQzNzY0MjFiZjA4NDM5Yzc2ZTI4Zjk4MDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZS5oCkBAIC03NjcsNiArNzY3LDE1IEBAIHN0cnVjdCBOb2RlIHsKICAgICAg
ICAgbV9vcEluZm8yID0gaW50ZXJuYWw7CiAgICAgfQogCisgICAgdm9pZCBjb252ZXJ0VG9OZXdH
ZW5lcmF0b3IoUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUpCisgICAgeworICAgICAgICBB
U1NFUlQobV9vcCA9PSBDcmVhdGVHZW5lcmF0b3IpOworICAgICAgICBzZXRPcEFuZERlZmF1bHRG
bGFncyhOZXdHZW5lcmF0b3IpOworICAgICAgICBjaGlsZHJlbi5yZXNldCgpOworICAgICAgICBt
X29wSW5mbyA9IHN0cnVjdHVyZTsKKyAgICAgICAgbV9vcEluZm8yID0gT3BJbmZvV3JhcHBlcigp
OworICAgIH0KKwogICAgIHZvaWQgY29udmVydFRvTmV3QXJyYXlCdWZmZXIoRnJvemVuVmFsdWUq
IGltbXV0YWJsZUJ1dHRlcmZseSk7CiAgICAgCiAgICAgdm9pZCBjb252ZXJ0VG9EaXJlY3RDYWxs
KEZyb3plblZhbHVlKik7CkBAIC0xOTA5LDYgKzE5MTgsNyBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAg
ICAgIGNhc2UgQXJyYXlpZnlUb1N0cnVjdHVyZToKICAgICAgICAgY2FzZSBOZXdPYmplY3Q6CiAg
ICAgICAgIGNhc2UgTmV3UHJvbWlzZToKKyAgICAgICAgY2FzZSBOZXdHZW5lcmF0b3I6CiAgICAg
ICAgIGNhc2UgTmV3U3RyaW5nT2JqZWN0OgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
ICAgIGRlZmF1bHQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05v
ZGVUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKaW5kZXgg
NGQ3MTU4MmUxN2E2OTFhMDU4YTgzNDcyMjg0ZjYwMTlmOTdkODAzOS4uMDYyY2RjMDg0OTMwZDc0
YTAyYTcyYTMwYmU5NjBmNmYxODUwM2RmMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdOb2RlVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZVR5cGUuaApAQCAtNTQsNiArNTQsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERG
RyB7CiAgICAgbWFjcm8oVG9UaGlzLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhDcmVhdGVU
aGlzLCBOb2RlUmVzdWx0SlMpIC8qIE5vdGUgdGhpcyBpcyBub3QgTXVzdEdlbmVyYXRlIHNpbmNl
IHdlJ3JlIHJldHVybmluZyBpdCBhbnl3YXkuICovIFwKICAgICBtYWNybyhDcmVhdGVQcm9taXNl
LCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oQ3JlYXRlR2Vu
ZXJhdG9yLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oR2V0
Q2FsbGVlLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhTZXRDYWxsZWUsIE5vZGVNdXN0R2Vu
ZXJhdGUpIFwKICAgICBtYWNybyhHZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgTm9kZVJl
c3VsdEludDMyKSBcCkBAIC0zNDAsNiArMzQxLDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFj
ZSBERkcgewogICAgIC8qIEFsbG9jYXRpb25zLiAqL1wKICAgICBtYWNybyhOZXdPYmplY3QsIE5v
ZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKE5ld1Byb21pc2UsIE5vZGVSZXN1bHRKUykgXAorICAg
IG1hY3JvKE5ld0dlbmVyYXRvciwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oTmV3QXJyYXks
IE5vZGVSZXN1bHRKUyB8IE5vZGVIYXNWYXJBcmdzKSBcCiAgICAgbWFjcm8oTmV3QXJyYXlXaXRo
U3ByZWFkLCBOb2RlUmVzdWx0SlMgfCBOb2RlSGFzVmFyQXJncykgXAogICAgIG1hY3JvKE5ld0Fy
cmF5V2l0aFNpemUsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCmluZGV4IGFmYTI4MjIwZGNmMzAy
NDQxNDQxNTkzZTM1NzNkODllM2FkNTAzM2QuLmMzMTVjMjY1MjdjNzYyYjEzYzBlNmUzM2MzNDlj
MmJjYjY0NDQ5YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3Bl
cmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25z
LmNwcApAQCAtMzk4LDYgKzM5OCwxNiBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
Q3JlYXRlSW50ZXJuYWxQcm9taXNlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqCiAgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU0ludGVybmFsUHJvbWlzZTo6Y3JlYXRlKHZtLCBzdHJ1
Y3R1cmUpKTsKIH0KIAorSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZUdlbmVy
YXRvcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBjb25zdHJ1Y3RvciwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE5hdGl2
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IEludGVybmFs
RnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKGV4ZWMsIG51bGxwdHIsIGNvbnN0cnVj
dG9yLCBnbG9iYWxPYmplY3QtPmdlbmVyYXRvclN0cnVjdHVyZSgpKTsKKyAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUs
IEpTR2VuZXJhdG9yOjpjcmVhdGUodm0sIHN0cnVjdHVyZSkpOworfQorCiBKU0NlbGwqIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uQ2FsbE9iamVjdENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFRhcmdl
dCkKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09wZXJhdGlvbnMuaAppbmRleCBiOThlNjIxNzVjNjZmMzZlMzY0ZDU4ZTlkYzgwNmFkMDUy
ZGM2NTJiLi43NDRhNTBkYmZlZjgyNzVlMjlhZjcyOTY5YzY4NjRhMzY2MmM1NzAyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaApAQCAtNTAsNiArNTAsNyBAQCBK
U0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uT2JqZWN0Q3JlYXRlT2JqZWN0KEV4ZWNTdGF0
ZSosIEpTT2JqZWN0KikgV1RGX0lOVAogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNy
ZWF0ZVRoaXMoRXhlY1N0YXRlKiwgSlNPYmplY3QqIGNvbnN0cnVjdG9yLCB1aW50MzJfdCBpbmxp
bmVDYXBhY2l0eSkgV1RGX0lOVEVSTkFMOwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkNyZWF0ZVByb21pc2UoRXhlY1N0YXRlKiwgSlNPYmplY3QqIGNvbnN0cnVjdG9yLCBKU0dsb2Jh
bE9iamVjdCopIFdURl9JTlRFUk5BTDsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25D
cmVhdGVJbnRlcm5hbFByb21pc2UoRXhlY1N0YXRlKiwgSlNPYmplY3QqIGNvbnN0cnVjdG9yLCBK
U0dsb2JhbE9iamVjdCopIFdURl9JTlRFUk5BTDsKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVy
YXRpb25DcmVhdGVHZW5lcmF0b3IoRXhlY1N0YXRlKiwgSlNPYmplY3QqIGNvbnN0cnVjdG9yLCBK
U0dsb2JhbE9iamVjdCopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uVG9UaGlzKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEp
IFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVG9U
aGlzU3RyaWN0KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEpIFdURl9JTlRF
Uk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVNb2QoRXhl
Y1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZE9wMikgV1RGX0lOVEVSTkFMOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAppbmRleCA0OGE0MWIzMDcy
Yjc2NzYzNjE5MTA0NTNhNGRlNGY1YWFlYjU0YmFiLi5mMjA5YzRhNmY3NDcxYmRhZTJlOGZkYjNh
Nzg3MDcyZTE0MGM4N2Q2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcApAQCAtMTAxNCw2ICsxMDE0
LDExIEBAIGNsYXNzIFByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsK
ICAgICAgICAgY2FzZSBOZXdQcm9taXNlOgogICAgICAgICAgICAgc2V0UHJlZGljdGlvbihTcGVj
UHJvbWlzZU9iamVjdCk7CiAgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIENyZWF0
ZUdlbmVyYXRvcjoKKyAgICAgICAgY2FzZSBOZXdHZW5lcmF0b3I6CisgICAgICAgICAgICBzZXRQ
cmVkaWN0aW9uKFNwZWNPYmplY3RPdGhlcik7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIAogICAgICAgICBjYXNlIEFycmF5U2xpY2U6CiAgICAgICAgIGNhc2UgTmV3QXJyYXlXaXRo
U3ByZWFkOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9F
eGVjdXRlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaApp
bmRleCBjYThhZWEzMGEzNTI2NmM2NzU0NTliOWI1ZWY1NDUyYzUzMTc2ZDVkLi4wOTVlMTVhZDlk
MzY3M2U4ZmM4OTY3OTI0YmVhODRlMjg4ODAzOWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaApAQCAtMTc5LDYgKzE3OSw3IEBAIGJvb2wgc2FmZVRv
RXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwgTm9kZSogbm9k
ZSwgYm9vbCBpZ25vCiAgICAgY2FzZSBUb1RoaXM6CiAgICAgY2FzZSBDcmVhdGVUaGlzOgogICAg
IGNhc2UgQ3JlYXRlUHJvbWlzZToKKyAgICBjYXNlIENyZWF0ZUdlbmVyYXRvcjoKICAgICBjYXNl
IE9iamVjdENyZWF0ZToKICAgICBjYXNlIE9iamVjdEtleXM6CiAgICAgY2FzZSBHZXRDYWxsZWU6
CkBAIC0zMjEsNiArMzIyLDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBl
JiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBib29sIGlnbm8KICAgICBjYXNlIENv
bnN0cnVjdEZvcndhcmRWYXJhcmdzOgogICAgIGNhc2UgTmV3T2JqZWN0OgogICAgIGNhc2UgTmV3
UHJvbWlzZToKKyAgICBjYXNlIE5ld0dlbmVyYXRvcjoKICAgICBjYXNlIE5ld0FycmF5OgogICAg
IGNhc2UgTmV3QXJyYXlXaXRoU2l6ZToKICAgICBjYXNlIE5ld0FycmF5QnVmZmVyOgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCBjM2Zl
NWE0OWIwMDMwYzY0MDAxMzczMGMxYjMwZGU1ZDBmZDk0ZGVjLi4zNzRiYmQzNTE0MGQ2NjA4ODc3
ZmYwNDNhMmU2YzA5ODRmMDA2YjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtMTI3NjgsNiArMTI3NjgsNDkgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZVByb21pc2UoTm9kZSogbm9kZSkKICAgICBjZWxsUmVz
dWx0KHJlc3VsdEdQUiwgbm9kZSk7CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVD
cmVhdGVHZW5lcmF0b3IoTm9kZSogbm9kZSkKK3sKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0ID0gbV9qaXQuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisK
KyAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBjYWxsZWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwor
ICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CisgICAgR1BSVGVtcG9yYXJ5IHN0cnVjdHVy
ZSh0aGlzKTsKKyAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDEodGhpcyk7CisgICAgR1BSVGVtcG9y
YXJ5IHNjcmF0Y2gyKHRoaXMpOworCisgICAgR1BSUmVnIGNhbGxlZUdQUiA9IGNhbGxlZS5ncHIo
KTsKKyAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworICAgIEdQUlJlZyBzdHJ1
Y3R1cmVHUFIgPSBzdHJ1Y3R1cmUuZ3ByKCk7CisgICAgR1BSUmVnIHNjcmF0Y2gxR1BSID0gc2Ny
YXRjaDEuZ3ByKCk7CisgICAgR1BSUmVnIHNjcmF0Y2gyR1BSID0gc2NyYXRjaDIuZ3ByKCk7Cisg
ICAgLy8gUmFyZSBkYXRhIGlzIG9ubHkgdXNlZCB0byBhY2Nlc3MgdGhlIGFsbG9jYXRvciAmIHN0
cnVjdHVyZQorICAgIC8vIFdlIGNhbiBhdm9pZCB1c2luZyBhbiBhZGRpdGlvbmFsIEdQUiB0aGlz
IHdheQorICAgIEdQUlJlZyByYXJlRGF0YUdQUiA9IHN0cnVjdHVyZUdQUjsKKworICAgIE1hY3Jv
QXNzZW1ibGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7CisKKyAgICBzbG93Q2FzZXMuYXBwZW5kKG1f
aml0LmJyYW5jaElmTm90RnVuY3Rpb24oY2FsbGVlR1BSKSk7CisgICAgbV9qaXQubG9hZFB0cihK
SVRDb21waWxlcjo6QWRkcmVzcyhjYWxsZWVHUFIsIEpTRnVuY3Rpb246Om9mZnNldE9mUmFyZURh
dGEoKSksIHJhcmVEYXRhR1BSKTsKKyAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaFRl
c3RQdHIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIHJhcmVEYXRhR1BSKSk7CisgICAgbV9qaXQubG9h
ZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhyYXJlRGF0YUdQUiwgRnVuY3Rpb25SYXJlRGF0YTo6
b2Zmc2V0T2ZJbnRlcm5hbEZ1bmN0aW9uQWxsb2NhdGlvblByb2ZpbGUoKSArIEludGVybmFsRnVu
Y3Rpb25BbGxvY2F0aW9uUHJvZmlsZTo6b2Zmc2V0T2ZTdHJ1Y3R1cmUoKSksIHN0cnVjdHVyZUdQ
Uik7CisgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyKEpTR2VuZXJhdG9yOjppbmZvKCkpLCBz
Y3JhdGNoMUdQUik7CisgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hQdHIoQ0NhbGxI
ZWxwZXJzOjpOb3RFcXVhbCwgc2NyYXRjaDFHUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHJ1
Y3R1cmVHUFIsIFN0cnVjdHVyZTo6Y2xhc3NJbmZvT2Zmc2V0KCkpKSk7CisgICAgbV9qaXQubW92
ZShUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2ppdC5ncmFwaCgpLCBnbG9iYWxPYmplY3Qp
LCBzY3JhdGNoMUdQUik7CisgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hQdHIoQ0Nh
bGxIZWxwZXJzOjpOb3RFcXVhbCwgc2NyYXRjaDFHUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhz
dHJ1Y3R1cmVHUFIsIFN0cnVjdHVyZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0KCkpKSk7CisKKyAgICBh
dXRvIGJ1dHRlcmZseSA9IFRydXN0ZWRJbW1QdHIobnVsbHB0cik7CisgICAgZW1pdEFsbG9jYXRl
SlNPYmplY3RXaXRoS25vd25TaXplPEpTR2VuZXJhdG9yPihyZXN1bHRHUFIsIHN0cnVjdHVyZUdQ
UiwgYnV0dGVyZmx5LCBzY3JhdGNoMUdQUiwgc2NyYXRjaDJHUFIsIHNsb3dDYXNlcywgc2l6ZW9m
KEpTR2VuZXJhdG9yKSk7CisgICAgbV9qaXQuc3RvcmVUcnVzdGVkVmFsdWUoanNOdW1iZXIoc3Rh
dGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6OkdlbmVyYXRvclN0YXRlOjpJbml0KSksIEND
YWxsSGVscGVyczo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGw8
Pjo6b2Zmc2V0T2ZJbnRlcm5hbEZpZWxkKHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0dlbmVyYXRv
cjo6RmllbGQ6OlN0YXRlKSkpKTsKKyAgICBtX2ppdC5zdG9yZVRydXN0ZWRWYWx1ZShqc1VuZGVm
aW5lZCgpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0ludGVybmFsRmllbGRP
YmplY3RJbXBsPD46Om9mZnNldE9mSW50ZXJuYWxGaWVsZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNHZW5lcmF0b3I6OkZpZWxkOjpOZXh0KSkpKTsKKyAgICBtX2ppdC5zdG9yZVRydXN0ZWRWYWx1
ZShKU1ZhbHVlKCksIENDYWxsSGVscGVyczo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTSW50ZXJuYWxG
aWVsZE9iamVjdEltcGw8Pjo6b2Zmc2V0T2ZJbnRlcm5hbEZpZWxkKHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0dlbmVyYXRvcjo6RmllbGQ6OlRoaXMpKSkpOworICAgIG1faml0LnN0b3JlVHJ1c3Rl
ZFZhbHVlKEpTVmFsdWUoKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNJbnRl
cm5hbEZpZWxkT2JqZWN0SW1wbDw+OjpvZmZzZXRPZkludGVybmFsRmllbGQoc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTR2VuZXJhdG9yOjpGaWVsZDo6RnJhbWUpKSkpOworICAgIG1faml0Lm11dGF0
b3JGZW5jZShtX2ppdC52bSgpKTsKKworICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRo
Q2FsbChzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkNyZWF0ZUdlbmVyYXRvciwgcmVzdWx0R1BS
LCBjYWxsZWVHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1faml0LmdyYXBoKCksIGds
b2JhbE9iamVjdCkpKTsKKworICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKK30KKwog
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld09iamVjdChOb2RlKiBub2RlKQogewogICAg
IEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CkBAIC0xMjgyNCw2ICsxMjg2NywzMiBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3UHJvbWlzZShOb2RlKiBub2RlKQogICAgIGNlbGxS
ZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIH0KIAordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZU5ld0dlbmVyYXRvcihOb2RlKiBub2RlKQoreworICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhp
cyk7CisgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2gxKHRoaXMpOworICAgIEdQUlRlbXBvcmFyeSBz
Y3JhdGNoMih0aGlzKTsKKworICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Cisg
ICAgR1BSUmVnIHNjcmF0Y2gxR1BSID0gc2NyYXRjaDEuZ3ByKCk7CisgICAgR1BSUmVnIHNjcmF0
Y2gyR1BSID0gc2NyYXRjaDIuZ3ByKCk7CisKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Qg
c2xvd0Nhc2VzOworCisgICAgRnJvemVuVmFsdWUqIHN0cnVjdHVyZSA9IG1fZ3JhcGguZnJlZXpl
U3Ryb25nKG5vZGUtPnN0cnVjdHVyZSgpLmdldCgpKTsKKyAgICBhdXRvIGJ1dHRlcmZseSA9IFRy
dXN0ZWRJbW1QdHIobnVsbHB0cik7CisgICAgZW1pdEFsbG9jYXRlSlNPYmplY3RXaXRoS25vd25T
aXplPEpTR2VuZXJhdG9yPihyZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgYnV0
dGVyZmx5LCBzY3JhdGNoMUdQUiwgc2NyYXRjaDJHUFIsIHNsb3dDYXNlcywgc2l6ZW9mKEpTR2Vu
ZXJhdG9yKSk7CisgICAgbV9qaXQuc3RvcmVUcnVzdGVkVmFsdWUoanNOdW1iZXIoc3RhdGljX2Nh
c3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6OkdlbmVyYXRvclN0YXRlOjpJbml0KSksIENDYWxsSGVs
cGVyczo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGw8Pjo6b2Zm
c2V0T2ZJbnRlcm5hbEZpZWxkKHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0dlbmVyYXRvcjo6Rmll
bGQ6OlN0YXRlKSkpKTsKKyAgICBtX2ppdC5zdG9yZVRydXN0ZWRWYWx1ZShqc1VuZGVmaW5lZCgp
LCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0ludGVybmFsRmllbGRPYmplY3RJ
bXBsPD46Om9mZnNldE9mSW50ZXJuYWxGaWVsZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNHZW5l
cmF0b3I6OkZpZWxkOjpOZXh0KSkpKTsKKyAgICBtX2ppdC5zdG9yZVRydXN0ZWRWYWx1ZShKU1Zh
bHVlKCksIENDYWxsSGVscGVyczo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTSW50ZXJuYWxGaWVsZE9i
amVjdEltcGw8Pjo6b2Zmc2V0T2ZJbnRlcm5hbEZpZWxkKHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0dlbmVyYXRvcjo6RmllbGQ6OlRoaXMpKSkpOworICAgIG1faml0LnN0b3JlVHJ1c3RlZFZhbHVl
KEpTVmFsdWUoKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNJbnRlcm5hbEZp
ZWxkT2JqZWN0SW1wbDw+OjpvZmZzZXRPZkludGVybmFsRmllbGQoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEpTR2VuZXJhdG9yOjpGaWVsZDo6RnJhbWUpKSkpOworICAgIG1faml0Lm11dGF0b3JGZW5j
ZShtX2ppdC52bSgpKTsKKworICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChz
bG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbk5ld0dlbmVyYXRvciwgcmVzdWx0R1BSLCBUcnVzdGVk
SW1tUHRyKHN0cnVjdHVyZSkpKTsKKworICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsK
K30KKwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVRvUHJpbWl0aXZlKE5vZGUqIG5vZGUp
CiB7CiAgICAgREZHX0FTU0VSVChtX2ppdC5ncmFwaCgpLCBub2RlLCBub2RlLT5jaGlsZDEoKS51
c2VLaW5kKCkgPT0gVW50eXBlZFVzZSwgbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAppbmRleCBmOTkxZGQy
MDE2MjRlNjAzYjIxZWQ3M2RkMDNjNTNjM2I3MzFhZGUyLi4wZjJmNWU1ODkwODMyZDk1NzhlOGE0
ZTBmYzcxZmE5Yjg2N2E5ZDI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5oCkBAIC0xNDg0LDggKzE0ODQsMTAgQEAgY2xhc3MgU3BlY3VsYXRpdmVK
SVQgewogICAgIHZvaWQgY29tcGlsZU9iamVjdENyZWF0ZShOb2RlKik7CiAgICAgdm9pZCBjb21w
aWxlQ3JlYXRlVGhpcyhOb2RlKik7CiAgICAgdm9pZCBjb21waWxlQ3JlYXRlUHJvbWlzZShOb2Rl
Kik7CisgICAgdm9pZCBjb21waWxlQ3JlYXRlR2VuZXJhdG9yKE5vZGUqKTsKICAgICB2b2lkIGNv
bXBpbGVOZXdPYmplY3QoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZU5ld1Byb21pc2UoTm9kZSop
OworICAgIHZvaWQgY29tcGlsZU5ld0dlbmVyYXRvcihOb2RlKik7CiAgICAgdm9pZCBjb21waWxl
VG9QcmltaXRpdmUoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUxvZ1NoYWRvd0NoaWNrZW5Qcm9s
b2d1ZShOb2RlKik7CiAgICAgdm9pZCBjb21waWxlTG9nU2hhZG93Q2hpY2tlblRhaWwoTm9kZSop
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQz
Ml82NC5jcHAKaW5kZXggMDljZjA5ODQ2OThiOWY3OTM3NmYwNTY0MTdlNTcxNjAzOWFlNTZkYi4u
Mjk3YTQwOTI2YmY2ZGU1MGUxMzNlOWU4MmViMDg5MzkyYWFkNzgzYiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCkBAIC0z
MjAyLDYgKzMyMDIsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2Rl
KQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIENyZWF0ZUdlbmVyYXRvcjogewor
ICAgICAgICBjb21waWxlQ3JlYXRlR2VuZXJhdG9yKG5vZGUpOworICAgICAgICBicmVhazsKKyAg
ICB9CisKICAgICBjYXNlIE5ld09iamVjdDogewogICAgICAgICBjb21waWxlTmV3T2JqZWN0KG5v
ZGUpOwogICAgICAgICBicmVhazsKQEAgLTMyMTIsNiArMzIxNywxMSBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAg
IGNhc2UgTmV3R2VuZXJhdG9yOiB7CisgICAgICAgIGNvbXBpbGVOZXdHZW5lcmF0b3Iobm9kZSk7
CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgR2V0Q2FsbGVlOiB7CiAgICAgICAg
IGNvbXBpbGVHZXRDYWxsZWUobm9kZSk7CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggZjFmMDRjM2M5
ODc1YTYzMTY1YTYyOGZmOWYxY2VkYjVmYzcwNmIzNi4uNmI2ZmQ1MmYzZGE2YTNmMzg4ODZhNTFm
ZTM1NDZhZjI4M2EyN2MxNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC0zNDc4LDYgKzM0NzgsMTEgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjb21waWxlQ3JlYXRlUHJvbWlz
ZShub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorCisgICAgY2FzZSBDcmVhdGVHZW5lcmF0
b3I6IHsKKyAgICAgICAgY29tcGlsZUNyZWF0ZUdlbmVyYXRvcihub2RlKTsKKyAgICAgICAgYnJl
YWs7CisgICAgfQogICAgICAgICAKICAgICBjYXNlIE5ld09iamVjdDogewogICAgICAgICBjb21w
aWxlTmV3T2JqZWN0KG5vZGUpOwpAQCAtMzQ4OSw2ICszNDk0LDExIEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAg
Y2FzZSBOZXdHZW5lcmF0b3I6IHsKKyAgICAgICAgY29tcGlsZU5ld0dlbmVyYXRvcihub2RlKTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBHZXRDYWxsZWU6IHsKICAgICAgICAg
Y29tcGlsZUdldENhbGxlZShub2RlKTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2Uu
Y3BwCmluZGV4IDI0YjU1ZTc4OGQ5ZGU5YjUwNjk5Njc1NTc1Mzc3MzhiMzMyYmUzNTcuLjBkNTkw
MTg2ZDgzYmRiNDc0NWVmN2M3YzE1Njc0MTAyNDUyMzllYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2Uu
Y3BwCkBAIC0zMjIsNiArMzIyLDcgQEAgY2xhc3MgU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2Ug
OiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgc3dpdGNoIChtX25vZGUtPm9wKCkpIHsKICAg
ICAgICAgICAgIGNhc2UgTmV3T2JqZWN0OgogICAgICAgICAgICAgY2FzZSBOZXdQcm9taXNlOgor
ICAgICAgICAgICAgY2FzZSBOZXdHZW5lcmF0b3I6CiAgICAgICAgICAgICBjYXNlIE5ld0FycmF5
OgogICAgICAgICAgICAgY2FzZSBOZXdBcnJheVdpdGhTaXplOgogICAgICAgICAgICAgY2FzZSBO
ZXdBcnJheUJ1ZmZlcjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
Q2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0
aWVzLmNwcAppbmRleCA4NDVjNDE3ZWNkYjE0YmY1MGE0NWY1ZThlMDllM2FlMjM5OWY5ZDgwLi5l
YTg0MmMwNjEyYzZjY2I5YzUwOGVhNTEzNjAwODYwZGM3N2ZjMzE3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCkBAIC03NSw2ICs3NSw3IEBAIGlu
bGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgR2V0
QnV0dGVyZmx5OgogICAgIGNhc2UgTmV3T2JqZWN0OgogICAgIGNhc2UgTmV3UHJvbWlzZToKKyAg
ICBjYXNlIE5ld0dlbmVyYXRvcjoKICAgICBjYXNlIE5ld1N0cmluZ09iamVjdDoKICAgICBjYXNl
IE5ld1N5bWJvbDoKICAgICBjYXNlIE5ld0FycmF5OgpAQCAtMzc5LDYgKzM4MCw3IEBAIGlubGlu
ZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgRmlsdGVy
SW5CeUlkU3RhdHVzOgogICAgIGNhc2UgQ3JlYXRlVGhpczoKICAgICBjYXNlIENyZWF0ZVByb21p
c2U6CisgICAgY2FzZSBDcmVhdGVHZW5lcmF0b3I6CiAgICAgY2FzZSBEYXRhVmlld0dldEludDoK
ICAgICBjYXNlIERhdGFWaWV3R2V0RmxvYXQ6CiAgICAgY2FzZSBEYXRhVmlld1NldDoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCBlNDBlMmMw
ZTAxYjE0YTJhYTJhMjUwZjZlYTczNTQxMmEzYWE1ZTkxLi5hZTM2NGI3MzVkM2RiZDBlZWRiNzdh
MTkwMjMzY2RmOWE2Nzk4ZjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExM
b3dlckRGR1RvQjMuY3BwCkBAIC03OCw2ICs3OCw3IEBACiAjaW5jbHVkZSAiSlNBc3luY0Z1bmN0
aW9uLmgiCiAjaW5jbHVkZSAiSlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAi
SlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNHZW5l
cmF0b3JGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTSW1tdXRhYmxlQnV0dGVyZmx5LmgiCiAjaW5j
bHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKQEAgLTEwNDgsNiArMTA0OSw5IEBAIGNsYXNz
IExvd2VyREZHVG9CMyB7CiAgICAgICAgIGNhc2UgTmV3UHJvbWlzZToKICAgICAgICAgICAgIGNv
bXBpbGVOZXdQcm9taXNlKCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBOZXdH
ZW5lcmF0b3I6CisgICAgICAgICAgICBjb21waWxlTmV3R2VuZXJhdG9yKCk7CisgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBOZXdTdHJpbmdPYmplY3Q6CiAgICAgICAgICAgICBjb21w
aWxlTmV3U3RyaW5nT2JqZWN0KCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTEwNjYsNiArMTA3
MCw5IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIGNhc2UgQ3JlYXRlUHJvbWlzZToK
ICAgICAgICAgICAgIGNvbXBpbGVDcmVhdGVQcm9taXNlKCk7CiAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBDcmVhdGVHZW5lcmF0b3I6CisgICAgICAgICAgICBjb21waWxlQ3JlYXRl
R2VuZXJhdG9yKCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBTcHJlYWQ6CiAg
ICAgICAgICAgICBjb21waWxlU3ByZWFkKCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTU5Mjcs
NiArNTkzNCwzMCBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBzZXRKU1ZhbHVlKG1f
b3V0LnBoaShwb2ludGVyVHlwZSgpLCBmYXN0UmVzdWx0LCBzbG93UmVzdWx0KSk7CiAgICAgfQog
CisgICAgdm9pZCBjb21waWxlTmV3R2VuZXJhdG9yKCkKKyAgICB7CisgICAgICAgIExCYXNpY0Js
b2NrIHNsb3dDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgY29u
dGludWF0aW9uID0gbV9vdXQubmV3QmxvY2soKTsKKworICAgICAgICBMQmFzaWNCbG9jayBsYXN0
TmV4dCA9IG1fb3V0Lmluc2VydE5ld0Jsb2Nrc0JlZm9yZShzbG93Q2FzZSk7CisKKyAgICAgICAg
TFZhbHVlIGdlbmVyYXRvciA9IGFsbG9jYXRlT2JqZWN0PEpTR2VuZXJhdG9yPihtX25vZGUtPnN0
cnVjdHVyZSgpLCBtX291dC5pbnRQdHJaZXJvLCBzbG93Q2FzZSk7CisgICAgICAgIG1fb3V0LnN0
b3JlNjQobV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoc3RhdGljX2Nh
c3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6OkdlbmVyYXRvclN0YXRlOjpJbml0KSkpKSwgZ2VuZXJh
dG9yLCBtX2hlYXBzLkpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGxfaW50ZXJuYWxGaWVsZHNbc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTR2VuZXJhdG9yOjpGaWVsZDo6U3RhdGUpXSk7CisgICAgICAg
IG1fb3V0LnN0b3JlNjQobV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSkpLCBnZW5lcmF0b3IsIG1faGVhcHMuSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbF9pbnRl
cm5hbEZpZWxkc1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNHZW5lcmF0b3I6OkZpZWxkOjpOZXh0
KV0pOworICAgICAgICBtX291dC5zdG9yZTY0KG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6ZW5j
b2RlKEpTVmFsdWUoKSkpLCBnZW5lcmF0b3IsIG1faGVhcHMuSlNJbnRlcm5hbEZpZWxkT2JqZWN0
SW1wbF9pbnRlcm5hbEZpZWxkc1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNHZW5lcmF0b3I6OkZp
ZWxkOjpUaGlzKV0pOworICAgICAgICBtX291dC5zdG9yZTY0KG1fb3V0LmNvbnN0SW50NjQoSlNW
YWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSkpLCBnZW5lcmF0b3IsIG1faGVhcHMuSlNJbnRlcm5hbEZp
ZWxkT2JqZWN0SW1wbF9pbnRlcm5hbEZpZWxkc1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNHZW5l
cmF0b3I6OkZpZWxkOjpGcmFtZSldKTsKKyAgICAgICAgbXV0YXRvckZlbmNlKCk7CisgICAgICAg
IFZhbHVlRnJvbUJsb2NrIGZhc3RSZXN1bHQgPSBtX291dC5hbmNob3IoZ2VuZXJhdG9yKTsKKyAg
ICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRv
KHNsb3dDYXNlLCBjb250aW51YXRpb24pOworICAgICAgICBWYWx1ZUZyb21CbG9jayBzbG93UmVz
dWx0ID0gbV9vdXQuYW5jaG9yKHZtQ2FsbChwb2ludGVyVHlwZSgpLCBtX291dC5vcGVyYXRpb24o
b3BlcmF0aW9uTmV3R2VuZXJhdG9yKSwgbV9jYWxsRnJhbWUsIGZyb3plblBvaW50ZXIobV9ncmFw
aC5mcmVlemVTdHJvbmcobV9ub2RlLT5zdHJ1Y3R1cmUoKS5nZXQoKSkpKSk7CisgICAgICAgIG1f
b3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51
YXRpb24sIGxhc3ROZXh0KTsKKyAgICAgICAgc2V0SlNWYWx1ZShtX291dC5waGkocG9pbnRlclR5
cGUoKSwgZmFzdFJlc3VsdCwgc2xvd1Jlc3VsdCkpOworICAgIH0KKwogICAgIHZvaWQgY29tcGls
ZU5ld1N0cmluZ09iamVjdCgpCiAgICAgewogICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0
cnVjdHVyZSA9IG1fbm9kZS0+c3RydWN0dXJlKCk7CkBAIC02MzM5LDYgKzYzNzAsNTIgQEAgY2xh
c3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOwogICAgIH0KIAor
ICAgIHZvaWQgY29tcGlsZUNyZWF0ZUdlbmVyYXRvcigpCisgICAgeworICAgICAgICBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5v
cmlnaW4uc2VtYW50aWMpOworCisgICAgICAgIExWYWx1ZSBjYWxsZWUgPSBsb3dDZWxsKG1fbm9k
ZS0+Y2hpbGQxKCkpOworCisgICAgICAgIExCYXNpY0Jsb2NrIGlzRnVuY3Rpb25CbG9jayA9IG1f
b3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIGhhc1JhcmVEYXRhID0gbV9vdXQu
bmV3QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgY2hlY2tHbG9iYWxPYmplY3RDYXNlID0g
bV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgZmFzdEFsbG9jYXRpb25DYXNl
ID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgc2xvd0Nhc2UgPSBtX291
dC5uZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5u
ZXdCbG9jaygpOworCisgICAgICAgIG1fb3V0LmJyYW5jaChpc0Z1bmN0aW9uKGNhbGxlZSwgcHJv
dmVuVHlwZShtX25vZGUtPmNoaWxkMSgpKSksIHVzdWFsbHkoaXNGdW5jdGlvbkJsb2NrKSwgcmFy
ZWx5KHNsb3dDYXNlKSk7CisKKyAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5h
cHBlbmRUbyhpc0Z1bmN0aW9uQmxvY2ssIGhhc1JhcmVEYXRhKTsKKyAgICAgICAgTFZhbHVlIHJh
cmVEYXRhID0gbV9vdXQubG9hZFB0cihjYWxsZWUsIG1faGVhcHMuSlNGdW5jdGlvbl9yYXJlRGF0
YSk7CisgICAgICAgIG1fb3V0LmJyYW5jaChtX291dC5pc1plcm82NChyYXJlRGF0YSksIHJhcmVs
eShzbG93Q2FzZSksIHVzdWFsbHkoaGFzUmFyZURhdGEpKTsKKworICAgICAgICBtX291dC5hcHBl
bmRUbyhoYXNSYXJlRGF0YSwgZmFzdEFsbG9jYXRpb25DYXNlKTsKKyAgICAgICAgTFZhbHVlIHN0
cnVjdHVyZSA9IG1fb3V0LmxvYWRQdHIocmFyZURhdGEsIG1faGVhcHMuRnVuY3Rpb25SYXJlRGF0
YV9pbnRlcm5hbEZ1bmN0aW9uQWxsb2NhdGlvblByb2ZpbGVfc3RydWN0dXJlKTsKKyAgICAgICAg
bV9vdXQuYnJhbmNoKG1fb3V0LmVxdWFsKG1fb3V0LmxvYWRQdHIoc3RydWN0dXJlLCBtX2hlYXBz
LlN0cnVjdHVyZV9jbGFzc0luZm8pLCBtX291dC5jb25zdEludFB0cihKU0dlbmVyYXRvcjo6aW5m
bygpKSksIHVzdWFsbHkoY2hlY2tHbG9iYWxPYmplY3RDYXNlKSwgcmFyZWx5KHNsb3dDYXNlKSk7
CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oY2hlY2tHbG9iYWxPYmplY3RDYXNlLCBmYXN0QWxs
b2NhdGlvbkNhc2UpOworICAgICAgICBtX291dC5icmFuY2gobV9vdXQuZXF1YWwobV9vdXQubG9h
ZFB0cihzdHJ1Y3R1cmUsIG1faGVhcHMuU3RydWN0dXJlX2dsb2JhbE9iamVjdCksIHdlYWtQb2lu
dGVyKGdsb2JhbE9iamVjdCkpLCB1c3VhbGx5KGZhc3RBbGxvY2F0aW9uQ2FzZSksIHJhcmVseShz
bG93Q2FzZSkpOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKGZhc3RBbGxvY2F0aW9uQ2FzZSwg
c2xvd0Nhc2UpOworICAgICAgICBMVmFsdWUgZ2VuZXJhdG9yID0gYWxsb2NhdGVPYmplY3Q8SlNH
ZW5lcmF0b3I+KHN0cnVjdHVyZSwgbV9vdXQuaW50UHRyWmVybywgc2xvd0Nhc2UpOworICAgICAg
ICBtX291dC5zdG9yZTY0KG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVy
KHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpHZW5lcmF0b3JTdGF0ZTo6SW5pdCkp
KSksIGdlbmVyYXRvciwgbV9oZWFwcy5KU0ludGVybmFsRmllbGRPYmplY3RJbXBsX2ludGVybmFs
RmllbGRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihKU0dlbmVyYXRvcjo6RmllbGQ6OlN0YXRlKV0p
OworICAgICAgICBtX291dC5zdG9yZTY0KG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpKSwgZ2VuZXJhdG9yLCBtX2hlYXBzLkpTSW50ZXJuYWxGaWVsZE9iamVj
dEltcGxfaW50ZXJuYWxGaWVsZHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTR2VuZXJhdG9yOjpG
aWVsZDo6TmV4dCldKTsKKyAgICAgICAgbV9vdXQuc3RvcmU2NChtX291dC5jb25zdEludDY0KEpT
VmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpKSwgZ2VuZXJhdG9yLCBtX2hlYXBzLkpTSW50ZXJuYWxG
aWVsZE9iamVjdEltcGxfaW50ZXJuYWxGaWVsZHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTR2Vu
ZXJhdG9yOjpGaWVsZDo6VGhpcyldKTsKKyAgICAgICAgbV9vdXQuc3RvcmU2NChtX291dC5jb25z
dEludDY0KEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpKSwgZ2VuZXJhdG9yLCBtX2hlYXBzLkpT
SW50ZXJuYWxGaWVsZE9iamVjdEltcGxfaW50ZXJuYWxGaWVsZHNbc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEpTR2VuZXJhdG9yOjpGaWVsZDo6RnJhbWUpXSk7CisgICAgICAgIG11dGF0b3JGZW5jZSgp
OworICAgICAgICBWYWx1ZUZyb21CbG9jayBmYXN0UmVzdWx0ID0gbV9vdXQuYW5jaG9yKGdlbmVy
YXRvcik7CisgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAgICBtX291
dC5hcHBlbmRUbyhzbG93Q2FzZSwgY29udGludWF0aW9uKTsKKyAgICAgICAgVmFsdWVGcm9tQmxv
Y2sgc2xvd1Jlc3VsdCA9IG1fb3V0LmFuY2hvcih2bUNhbGwoSW50NjQsIG1fb3V0Lm9wZXJhdGlv
bihvcGVyYXRpb25DcmVhdGVHZW5lcmF0b3IpLCBtX2NhbGxGcmFtZSwgY2FsbGVlLCB3ZWFrUG9p
bnRlcihnbG9iYWxPYmplY3QpKSk7CisgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsK
KworICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKKyAgICAg
ICAgTFZhbHVlIHJlc3VsdCA9IG1fb3V0LnBoaShJbnQ2NCwgZmFzdFJlc3VsdCwgc2xvd1Jlc3Vs
dCk7CisKKyAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOworICAgIH0KKwogICAgIHZvaWQgY29t
cGlsZVNwcmVhZCgpCiAgICAgewogICAgICAgICBpZiAobV9ub2RlLT5jaGlsZDEoKS0+b3AoKSA9
PSBQaGFudG9tTmV3QXJyYXlCdWZmZXIpIHsKQEAgLTE2MDYwLDggKzE2MTM3LDEwIEBAIGNsYXNz
IExvd2VyREZHVG9CMyB7CiAKICAgICBMVmFsdWUgaXNDZWxsV2l0aFR5cGUoTFZhbHVlIGNlbGws
IEpTVHlwZSBxdWVyaWVkVHlwZSwgU3BlY3VsYXRlZFR5cGUgc3BlY3VsYXRlZFR5cGVGb3JRdWVy
eSwgU3BlY3VsYXRlZFR5cGUgdHlwZSA9IFNwZWNGdWxsVG9wKQogICAgIHsKLSAgICAgICAgaWYg
KExWYWx1ZSBwcm92ZW4gPSBpc1Byb3ZlblZhbHVlKHR5cGUgJiBTcGVjQ2VsbCwgc3BlY3VsYXRl
ZFR5cGVGb3JRdWVyeSkpCi0gICAgICAgICAgICByZXR1cm4gcHJvdmVuOworICAgICAgICBpZiAo
c3BlY3VsYXRlZFR5cGVGb3JRdWVyeSAhPSBTcGVjQ2VsbCkgeworICAgICAgICAgICAgaWYgKExW
YWx1ZSBwcm92ZW4gPSBpc1Byb3ZlblZhbHVlKHR5cGUgJiBTcGVjQ2VsbCwgc3BlY3VsYXRlZFR5
cGVGb3JRdWVyeSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHByb3ZlbjsKKyAgICAgICAgfQog
ICAgICAgICByZXR1cm4gbV9vdXQuZXF1YWwoCiAgICAgICAgICAgICBtX291dC5sb2FkOFplcm9F
eHQzMihjZWxsLCBtX2hlYXBzLkpTQ2VsbF90eXBlSW5mb1R5cGUpLAogICAgICAgICAgICAgbV9v
dXQuY29uc3RJbnQzMihxdWVyaWVkVHlwZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmlu
ZGV4IDM2ZGU1M2EwYmMzYTcyZjU1NThkMTllZGE2NDc2YWYwNDk0NmVjNmMuLjgyNTQ2MzgxMmZi
ZTUzNmQwOTRjMTc5YjdlZmIyNjI4NWMxNDAyZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5j
cHAKQEAgLTMxMiw2ICszMTIsOCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygp
CiAgICAgICAgIERFRklORV9TTE9XX09QKGNyZWF0ZV9yZXN0KQogICAgICAgICBERUZJTkVfU0xP
V19PUChjcmVhdGVfcHJvbWlzZSkKICAgICAgICAgREVGSU5FX1NMT1dfT1AobmV3X3Byb21pc2Up
CisgICAgICAgIERFRklORV9TTE9XX09QKGNyZWF0ZV9nZW5lcmF0b3IpCisgICAgICAgIERFRklO
RV9TTE9XX09QKG5ld19nZW5lcmF0b3IpCiAgICAgICAgIERFRklORV9TTE9XX09QKHBvdykKIAog
ICAgICAgICBERUZJTkVfT1Aob3BfYWRkKQpAQCAtNTgwLDYgKzU4Miw3IEBAIHZvaWQgSklUOjpw
cml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9TTE9XX09Q
KGRpdikKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX1NMT1dfT1AoY3JlYXRlX3RoaXMpCiAgICAg
ICAgIERFRklORV9TTE9XQ0FTRV9TTE9XX09QKGNyZWF0ZV9wcm9taXNlKQorICAgICAgICBERUZJ
TkVfU0xPV0NBU0VfU0xPV19PUChjcmVhdGVfZ2VuZXJhdG9yKQogICAgICAgICBERUZJTkVfU0xP
V0NBU0VfU0xPV19PUCh0b190aGlzKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfU0xPV19PUCh0
b19wcmltaXRpdmUpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9TTE9XX09QKHRvX251bWJlcikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IDdhZjRl
ZTMyNmNmMWU4OWU5YTUzZjlhMjc3YmQ1YzQwNTI2MzA4MDguLmVmYTI1NGNiMmFmMDEyNTdlYWQ2
MGNkMjI1ODk3YTYxYjcxMDkxNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGVyYXRpb25zLmNwcApAQCAtMTM5NCw2ICsxMzk0LDE0IEBAIEpTQ2VsbCogSklUX09QRVJBVElP
TiBvcGVyYXRpb25OZXdJbnRlcm5hbFByb21pc2UoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUq
IHN0CiAgICAgcmV0dXJuIEpTSW50ZXJuYWxQcm9taXNlOjpjcmVhdGUodm0sIHN0cnVjdHVyZSk7
CiB9CiAKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdHZW5lcmF0b3IoRXhlY1N0
YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK3sKKyAgICBWTSYgdm0gPSBleGVjLT52
bSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOworCisgICAg
cmV0dXJuIEpTR2VuZXJhdG9yOjpjcmVhdGUodm0sIHN0cnVjdHVyZSk7Cit9CisKIEpTQ2VsbCog
SklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdSZWdleHAoRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwq
IHJlZ2V4cFB0cikKIHsKICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShm
YWxzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlv
bnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCmluZGV4IDFj
M2MyNzJjYmJhOGRkMzU2MmQ0ZDE1Y2YwOTUwZTZjOTI0Mjg3NjIuLjFiNzQ5YjIzMGY4MDJkM2Zj
NDJmY2ZhMTYwNDZiYTg5ZjMwYzhjNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3BlcmF0aW9ucy5oCkBAIC00MjEsNiArNDIxLDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblNldEZ1bmN0aW9uTmFtZShFeGVjU3RhdGUqLCBKU0NlbGwqLCBFbmNvZGVkSlNWYWx1ZSkK
IEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdPYmplY3QoRXhlY1N0YXRlKiwgU3Ry
dWN0dXJlKikgV1RGX0lOVEVSTkFMOwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5l
d1Byb21pc2UoRXhlY1N0YXRlKiwgU3RydWN0dXJlKikgV1RGX0lOVEVSTkFMOwogSlNDZWxsKiBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0ludGVybmFsUHJvbWlzZShFeGVjU3RhdGUqLCBTdHJ1
Y3R1cmUqKSBXVEZfSU5URVJOQUw7CitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3
R2VuZXJhdG9yKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSopIFdURl9JTlRFUk5BTDsKIEpTQ2VsbCog
SklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdSZWdleHAoRXhlY1N0YXRlKiwgSlNDZWxsKikgV1RG
X0lOVEVSTkFMOwogVW51c2VkUHRyIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSGFuZGxlVHJhcHMo
RXhlY1N0YXRlKikgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRo
cm93KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXgg
ZDIwNGI0MDdjMmRlNDhlNWRjYjJjYTEzMWE0YWIxNGUzZDg5YjFjYy4uMjU3NmVmNDllMTE4MzEy
NmNmZjhmMWUzNWVlYWVkYmZlMDQ2ZGVjZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQpAQCAtMTQ5NSw2ICsxNDk1LDcgQEAg
c2xvd1BhdGhPcChjcmVhdGVfcmVzdCkKIHNsb3dQYXRoT3AoY3JlYXRlX3Njb3BlZF9hcmd1bWVu
dHMpCiBzbG93UGF0aE9wKGNyZWF0ZV90aGlzKQogc2xvd1BhdGhPcChjcmVhdGVfcHJvbWlzZSkK
K3Nsb3dQYXRoT3AoY3JlYXRlX2dlbmVyYXRvcikKIHNsb3dQYXRoT3AoZGVmaW5lX2FjY2Vzc29y
X3Byb3BlcnR5KQogc2xvd1BhdGhPcChkZWZpbmVfZGF0YV9wcm9wZXJ0eSkKIHNsb3dQYXRoT3Ao
ZW51bWVyYXRvcl9nZW5lcmljX3BuYW1lKQpAQCAtMTUzMCw2ICsxNTMxLDcgQEAgc2xvd1BhdGhP
cCh0b19pbmRleF9zdHJpbmcpCiBzbG93UGF0aE9wKHR5cGVvZikKIHNsb3dQYXRoT3AodW5yZWFj
aGFibGUpCiBzbG93UGF0aE9wKG5ld19wcm9taXNlKQorc2xvd1BhdGhPcChuZXdfZ2VuZXJhdG9y
KQogCiBtYWNybyBsbGludFNsb3dQYXRoT3Aob3Bjb2RlTmFtZSkKICAgICBsbGludE9wKG9wXyVv
cGNvZGVOYW1lJSwgdW51c2VkLCBtYWNybyAodW51c2VkLCB1bnVzZWQsIGRpc3BhdGNoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKaW5k
ZXggNjU4NjU3OTgyMzM0NDQ5OTcwMmJiYmRjNWQzNWNiMjc1NDRlM2NlZi4uMTEyM2QxNzlmNjM5
MDYyMzE1ZTU0MjQwNGExZTUyNWI0ODdlNmY1ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCkBAIC0zMDksNiArMzA5LDM2IEBAIFNM
T1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uZXdfcHJvbWlzZSkKICAgICBSRVRVUk4ocmVzdWx0KTsK
IH0KIAorU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NyZWF0ZV9nZW5lcmF0b3IpCit7CisgICAg
QkVHSU4oKTsKKyAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wQ3JlYXRlR2VuZXJhdG9yPigp
OworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KCk7CisgICAgSlNPYmplY3QqIGNvbnN0cnVjdG9yQXNPYmplY3QgPSBhc09iamVjdChH
RVQoYnl0ZWNvZGUubV9jYWxsZWUpLmpzVmFsdWUoKSk7CisKKyAgICBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSA9IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKGV4ZWMsIG51
bGxwdHIsIGNvbnN0cnVjdG9yQXNPYmplY3QsIGdsb2JhbE9iamVjdC0+Z2VuZXJhdG9yU3RydWN0
dXJlKCkpOworICAgIENIRUNLX0VYQ0VQVElPTigpOworICAgIEpTR2VuZXJhdG9yKiByZXN1bHQg
PSBKU0dlbmVyYXRvcjo6Y3JlYXRlKHZtLCBzdHJ1Y3R1cmUpOworCisgICAgSlNGdW5jdGlvbiog
Y29uc3RydWN0b3IgPSBqc0R5bmFtaWNDYXN0PEpTRnVuY3Rpb24qPih2bSwgY29uc3RydWN0b3JB
c09iamVjdCk7CisgICAgaWYgKGNvbnN0cnVjdG9yICYmIGNvbnN0cnVjdG9yLT5jYW5Vc2VBbGxv
Y2F0aW9uUHJvZmlsZSgpKSB7CisgICAgICAgIFdyaXRlQmFycmllcjxKU0NlbGw+JiBjYWNoZWRD
YWxsZWUgPSBieXRlY29kZS5tZXRhZGF0YShleGVjKS5tX2NhY2hlZENhbGxlZTsKKyAgICAgICAg
aWYgKCFjYWNoZWRDYWxsZWUpCisgICAgICAgICAgICBjYWNoZWRDYWxsZWUuc2V0KHZtLCBleGVj
LT5jb2RlQmxvY2soKSwgY29uc3RydWN0b3IpOworICAgICAgICBlbHNlIGlmIChjYWNoZWRDYWxs
ZWUudW52YWxpZGF0ZWRHZXQoKSAhPSBKU0NlbGw6OnNlZW5NdWx0aXBsZUNhbGxlZU9iamVjdHMo
KSAmJiBjYWNoZWRDYWxsZWUuZ2V0KCkgIT0gY29uc3RydWN0b3IpCisgICAgICAgICAgICBjYWNo
ZWRDYWxsZWUuc2V0V2l0aG91dFdyaXRlQmFycmllcihKU0NlbGw6OnNlZW5NdWx0aXBsZUNhbGxl
ZU9iamVjdHMoKSk7CisgICAgfQorICAgIFJFVFVSTihyZXN1bHQpOworfQorCitTTE9XX1BBVEhf
REVDTChzbG93X3BhdGhfbmV3X2dlbmVyYXRvcikKK3sKKyAgICBCRUdJTigpOworICAgIGF1dG8g
Ynl0ZWNvZGUgPSBwYy0+YXM8T3BOZXdHZW5lcmF0b3I+KCk7CisgICAgSlNHZW5lcmF0b3IqIHJl
c3VsdCA9IEpTR2VuZXJhdG9yOjpjcmVhdGUodm0sIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3Qo
KS0+Z2VuZXJhdG9yU3RydWN0dXJlKCkpOworICAgIFJFVFVSTihyZXN1bHQpOworfQorCiBTTE9X
X1BBVEhfREVDTChzbG93X3BhdGhfdG9fdGhpcykKIHsKICAgICBCRUdJTigpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAppbmRleCAyZmU3NWU2
YzM2NTIzZWZjOWJhODJhNDYxNjU1MGRmZjc2MjNhMTg4Li43ZjkwYjE0MGI4OTc5MGZlMTRjNDMw
N2YxYTIwZjc0ZmQ5ZDNmYmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21tb25TbG93UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25TbG93UGF0aHMuaApAQCAtMzg0LDYgKzM4NCw3IEBAIFNMT1dfUEFUSF9ISURERU5f
REVDTChzbG93X3BhdGhfcmVzb2x2ZV9zY29wZSk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xv
d19wYXRoX2lzX3Zhcl9zY29wZSk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3Jl
c29sdmVfc2NvcGVfZm9yX2hvaXN0aW5nX2Z1bmNfZGVjbF9pbl9ldmFsKTsKIFNMT1dfUEFUSF9I
SURERU5fREVDTChzbG93X3BhdGhfY3JlYXRlX3Byb21pc2UpOworU0xPV19QQVRIX0hJRERFTl9E
RUNMKHNsb3dfcGF0aF9jcmVhdGVfZ2VuZXJhdG9yKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChz
bG93X3BhdGhfY3JlYXRlX3Jlc3QpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9n
ZXRfYnlfaWRfd2l0aF90aGlzKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZ2V0
X2J5X3ZhbF93aXRoX3RoaXMpOwpAQCAtMzkzLDYgKzM5NCw3IEBAIFNMT1dfUEFUSF9ISURERU5f
REVDTChzbG93X3BhdGhfZGVmaW5lX2RhdGFfcHJvcGVydHkpOwogU0xPV19QQVRIX0hJRERFTl9E
RUNMKHNsb3dfcGF0aF9kZWZpbmVfYWNjZXNzb3JfcHJvcGVydHkpOwogU0xPV19QQVRIX0hJRERF
Tl9ERUNMKHNsb3dfcGF0aF90aHJvd19zdGF0aWNfZXJyb3IpOwogU0xPV19QQVRIX0hJRERFTl9E
RUNMKHNsb3dfcGF0aF9uZXdfcHJvbWlzZSk7CitTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19w
YXRoX25ld19nZW5lcmF0b3IpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdf
YXJyYXlfd2l0aF9zcHJlYWQpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdf
YXJyYXlfYnVmZmVyKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfc3ByZWFkKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rp
b24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5j
cHAKaW5kZXggZGQ0YTIyMDgwMGYxODM0MzE3MDEyOWY5MzFiZTMxMmZmMzdmMTNkMi4uMjM4ZTU0
MzMzZWFkY2NiZWY4NWIzZWI2MDQwM2Q1N2IwYmYzODliMSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHAKQEAgLTExOSw3ICsxMTks
NiBAQCBTdHJ1Y3R1cmUqIEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJl
U2xvdyhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEFTU0VSVCgh
bmV3VGFyZ2V0IHx8IG5ld1RhcmdldC5pc0NvbnN0cnVjdG9yKHZtKSk7CiAKICAgICBBU1NFUlQo
YmFzZUNsYXNzLT5oYXNNb25vUHJvdG8oKSk7CiAKQEAgLTEzMyw3ICsxMzIsNyBAQCBTdHJ1Y3R1
cmUqIEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlU2xvdyhFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdQogICAgICAgICAgICAgcmV0dXJuIHN0cnVjdHVyZTsKIAogICAgICAg
ICAvLyBOb3RlLCBSZWZsZWN0LmNvbnN0cnVjdCBtaWdodCBjYXVzZSB0aGUgcHJvZmlsZSB0byBj
aHVybiBidXQgd2UgZG9uJ3QgY2FyZS4KLSAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGVWYWx1ZSA9
IG5ld1RhcmdldC5nZXQoZXhlYywgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlKTsKKyAgICAg
ICAgSlNWYWx1ZSBwcm90b3R5cGVWYWx1ZSA9IHRhcmdldEZ1bmN0aW9uLT5nZXQoZXhlYywgdm0u
cHJvcGVydHlOYW1lcy0+cHJvdG90eXBlKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgbnVsbHB0cik7CiAgICAgICAgIGlmIChKU09iamVjdCogcHJvdG90eXBlID0ganNEeW5h
bWljQ2FzdDxKU09iamVjdCo+KHZtLCBwcm90b3R5cGVWYWx1ZSkpCiAgICAgICAgICAgICByZXR1
cm4gdGFyZ2V0RnVuY3Rpb24tPnJhcmVEYXRhKHZtKS0+Y3JlYXRlSW50ZXJuYWxGdW5jdGlvbkFs
bG9jYXRpb25TdHJ1Y3R1cmVGcm9tQmFzZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIGJh
c2VDbGFzcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRl
cm5hbEZ1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1
bmN0aW9uLmgKaW5kZXggOTMzNjg4OWZlZTgxNTAxOGM5Y2FjYjQzNWM2NGE3OGFjMTBhZTczYi4u
MWZhNDg1OGM3YzNlNmUyMWI1NGMwMzg3ZWI2YzQ4NDNhODAxMzFmMCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uaApAQCAtMTAyLDggKzEw
Miw2IEBAIEFMV0FZU19JTkxJTkUgU3RydWN0dXJlKiBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVT
dWJjbGFzc1N0cnVjdHVyZShFeGVjU3RhdGUqIGV4CiB7CiAgICAgLy8gV2UgYWxsb3cgbmV3VGFy
Z2V0ID09IEpTVmFsdWUoKSBiZWNhdXNlIHRoZSBBUEkgbmVlZHMgdG8gYmUgYWJsZSB0byBjcmVh
dGUgY2xhc3NlcyB3aXRob3V0IGhhdmluZyBhIHJlYWwgSlMgZnJhbWUuCiAgICAgLy8gU2luY2Ug
d2UgZG9uJ3QgYWxsb3cgc3ViY2xhc3NpbmcgaW4gdGhlIEFQSSB3ZSBqdXN0IHRyZWF0IG5ld1Rh
cmdldCA9PSBKU1ZhbHVlKCkgYXMgbmV3VGFyZ2V0ID09IGV4ZWMtPmpzQ2FsbGVlKCkKLSAgICBB
U1NFUlQoIW5ld1RhcmdldCB8fCBuZXdUYXJnZXQuaXNDb25zdHJ1Y3RvcihleGVjLT52bSgpKSk7
Ci0KICAgICBpZiAobmV3VGFyZ2V0ICYmIG5ld1RhcmdldCAhPSBiYXNlQ2FsbGVlKQogICAgICAg
ICByZXR1cm4gY3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmVTbG93KGV4ZWMsIG5ld1RhcmdldCwgYmFz
ZUNsYXNzKTsKICAgICByZXR1cm4gYmFzZUNsYXNzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHZW5lcmF0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdkNmVhNzUzZGM4ODdiNmZkNjIy
ZWU5MTY0NWNkYmZlZmM2NzRhZjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dlbmVyYXRvci5jcHAKQEAgLTAsMCArMSw3MiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU0dlbmVyYXRvci5oIgorCisjaW5j
bHVkZSAiQnVpbHRpbk5hbWVzLmgiCisjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJKU0NJ
bmxpbmVzLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTSW50ZXJuYWxG
aWVsZE9iamVjdEltcGxJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFz
c0luZm8gSlNHZW5lcmF0b3I6OnNfaW5mbyA9IHsgIkdlbmVyYXRvciIsICZCYXNlOjpzX2luZm8s
IG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNHZW5lcmF0b3IpIH07CisK
K0pTR2VuZXJhdG9yKiBKU0dlbmVyYXRvcjo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUpCit7CisgICAgSlNHZW5lcmF0b3IqIGdlbmVyYXRvciA9IG5ldyAoTm90TnVsbCwgYWxs
b2NhdGVDZWxsPEpTR2VuZXJhdG9yPih2bS5oZWFwKSkgSlNHZW5lcmF0b3Iodm0sIHN0cnVjdHVy
ZSk7CisgICAgZ2VuZXJhdG9yLT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgcmV0dXJuIGdlbmVy
YXRvcjsKK30KKworU3RydWN0dXJlKiBKU0dlbmVyYXRvcjo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7Cisg
ICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwg
VHlwZUluZm8oSlNHZW5lcmF0b3JUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisK
K0pTR2VuZXJhdG9yOjpKU0dlbmVyYXRvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQor
ICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQoreworfQorCit2b2lkIEpTR2VuZXJhdG9yOjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAg
IGludGVybmFsRmllbGQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEZpZWxkOjpTdGF0ZSkpLnNldCh2
bSwgdGhpcywganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oR2VuZXJhdG9yU3RhdGU6Oklu
aXQpKSk7CisgICAgaW50ZXJuYWxGaWVsZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oRmllbGQ6Ok5l
eHQpKS5zZXQodm0sIHRoaXMsIGpzVW5kZWZpbmVkKCkpOworICAgIGludGVybmFsRmllbGQoc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEZpZWxkOjpUaGlzKSkuc2V0KHZtLCB0aGlzLCBKU1ZhbHVlKCkp
OworICAgIGludGVybmFsRmllbGQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEZpZWxkOjpGcmFtZSkp
LnNldCh2bSwgdGhpcywgSlNWYWx1ZSgpKTsKK30KKwordm9pZCBKU0dlbmVyYXRvcjo6dmlzaXRD
aGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIGF1dG8q
IHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNHZW5lcmF0b3IqPihjZWxsKTsKKyAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CisgICAgQmFzZTo6dmlzaXRDaGls
ZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRvci5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3IuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNWE0
ZWNiOGUyMTllNWY2MzYwZjlmNjk3NzRiN2Q2ODgyMTg5MzBhCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3IuaApAQCAtMCwwICsxLDgw
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJKU0ludGVybmFsRmll
bGRPYmplY3RJbXBsLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBKU0Z1bmN0aW9uOwor
CitjbGFzcyBKU0dlbmVyYXRvciA6IHB1YmxpYyBKU0ludGVybmFsRmllbGRPYmplY3RJbXBsPDQ+
IHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbDw0
PjsKKworICAgIGVudW0gY2xhc3MgR2VuZXJhdG9yUmVzdW1lTW9kZSA6IGludDMyX3QgeworICAg
ICAgICBOb3JtYWxNb2RlID0gMCwKKyAgICAgICAgUmV0dXJuTW9kZSA9IDEsCisgICAgICAgIFRo
cm93TW9kZSA9IDIKKyAgICB9OworCisgICAgZW51bSBjbGFzcyBHZW5lcmF0b3JTdGF0ZSA6IGlu
dDMyX3QgeworICAgICAgICBDb21wbGV0ZWQgPSAtMSwKKyAgICAgICAgRXhlY3V0aW5nID0gLTIs
CisgICAgICAgIEluaXQgPSAwLAorICAgIH07CisKKyAgICAvLyBbdGhpc10sIEBnZW5lcmF0b3Is
IEBnZW5lcmF0b3JTdGF0ZSwgQGdlbmVyYXRvclZhbHVlLCBAZ2VuZXJhdG9yUmVzdW1lTW9kZSwg
QGdlbmVyYXRvckZyYW1lLgorICAgIGVudW0gY2xhc3MgR2VuZXJhdG9yQXJndW1lbnQgOiBpbnQz
Ml90IHsKKyAgICAgICAgVGhpc1ZhbHVlID0gMCwKKyAgICAgICAgR2VuZXJhdG9yID0gMSwKKyAg
ICAgICAgU3RhdGUgPSAyLAorICAgICAgICBWYWx1ZSA9IDMsCisgICAgICAgIFJlc3VtZU1vZGUg
PSA0LAorICAgICAgICBGcmFtZSA9IDUsCisgICAgfTsKKworICAgIGVudW0gY2xhc3MgRmllbGQg
OiB1aW50MzJfdCB7CisgICAgICAgIFN0YXRlID0gMCwKKyAgICAgICAgTmV4dCwKKyAgICAgICAg
VGhpcywKKyAgICAgICAgRnJhbWUsCisgICAgfTsKKyAgICBzdGF0aWNfYXNzZXJ0KG51bWJlck9m
SW50ZXJuYWxGaWVsZHMgPT0gNCk7CisKKyAgICBzdGF0aWMgSlNHZW5lcmF0b3IqIGNyZWF0ZShW
TSYsIFN0cnVjdHVyZSopOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShW
TSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBERUNMQVJFX0VYUE9SVF9JTkZP
OworCisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYp
OworCitwcm90ZWN0ZWQ6CisgICAgSlNHZW5lcmF0b3IoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICB2
b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24u
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uaApp
bmRleCBhNDU0Yjk1ODgwNjFkNDhiNTdmNTZiMzBlZmUwNjNjODRmMjZiMjkzLi5lZmQyODkwYTMx
ZmFmODBkZmFjNTBiNzQ0MGI5ZDJmMzQ2ZWNhMmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5oCkBAIC00MSwyOCArNDEsNyBA
QCBjbGFzcyBKU0dlbmVyYXRvckZ1bmN0aW9uIGZpbmFsIDogcHVibGljIEpTRnVuY3Rpb24gewog
I2VuZGlmCiAgICAgZnJpZW5kIGNsYXNzIFZNOwogcHVibGljOgotICAgIHR5cGVkZWYgSlNGdW5j
dGlvbiBCYXNlOwotCi0gICAgZW51bSBjbGFzcyBHZW5lcmF0b3JSZXN1bWVNb2RlIDogaW50MzJf
dCB7Ci0gICAgICAgIE5vcm1hbE1vZGUgPSAwLAotICAgICAgICBSZXR1cm5Nb2RlID0gMSwKLSAg
ICAgICAgVGhyb3dNb2RlID0gMgotICAgIH07Ci0KLSAgICBlbnVtIGNsYXNzIEdlbmVyYXRvclN0
YXRlIDogaW50MzJfdCB7Ci0gICAgICAgIENvbXBsZXRlZCA9IC0xLAotICAgICAgICBFeGVjdXRp
bmcgPSAtMiwKLSAgICB9OwotCi0gICAgLy8gW3RoaXNdLCBAZ2VuZXJhdG9yLCBAZ2VuZXJhdG9y
U3RhdGUsIEBnZW5lcmF0b3JWYWx1ZSwgQGdlbmVyYXRvclJlc3VtZU1vZGUsIEBnZW5lcmF0b3JG
cmFtZS4KLSAgICBlbnVtIGNsYXNzIEdlbmVyYXRvckFyZ3VtZW50IDogaW50MzJfdCB7Ci0gICAg
ICAgIFRoaXNWYWx1ZSA9IDAsCi0gICAgICAgIEdlbmVyYXRvciA9IDEsCi0gICAgICAgIFN0YXRl
ID0gMiwKLSAgICAgICAgVmFsdWUgPSAzLAotICAgICAgICBSZXN1bWVNb2RlID0gNCwKLSAgICAg
ICAgRnJhbWUgPSA1LAotICAgIH07CisgICAgdXNpbmcgQmFzZSA9IEpTRnVuY3Rpb247CiAKICAg
ICBjb25zdCBzdGF0aWMgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVG
bGFnczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuY3BwCmluZGV4IGM2YWI4NmI4MDE3ZjkwNjI4NWFiYTIyN2NkY2QxNThmZjE3NzY2OTEuLjYz
Yjg1MjQ1ODU4NGFiZjU0YjcyOWFhNTEwYzZlZWM1MzEyY2IwM2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTgxOSw2ICs4MTks
NyBAQCBjYXBpdGFsTmFtZSAjIyBDb25zdHJ1Y3RvciogbG93ZXJOYW1lICMjIENvbnN0cnVjdG9y
ID0gZmVhdHVyZUZsYWcgPyBjYXBpdGFsTmFtZQogCiAgICAgbV9nZW5lcmF0b3JQcm90b3R5cGUt
PnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1
Y3RvciwgbV9nZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5nZXQoKSwgUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKICAgICBtX2dlbmVy
YXRvckZ1bmN0aW9uUHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0u
cHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBtX2dlbmVyYXRvclByb3RvdHlwZS5nZXQoKSwgUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsK
KyAgICBtX2dlbmVyYXRvclN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpTR2VuZXJhdG9yOjpjcmVh
dGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZ2VuZXJhdG9yUHJvdG90eXBlLmdldCgpKSk7CiAKICAg
ICBtX2FzeW5jRnVuY3Rpb25Qcm90b3R5cGUuc2V0KHZtLCB0aGlzLCBBc3luY0Z1bmN0aW9uUHJv
dG90eXBlOjpjcmVhdGUodm0sIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVy
ZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSkpKTsKICAgICBBc3luY0Z1bmN0
aW9uQ29uc3RydWN0b3IqIGFzeW5jRnVuY3Rpb25Db25zdHJ1Y3RvciA9IEFzeW5jRnVuY3Rpb25D
b25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZVN0
cnVjdHVyZSh2bSwgdGhpcywgZnVuY3Rpb25Db25zdHJ1Y3RvciksIG1fYXN5bmNGdW5jdGlvblBy
b3RvdHlwZS5nZXQoKSk7CkBAIC0xNzY3LDYgKzE3NjgsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0
Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAg
dmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9nZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZSk7
CiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9hc3luY0Z1bmN0aW9uU3RydWN0dXJl
KTsKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2FzeW5jR2VuZXJhdG9yRnVuY3Rp
b25TdHJ1Y3R1cmUpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fZ2VuZXJhdG9y
U3RydWN0dXJlKTsKICAgICB0aGlzT2JqZWN0LT5tX2l0ZXJhdG9yUmVzdWx0T2JqZWN0U3RydWN0
dXJlLnZpc2l0KHZpc2l0b3IpOwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fcmVn
RXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0
LT5tX3JlZ0V4cE1hdGNoZXNBcnJheVdpdGhHcm91cHNTdHJ1Y3R1cmUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggMTA1ZDU2YThjOGMz
ZDBhMTQxYzQ0MGFmNzRiMDg5ZTc3YmFhNGNiOS4uMmFkOTFhNTNmOGVhZThjNDQ2NWMxMzczYTg4
NDMzZTk2Yjk4MzcyMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5oCkBAIC0zNzQsNiArMzc0LDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBw
dWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVj
dHVyZT4gbV9hc3luY0Z1bmN0aW9uU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1
cmU+IG1fYXN5bmNHZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8
U3RydWN0dXJlPiBtX2dlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlOworICAgIFdyaXRlQmFycmll
cjxTdHJ1Y3R1cmU+IG1fZ2VuZXJhdG9yU3RydWN0dXJlOwogICAgIExhenlQcm9wZXJ0eTxKU0ds
b2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX2l0ZXJhdG9yUmVzdWx0T2JqZWN0U3RydWN0dXJlOwog
ICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJl
OwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcmVnRXhwTWF0Y2hlc0FycmF5V2l0aEdy
b3Vwc1N0cnVjdHVyZTsKQEAgLTc1Miw2ICs3NTMsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6
IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBTdHJ1Y3R1cmUqIG51bWJl
ck9iamVjdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fbnVtYmVyT2JqZWN0U3RydWN0dXJl
LmdldCh0aGlzKTsgfQogICAgIFN0cnVjdHVyZSogbWFwU3RydWN0dXJlKCkgY29uc3QgeyByZXR1
cm4gbV9tYXBTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIHJlZ0V4cFN0cnVjdHVy
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVnRXhwU3RydWN0dXJlLmdldCgpOyB9CisgICAgU3RydWN0
dXJlKiBnZW5lcmF0b3JTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2dlbmVyYXRvclN0cnVj
dHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogZ2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUo
KSBjb25zdCB7IHJldHVybiBtX2dlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CiAg
ICAgU3RydWN0dXJlKiBhc3luY0Z1bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9h
c3luY0Z1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBhc3luY0dlbmVy
YXRvckZ1bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9hc3luY0dlbmVyYXRvckZ1
bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNU
eXBlLmNwcAppbmRleCA4NDliMzc5MTg4ZWZjZTU3MDkyM2Y1YTFhNWE0ZjcxYmM5ZDk5NDc2Li5k
YWM1ZTY5ZGEyMDQ1MWI5MGZkNDhiMDdhNzBjMTEyMjNmNTcwNzZhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTVHlwZS5jcHAKQEAgLTk2LDYgKzk2LDcgQEAgdm9pZCBwcmludElu
dGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEpTQzo6SlNUeXBlIHR5cGUpCiAgICAgQ0FTRShXaXRo
U2NvcGVUeXBlKQogICAgIENBU0UoUmVnRXhwT2JqZWN0VHlwZSkKICAgICBDQVNFKFByb3h5T2Jq
ZWN0VHlwZSkKKyAgICBDQVNFKEpTR2VuZXJhdG9yVHlwZSkKICAgICBDQVNFKEpTUHJvbWlzZVR5
cGUpCiAgICAgQ0FTRShKU01hcFR5cGUpCiAgICAgQ0FTRShKU1NldFR5cGUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCmluZGV4IDhkMzVhYzc3OTgzNzM5YjFhM2ZlNWQ1MGE2
ZjkxYjkwMTI5ZmY3N2QuLjAxZTcwMjI3MzQ3NjRiMThkOWUzMWE5MWVlOGNkNjBhOTk1OTI1ZWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCkBAIC0xMDgsNiArMTA4LDcg
QEAgZW51bSBKU1R5cGUgOiB1aW50OF90IHsKIAogICAgIFJlZ0V4cE9iamVjdFR5cGUsCiAgICAg
UHJveHlPYmplY3RUeXBlLAorICAgIEpTR2VuZXJhdG9yVHlwZSwKICAgICBKU1Byb21pc2VUeXBl
LAogICAgIEpTTWFwVHlwZSwKICAgICBKU1NldFR5cGUsCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378286</attachid>
            <date>2019-09-07 01:47:16 -0700</date>
            <delta_ts>2019-09-09 00:43:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201159-20190907014715.patch</filename>
            <type>text/plain</type>
            <size>102042</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5NjA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
MWFiMGFiYjE5NmM5NGE1OTljMjMzNDA2OWE1MzlhMWM4ZjIyZDk5Li5lYjJhM2FlMmM0YzVlZGZk
NjU1N2RmZjliZDEyYWYxMDgzNjA1M2NmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMjggQEAKKzIwMTktMDktMDcgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBHZW5lcmF0b3Igc2hvdWxkIGhhdmUgaW50ZXJuYWwgZmllbGRz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDExNTkK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEphdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogU291cmNlcy50
eHQ6CisgICAgICAgICogYnVpbHRpbnMvQXN5bmNGdW5jdGlvblByb3RvdHlwZS5qczoKKyAgICAg
ICAgKGdsb2JhbFByaXZhdGUuYXN5bmNGdW5jdGlvblJlc3VtZSk6CisgICAgICAgICogYnVpbHRp
bnMvR2VuZXJhdG9yUHJvdG90eXBlLmpzOgorICAgICAgICAoZ2xvYmFsUHJpdmF0ZS5nZW5lcmF0
b3JSZXN1bWUpOgorICAgICAgICAobmV4dCk6CisgICAgICAgIChyZXR1cm4pOgorICAgICAgICAo
dGhyb3cpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNw
cDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb246OnJ1bik6CisgICAg
ICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5jcHA6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6OkJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkp
OgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuaDoKKyAgICAg
ICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3QucmI6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNv
ZGVVc2VEZWYuaDoKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCk6
CisgICAgICAgIChKU0M6OmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAq
IGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluaXNo
Q3JlYXRpb24pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmFsaXplTExJbnRJbmxpbmVD
YWNoZXMpOgorICAgICAgICAqIGJ5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcDoKKyAgICAgICAg
KEpTQzo6c3BlY3VsYXRpb25Gcm9tSlNUeXBlKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Qnl0
ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1
dEdlbmVyYXRvckZpZWxkcyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
Q3JlYXRlR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRO
ZXdHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFlpZWxk
KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWxlZ2F0ZVlpZWxkKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZW5lcmF0b3JTdGF0ZUNoYW5n
ZSk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXNHZW5lcmF0b3IpOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdG9yU3RhdGVSZWdpc3Rlcik6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0b3JWYWx1ZVJlZ2lzdGVyKToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3Rlcik6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0b3JGcmFtZVJlZ2lzdGVyKToK
KyAgICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6
Z2VuZXJhdG9ySW50ZXJuYWxGaWVsZEluZGV4KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVJbnRy
aW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19nZXRHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19wdXRHZW5l
cmF0b3JJbnRlcm5hbEZpZWxkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVJbnRyaW5zaWNOb2Rl
OjplbWl0X2ludHJpbnNpY19pc0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uTm9k
ZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklu
bGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0
U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sp
OgorICAgICAgICAqIGRmZy9ERkdDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OmNhcGFiaWxpdHlMZXZlbCk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAgICAg
ICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcnNFeGl0
U3RhdGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJzRXhpdFN0YXRlKToKKyAgICAg
ICAgKiBkZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OkNvbnN0YW50Rm9sZGluZ1BoYXNlOjpmb2xkQ29uc3RhbnRzKToKKyAgICAgICAgKiBkZmcvREZH
RG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAgICAqIGRmZy9E
RkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5v
ZGUpOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwSXNDZWxsV2l0aFR5cGUp
OgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6Y29u
dmVydFRvTmV3R2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNTdHJ1Y3R1
cmUpOgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdPcGVy
YXRpb25zLmNwcDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGRm
Zy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1Nh
ZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAg
ICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjb21waWxlQ3JlYXRlR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0dlbmVyYXRvcik6CisgICAgICAgICogZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmg6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAg
KiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRp
b25QaGFzZS5jcHA6CisgICAgICAgICogZnRsL0ZUTENhcGFiaWxpdGllcy5jcHA6CisgICAgICAg
IChKU0M6OkZUTDo6Y2FuQ29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5j
cHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOb2RlKToK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5ld0dlbmVyYXRv
cik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDcmVhdGVH
ZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjppc0NlbGxX
aXRoVHlwZSk6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJp
dmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVT
bG93Q2FzZXMpOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBq
aXQvSklUT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfaW50ZXJuYWxfZmllbGQpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2ludGVybmFsX2ZpZWxkKToKKyAgICAgICAgKiBsbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQ
YXRocy5jcHA6CisgICAgICAgIChKU0M6OlNMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBydW50
aW1lL0NvbW1vblNsb3dQYXRocy5oOgorICAgICAgICAqIHJ1bnRpbWUvSW50ZXJuYWxGdW5jdGlv
bi5jcHA6CisgICAgICAgIChKU0M6OkludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3Ry
dWN0dXJlU2xvdyk6CisgICAgICAgICogcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmg6CisgICAg
ICAgIChKU0M6OkludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKToKKyAg
ICAgICAgKiBydW50aW1lL0pTR2VuZXJhdG9yLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkpT
R2VuZXJhdG9yOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpKU0dlbmVyYXRvcjo6Y3JlYXRlU3Ry
dWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmF0b3I6OkpTR2VuZXJhdG9yKToKKyAgICAg
ICAgKEpTQzo6SlNHZW5lcmF0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNH
ZW5lcmF0b3I6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmF0b3Iu
aDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3JG
dW5jdGlvbi5oLgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5oOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2Jh
bE9iamVjdDo6aW5pdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxk
cmVuKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6
OkpTR2xvYmFsT2JqZWN0OjpnZW5lcmF0b3JTdHJ1Y3R1cmUgY29uc3QpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNUeXBlLmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAg
ICogcnVudGltZS9KU1R5cGUuaDoKKwogMjAxOS0wOS0wNiAgTWFyayBMYW0gIDxtYXJrLmxhbUBh
cHBsZS5jb20+CiAKICAgICAgICAgSGFyZGVuIHByb3RlY3Rpb24gb2YgdGhlIEdpZ2FjYWdlIENv
bmZpZyBwYXJhbWV0ZXJzLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAwZDg4YjU0
NGNhYzFmNzhmOGU4ZTY5NzZlZjAyMGJjM2FlZGY4N2Q2Li4yNTMwNDAzMTlmMGQyYmQzMzYyYmM1
NjIwODRjNDVkODQ1ZmVlMzU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTgw
NCw2ICsxODA0LDcgQEAKIAkJRTM0MDBFQzEyMkExQ0M3QjAwOURFRDU0IC8qIEZ1bmN0aW9uRXhl
Y3V0YWJsZUlubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUzNDAwRUMwMjJBMUNDNzgwMDlERUQ1NCAvKiBGdW5jdGlvbkV4ZWN1dGFibGVJbmxp
bmVzLmggKi87IH07CiAJCUUzNEU2NTc1MjA2NjhFQUEwMEZCODFBQyAvKiBQYXJzZUhhc2guaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNEU2NTczMjA2
NjhFOEQwMEZCODFBQyAvKiBQYXJzZUhhc2guaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzRFREJGNzFEQjVGRkM5MDBEQzg3QTUgLyogRnJhbWVU
cmFjZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
MzRFREJGNjFEQjVGRkMxMDBEQzg3QTUgLyogRnJhbWVUcmFjZXJzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTM0RjkzMEUyMzIyRDg4MjAwMkI4
REI0IC8qIEpTR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFMzRGOTMwQzIzMjJEODgxMDAyQjhEQjQgLyogSlNHZW5lcmF0b3IuaCAqLzsg
fTsKIAkJRTM1MDcwOEExREM0OUJCRjAwODlCQ0Q2IC8qIERPTUpJVFNpZ25hdHVyZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1MDcwODkxREM0OUJC
NjAwODlCQ0Q2IC8qIERPTUpJVFNpZ25hdHVyZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzNTQ2MjJCMUI2MDY1RDEwMDU0NTM4NiAvKiBDb25z
dHJ1Y3RBYmlsaXR5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMzU0NjIyQTFCNjA2NUQxMDA1NDUzODYgLyogQ29uc3RydWN0QWJpbGl0eS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzNTU1QjhBMURB
RTAzQTUwMEYzNjkyMSAvKiBET01KSVRDYWxsRE9NR2V0dGVyU25pcHBldC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1NTVCODkxREFFMDNBMjAwRjM2
OTIxIC8qIERPTUpJVENhbGxET01HZXR0ZXJTbmlwcGV0LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTQ4OTksNiArNDkwMCw4IEBACiAJCUUzNEU2
NTczMjA2NjhFOEQwMEZCODFBQyAvKiBQYXJzZUhhc2guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUGFyc2VIYXNoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUz
NEU2NTc0MjA2NjhFOEUwMEZCODFBQyAvKiBQYXJzZUhhc2guY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gUGFyc2VIYXNoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRTM0RURCRjYxREI1RkZDMTAwREM4N0E1IC8qIEZyYW1lVHJhY2Vycy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGcmFtZVRyYWNlcnMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRTM0RjkzMEIyMzIyRDg4MTAwMkI4REI0IC8qIEpTR2VuZXJhdG9y
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTR2VuZXJhdG9yLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM0RjkzMEMyMzIyRDg4MTAwMkI4REI0
IC8qIEpTR2VuZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTR2Vu
ZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNTA3MDg5MURDNDlCQjYw
MDg5QkNENiAvKiBET01KSVRTaWduYXR1cmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRE9NSklUU2lnbmF0dXJlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUz
NTQ2MjJBMUI2MDY1RDEwMDU0NTM4NiAvKiBDb25zdHJ1Y3RBYmlsaXR5LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbnN0cnVjdEFiaWxpdHkuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRTM1NTVCODkxREFFMDNBMjAwRjM2OTIxIC8qIERPTUpJVENhbGxET01H
ZXR0ZXJTbmlwcGV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUpJVENh
bGxET01HZXR0ZXJTbmlwcGV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03MTcw
LDYgKzcxNzMsOCBAQAogCQkJCUY2OTJBODVFMDI1NTU5N0QwMUZGNjBGNyAvKiBKU0Z1bmN0aW9u
LmNwcCAqLywKIAkJCQlGNjkyQTg1RjAyNTU1OTdEMDFGRjYwRjcgLyogSlNGdW5jdGlvbi5oICov
LAogCQkJCUE3MjAyOEI5MTc5NzYwM0QwMDk4MDI4QyAvKiBKU0Z1bmN0aW9uSW5saW5lcy5oICov
LAorCQkJCUUzNEY5MzBCMjMyMkQ4ODEwMDJCOERCNCAvKiBKU0dlbmVyYXRvci5jcHAgKi8sCisJ
CQkJRTM0RjkzMEMyMzIyRDg4MTAwMkI4REI0IC8qIEpTR2VuZXJhdG9yLmggKi8sCiAJCQkJNzBC
NzkxOEMxQzAyNDQ2MjAwMjQ4MUUyIC8qIEpTR2VuZXJhdG9yRnVuY3Rpb24uY3BwICovLAogCQkJ
CTcwQjc5MThEMUMwMjQ0NjIwMDI0ODFFMiAvKiBKU0dlbmVyYXRvckZ1bmN0aW9uLmggKi8sCiAJ
CQkJMEYyQjY2QzMxN0I2QjVBQjAwQTdBRTNGIC8qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Lmgg
Ki8sCkBAIC05NjI5LDYgKzk2MzQsNyBAQAogCQkJCTBGMkI2NkYwMTdCNkI1QUIwMEE3QUUzRiAv
KiBKU0Zsb2F0NjRBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MUYwRTE2RjVDRDAw
QjM0NDYwIC8qIEpTRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUE3MjAyOEJBMTc5NzYw
M0QwMDk4MDI4QyAvKiBKU0Z1bmN0aW9uSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM0
RjkzMEUyMzIyRDg4MjAwMkI4REI0IC8qIEpTR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk3MEI3OTE5QzFDMDI0QTQ5MDAyNDgxRTIgLyogSlNHZW5lcmF0b3JGdW5jdGlvbi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEYyQjY2RjExN0I2QjVBQjAwQTdBRTNGIC8qIEpTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCNjZGMjE3QjZCNUFCMDBBN0FFM0Yg
LyogSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvU291cmNlcy50eHQKaW5kZXggMjYyMTkzYjIzODUxMmY4ZTk1ZGVkMTRhYjI4
OTBjNTFkYmM1ZTljMC4uZDEwMTIwMjI3YTBjMWJlYTU5ODkyYTI2OWRhY2I0Zjg1NDBiNWY5YyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dApAQCAtODI0LDYgKzgyNCw3IEBAIHJ1bnRpbWUv
SlNEYXRlTWF0aC5jcHAKIHJ1bnRpbWUvSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUu
Y3BwCiBydW50aW1lL0pTRml4ZWRBcnJheS5jcHAKIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHAKK3J1
bnRpbWUvSlNHZW5lcmF0b3IuY3BwCiBydW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uY3BwCiBy
dW50aW1lL0pTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50LmNwcAogcnVudGltZS9KU0dsb2JhbE9i
amVjdC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Bc3lu
Y0Z1bmN0aW9uUHJvdG90eXBlLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0Fz
eW5jRnVuY3Rpb25Qcm90b3R5cGUuanMKaW5kZXggNTIxNGJkNmYzYTFiNGUyZTVmMWU5NWFhMWM5
OTExODk5Yjg5NTAwZi4uOTY4Y2YxZTczNDYxOTJmMWQ0NThjMzc5OGVjMzdjOGQxYmM5MWQwMiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0FzeW5jRnVuY3Rpb25Q
cm90b3R5cGUuanMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0FzeW5jRnVu
Y3Rpb25Qcm90b3R5cGUuanMKQEAgLTMxLDIyICszMSwyMiBAQCBmdW5jdGlvbiBhc3luY0Z1bmN0
aW9uUmVzdW1lKGdlbmVyYXRvciwgcHJvbWlzZSwgc2VudFZhbHVlLCByZXN1bWVNb2RlKQogCiAg
ICAgQGFzc2VydChAaXNQcm9taXNlKHByb21pc2UpKTsKIAotICAgIHZhciBzdGF0ZSA9IEBnZXRC
eUlkRGlyZWN0UHJpdmF0ZShnZW5lcmF0b3IsICJnZW5lcmF0b3JTdGF0ZSIpOworICAgIHZhciBz
dGF0ZSA9IEBnZXRHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKGdlbmVyYXRvciwgQGdlbmVyYXRvckZp
ZWxkU3RhdGUpOwogICAgIHZhciB2YWx1ZSA9IEB1bmRlZmluZWQ7CiAKICAgICBpZiAoc3RhdGUg
PT09IEBHZW5lcmF0b3JTdGF0ZUNvbXBsZXRlZCB8fCAocmVzdW1lTW9kZSAhPT0gQEdlbmVyYXRv
clJlc3VtZU1vZGVOb3JtYWwgJiYgcmVzdW1lTW9kZSAhPT0gQEdlbmVyYXRvclJlc3VtZU1vZGVU
aHJvdykpCiAgICAgICAgIEB0aHJvd1R5cGVFcnJvcigiQXN5bmMgZnVuY3Rpb24gaWxsZWdhbGx5
IHJlc3VtZWQiKTsKIAogICAgIHRyeSB7Ci0gICAgICAgIEBwdXRCeUlkRGlyZWN0UHJpdmF0ZShn
ZW5lcmF0b3IsICJnZW5lcmF0b3JTdGF0ZSIsIEBHZW5lcmF0b3JTdGF0ZUV4ZWN1dGluZyk7Ci0g
ICAgICAgIHZhbHVlID0gQGdldEJ5SWREaXJlY3RQcml2YXRlKGdlbmVyYXRvciwgImdlbmVyYXRv
ck5leHQiKS5AY2FsbChAZ2V0QnlJZERpcmVjdFByaXZhdGUoZ2VuZXJhdG9yLCAiZ2VuZXJhdG9y
VGhpcyIpLCBnZW5lcmF0b3IsIHN0YXRlLCBzZW50VmFsdWUsIHJlc3VtZU1vZGUsIEBnZXRCeUlk
RGlyZWN0UHJpdmF0ZShnZW5lcmF0b3IsICJnZW5lcmF0b3JGcmFtZSIpKTsKLSAgICAgICAgaWYg
KEBnZXRCeUlkRGlyZWN0UHJpdmF0ZShnZW5lcmF0b3IsICJnZW5lcmF0b3JTdGF0ZSIpID09PSBA
R2VuZXJhdG9yU3RhdGVFeGVjdXRpbmcpIHsKLSAgICAgICAgICAgIEBwdXRCeUlkRGlyZWN0UHJp
dmF0ZShnZW5lcmF0b3IsICJnZW5lcmF0b3JTdGF0ZSIsIEBHZW5lcmF0b3JTdGF0ZUNvbXBsZXRl
ZCk7CisgICAgICAgIEBwdXRHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKGdlbmVyYXRvciwgQGdlbmVy
YXRvckZpZWxkU3RhdGUsIEBHZW5lcmF0b3JTdGF0ZUV4ZWN1dGluZyk7CisgICAgICAgIHZhbHVl
ID0gQGdldEdlbmVyYXRvckludGVybmFsRmllbGQoZ2VuZXJhdG9yLCBAZ2VuZXJhdG9yRmllbGRO
ZXh0KS5AY2FsbChAZ2V0R2VuZXJhdG9ySW50ZXJuYWxGaWVsZChnZW5lcmF0b3IsIEBnZW5lcmF0
b3JGaWVsZFRoaXMpLCBnZW5lcmF0b3IsIHN0YXRlLCBzZW50VmFsdWUsIHJlc3VtZU1vZGUsIEBn
ZXRHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKGdlbmVyYXRvciwgQGdlbmVyYXRvckZpZWxkRnJhbWUp
KTsKKyAgICAgICAgaWYgKEBnZXRHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKGdlbmVyYXRvciwgQGdl
bmVyYXRvckZpZWxkU3RhdGUpID09PSBAR2VuZXJhdG9yU3RhdGVFeGVjdXRpbmcpIHsKKyAgICAg
ICAgICAgIEBwdXRHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKGdlbmVyYXRvciwgQGdlbmVyYXRvckZp
ZWxkU3RhdGUsIEBHZW5lcmF0b3JTdGF0ZUNvbXBsZXRlZCk7CiAgICAgICAgICAgICBAcmVzb2x2
ZVByb21pc2VXaXRoRmlyc3RSZXNvbHZpbmdGdW5jdGlvbkNhbGxDaGVjayhwcm9taXNlLCB2YWx1
ZSk7CiAgICAgICAgICAgICByZXR1cm4gcHJvbWlzZTsKICAgICAgICAgfQogICAgIH0gY2F0Y2gg
KGVycm9yKSB7Ci0gICAgICAgIEBwdXRCeUlkRGlyZWN0UHJpdmF0ZShnZW5lcmF0b3IsICJnZW5l
cmF0b3JTdGF0ZSIsIEBHZW5lcmF0b3JTdGF0ZUNvbXBsZXRlZCk7CisgICAgICAgIEBwdXRHZW5l
cmF0b3JJbnRlcm5hbEZpZWxkKGdlbmVyYXRvciwgQGdlbmVyYXRvckZpZWxkU3RhdGUsIEBHZW5l
cmF0b3JTdGF0ZUNvbXBsZXRlZCk7CiAgICAgICAgIEByZWplY3RQcm9taXNlV2l0aEZpcnN0UmVz
b2x2aW5nRnVuY3Rpb25DYWxsQ2hlY2socHJvbWlzZSwgZXJyb3IpOwogICAgICAgICByZXR1cm4g
cHJvbWlzZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRp
bnMvR2VuZXJhdG9yUHJvdG90eXBlLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5z
L0dlbmVyYXRvclByb3RvdHlwZS5qcwppbmRleCBiMjgwMWRmODgyYjhhOGJjNmUxNWU2ZTE0YTlm
Mjk2Y2QxYzY5MjVkLi44MzkzZWEyOGFlODk5NzY5MmNmZWI2ZWUyNTRiYWY3OTUyNzFjMDhkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvR2VuZXJhdG9yUHJvdG90
eXBlLmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9HZW5lcmF0b3JQcm90
b3R5cGUuanMKQEAgLTM0LDE0ICszNCwxNCBAQCBmdW5jdGlvbiBnZW5lcmF0b3JSZXN1bWUoZ2Vu
ZXJhdG9yLCBzdGF0ZSwgZ2VuZXJhdG9yVGhpcywgc2VudFZhbHVlLCB2YWx1ZSwgcmVzdQogICAg
IHZhciBkb25lID0gc3RhdGUgPT09IEBHZW5lcmF0b3JTdGF0ZUNvbXBsZXRlZDsKICAgICBpZiAo
IWRvbmUpIHsKICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIEBwdXRCeUlkRGlyZWN0UHJpdmF0
ZShnZW5lcmF0b3IsICJnZW5lcmF0b3JTdGF0ZSIsIEBHZW5lcmF0b3JTdGF0ZUV4ZWN1dGluZyk7
Ci0gICAgICAgICAgICB2YWx1ZSA9IEBnZXRCeUlkRGlyZWN0UHJpdmF0ZShnZW5lcmF0b3IsICJn
ZW5lcmF0b3JOZXh0IikuQGNhbGwoZ2VuZXJhdG9yVGhpcywgZ2VuZXJhdG9yLCBzdGF0ZSwgc2Vu
dFZhbHVlLCByZXN1bWVNb2RlLCBAZ2V0QnlJZERpcmVjdFByaXZhdGUoZ2VuZXJhdG9yLCAiZ2Vu
ZXJhdG9yRnJhbWUiKSk7Ci0gICAgICAgICAgICBpZiAoQGdldEJ5SWREaXJlY3RQcml2YXRlKGdl
bmVyYXRvciwgImdlbmVyYXRvclN0YXRlIikgPT09IEBHZW5lcmF0b3JTdGF0ZUV4ZWN1dGluZykg
ewotICAgICAgICAgICAgICAgIEBwdXRCeUlkRGlyZWN0UHJpdmF0ZShnZW5lcmF0b3IsICJnZW5l
cmF0b3JTdGF0ZSIsIEBHZW5lcmF0b3JTdGF0ZUNvbXBsZXRlZCk7CisgICAgICAgICAgICBAcHV0
R2VuZXJhdG9ySW50ZXJuYWxGaWVsZChnZW5lcmF0b3IsIEBnZW5lcmF0b3JGaWVsZFN0YXRlLCBA
R2VuZXJhdG9yU3RhdGVFeGVjdXRpbmcpOworICAgICAgICAgICAgdmFsdWUgPSBAZ2V0R2VuZXJh
dG9ySW50ZXJuYWxGaWVsZChnZW5lcmF0b3IsIEBnZW5lcmF0b3JGaWVsZE5leHQpLkBjYWxsKGdl
bmVyYXRvclRoaXMsIGdlbmVyYXRvciwgc3RhdGUsIHNlbnRWYWx1ZSwgcmVzdW1lTW9kZSwgQGdl
dEdlbmVyYXRvckludGVybmFsRmllbGQoZ2VuZXJhdG9yLCBAZ2VuZXJhdG9yRmllbGRGcmFtZSkp
OworICAgICAgICAgICAgaWYgKEBnZXRHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKGdlbmVyYXRvciwg
QGdlbmVyYXRvckZpZWxkU3RhdGUpID09PSBAR2VuZXJhdG9yU3RhdGVFeGVjdXRpbmcpIHsKKyAg
ICAgICAgICAgICAgICBAcHV0R2VuZXJhdG9ySW50ZXJuYWxGaWVsZChnZW5lcmF0b3IsIEBnZW5l
cmF0b3JGaWVsZFN0YXRlLCBAR2VuZXJhdG9yU3RhdGVDb21wbGV0ZWQpOwogICAgICAgICAgICAg
ICAgIGRvbmUgPSB0cnVlOwogICAgICAgICAgICAgfQogICAgICAgICB9IGNhdGNoIChlcnJvcikg
ewotICAgICAgICAgICAgQHB1dEJ5SWREaXJlY3RQcml2YXRlKGdlbmVyYXRvciwgImdlbmVyYXRv
clN0YXRlIiwgQEdlbmVyYXRvclN0YXRlQ29tcGxldGVkKTsKKyAgICAgICAgICAgIEBwdXRHZW5l
cmF0b3JJbnRlcm5hbEZpZWxkKGdlbmVyYXRvciwgQGdlbmVyYXRvckZpZWxkU3RhdGUsIEBHZW5l
cmF0b3JTdGF0ZUNvbXBsZXRlZCk7CiAgICAgICAgICAgICB0aHJvdyBlcnJvcjsKICAgICAgICAg
fQogICAgIH0KQEAgLTUyLDQzICs1Miw0MyBAQCBmdW5jdGlvbiBuZXh0KHZhbHVlKQogewogICAg
ICJ1c2Ugc3RyaWN0IjsKIAotICAgIHZhciBzdGF0ZSA9IEBnZXRCeUlkRGlyZWN0UHJpdmF0ZSh0
aGlzLCAiZ2VuZXJhdG9yU3RhdGUiKTsKLSAgICBpZiAodHlwZW9mIHN0YXRlICE9PSAibnVtYmVy
IikKKyAgICBpZiAoIUBpc0dlbmVyYXRvcih0aGlzKSkKICAgICAgICAgQHRocm93VHlwZUVycm9y
KCJ8dGhpc3wgc2hvdWxkIGJlIGEgZ2VuZXJhdG9yIik7CiAKKyAgICB2YXIgc3RhdGUgPSBAZ2V0
R2VuZXJhdG9ySW50ZXJuYWxGaWVsZCh0aGlzLCBAZ2VuZXJhdG9yRmllbGRTdGF0ZSk7CiAgICAg
aWYgKHN0YXRlID09PSBAR2VuZXJhdG9yU3RhdGVFeGVjdXRpbmcpCiAgICAgICAgIEB0aHJvd1R5
cGVFcnJvcigiR2VuZXJhdG9yIGlzIGV4ZWN1dGluZyIpOwogCi0gICAgcmV0dXJuIEBnZW5lcmF0
b3JSZXN1bWUodGhpcywgc3RhdGUsIEBnZXRCeUlkRGlyZWN0UHJpdmF0ZSh0aGlzLCAiZ2VuZXJh
dG9yVGhpcyIpLCB2YWx1ZSwgQHVuZGVmaW5lZCwgQEdlbmVyYXRvclJlc3VtZU1vZGVOb3JtYWwp
OworICAgIHJldHVybiBAZ2VuZXJhdG9yUmVzdW1lKHRoaXMsIHN0YXRlLCBAZ2V0R2VuZXJhdG9y
SW50ZXJuYWxGaWVsZCh0aGlzLCBAZ2VuZXJhdG9yRmllbGRUaGlzKSwgdmFsdWUsIEB1bmRlZmlu
ZWQsIEBHZW5lcmF0b3JSZXN1bWVNb2RlTm9ybWFsKTsKIH0KIAogZnVuY3Rpb24gcmV0dXJuKHZh
bHVlKQogewogICAgICJ1c2Ugc3RyaWN0IjsKIAotICAgIHZhciBzdGF0ZSA9IEBnZXRCeUlkRGly
ZWN0UHJpdmF0ZSh0aGlzLCAiZ2VuZXJhdG9yU3RhdGUiKTsKLSAgICBpZiAodHlwZW9mIHN0YXRl
ICE9PSAibnVtYmVyIikKKyAgICBpZiAoIUBpc0dlbmVyYXRvcih0aGlzKSkKICAgICAgICAgQHRo
cm93VHlwZUVycm9yKCJ8dGhpc3wgc2hvdWxkIGJlIGEgZ2VuZXJhdG9yIik7CiAKKyAgICB2YXIg
c3RhdGUgPSBAZ2V0R2VuZXJhdG9ySW50ZXJuYWxGaWVsZCh0aGlzLCBAZ2VuZXJhdG9yRmllbGRT
dGF0ZSk7CiAgICAgaWYgKHN0YXRlID09PSBAR2VuZXJhdG9yU3RhdGVFeGVjdXRpbmcpCiAgICAg
ICAgIEB0aHJvd1R5cGVFcnJvcigiR2VuZXJhdG9yIGlzIGV4ZWN1dGluZyIpOwogCi0gICAgcmV0
dXJuIEBnZW5lcmF0b3JSZXN1bWUodGhpcywgc3RhdGUsIEBnZXRCeUlkRGlyZWN0UHJpdmF0ZSh0
aGlzLCAiZ2VuZXJhdG9yVGhpcyIpLCB2YWx1ZSwgdmFsdWUsIEBHZW5lcmF0b3JSZXN1bWVNb2Rl
UmV0dXJuKTsKKyAgICByZXR1cm4gQGdlbmVyYXRvclJlc3VtZSh0aGlzLCBzdGF0ZSwgQGdldEdl
bmVyYXRvckludGVybmFsRmllbGQodGhpcywgQGdlbmVyYXRvckZpZWxkVGhpcyksIHZhbHVlLCB2
YWx1ZSwgQEdlbmVyYXRvclJlc3VtZU1vZGVSZXR1cm4pOwogfQogCiBmdW5jdGlvbiB0aHJvdyhl
eGNlcHRpb24pCiB7CiAgICAgInVzZSBzdHJpY3QiOwogCi0gICAgdmFyIHN0YXRlID0gQGdldEJ5
SWREaXJlY3RQcml2YXRlKHRoaXMsICJnZW5lcmF0b3JTdGF0ZSIpOwotICAgIGlmICh0eXBlb2Yg
c3RhdGUgIT09ICJudW1iZXIiKQorICAgIGlmICghQGlzR2VuZXJhdG9yKHRoaXMpKQogICAgICAg
ICBAdGhyb3dUeXBlRXJyb3IoInx0aGlzfCBzaG91bGQgYmUgYSBnZW5lcmF0b3IiKTsKIAorICAg
IHZhciBzdGF0ZSA9IEBnZXRHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKHRoaXMsIEBnZW5lcmF0b3JG
aWVsZFN0YXRlKTsKICAgICBpZiAoc3RhdGUgPT09IEBHZW5lcmF0b3JTdGF0ZUV4ZWN1dGluZykK
ICAgICAgICAgQHRocm93VHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgZXhlY3V0aW5nIik7CiAKICAg
ICBpZiAoc3RhdGUgPT09IEBHZW5lcmF0b3JTdGF0ZUNvbXBsZXRlZCkKICAgICAgICAgdGhyb3cg
ZXhjZXB0aW9uOwogCi0gICAgcmV0dXJuIEBnZW5lcmF0b3JSZXN1bWUodGhpcywgc3RhdGUsIEBn
ZXRCeUlkRGlyZWN0UHJpdmF0ZSh0aGlzLCAiZ2VuZXJhdG9yVGhpcyIpLCBleGNlcHRpb24sIEB1
bmRlZmluZWQsIEBHZW5lcmF0b3JSZXN1bWVNb2RlVGhyb3cpOworICAgIHJldHVybiBAZ2VuZXJh
dG9yUmVzdW1lKHRoaXMsIHN0YXRlLCBAZ2V0R2VuZXJhdG9ySW50ZXJuYWxGaWVsZCh0aGlzLCBA
Z2VuZXJhdG9yRmllbGRUaGlzKSwgZXhjZXB0aW9uLCBAdW5kZWZpbmVkLCBAR2VuZXJhdG9yUmVz
dW1lTW9kZVRocm93KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwCmluZGV4IDk1NDRiY2I0
Yzg4NjliMzQ1ODZmMTY2Yzg3NGNiYjA4MTUwM2VmZGYuLjI4NjA1MWNjOTVlYTRkOGZkYTY2ZmIw
OTk3YmI1OTNlZGU3ZTMyYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcApAQCAtMzYsNyAr
MzYsNyBAQAogI2luY2x1ZGUgIkludGVycHJldGVySW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ0lu
bGluZXMuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgotI2luY2x1ZGUgIkpTR2Vu
ZXJhdG9yRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0dlbmVyYXRvci5oIgogI2luY2x1ZGUgIkxh
YmVsLmgiCiAjaW5jbHVkZSAiU3Ryb25nSW5saW5lcy5oIgogI2luY2x1ZGUgIlVubGlua2VkQ29k
ZUJsb2NrLmgiCkBAIC0yMjMsNyArMjIzLDcgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcmlmaWNh
dGlvbjo6cnVuKCkKICAgICB7CiAgICAgICAgIGF1dG8gbmV4dFRvRW50ZXJQb2ludCA9IGVudGVy
UG9pbnQoKS5uZXh0KCk7CiAgICAgICAgIHVuc2lnbmVkIHN3aXRjaFRhYmxlSW5kZXggPSBtX2Nv
ZGVCbG9jay0+bnVtYmVyT2ZTd2l0Y2hKdW1wVGFibGVzKCk7Ci0gICAgICAgIFZpcnR1YWxSZWdp
c3RlciBzdGF0ZSA9IHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KHN0YXRpY19jYXN0PGludDMy
X3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvckFyZ3VtZW50OjpTdGF0ZSkpOworICAg
ICAgICBWaXJ0dWFsUmVnaXN0ZXIgc3RhdGUgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChz
dGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9yQXJndW1lbnQ6OlN0YXRl
KSk7CiAgICAgICAgIGF1dG8mIGp1bXBUYWJsZSA9IG1fY29kZUJsb2NrLT5hZGRTd2l0Y2hKdW1w
VGFibGUoKTsKICAgICAgICAganVtcFRhYmxlLm1pbiA9IDA7CiAgICAgICAgIGp1bXBUYWJsZS5i
cmFuY2hPZmZzZXRzLnJlc2l6ZShtX3lpZWxkcy5zaXplKCkgKyAxKTsKQEAgLTIzOCw3ICsyMzgs
NyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uOjpydW4oKQogICAgIH0KIAogICAg
IGZvciAoY29uc3QgWWllbGREYXRhJiBkYXRhIDogbV95aWVsZHMpIHsKLSAgICAgICAgVmlydHVh
bFJlZ2lzdGVyIHNjb3BlID0gdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoc3RhdGljX2Nhc3Q8
aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yQXJndW1lbnQ6OkZyYW1lKSk7
CisgICAgICAgIFZpcnR1YWxSZWdpc3RlciBzY29wZSA9IHZpcnR1YWxSZWdpc3RlckZvckFyZ3Vt
ZW50KHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpHZW5lcmF0b3JBcmd1bWVudDo6
RnJhbWUpKTsKIAogICAgICAgICBhdXRvIGluc3RydWN0aW9uID0gbV9pbnN0cnVjdGlvbnMuYXQo
ZGF0YS5wb2ludCk7CiAgICAgICAgIC8vIEVtaXQgc2F2ZSBzZXF1ZW5jZS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1Jl
Z2lzdHJ5LmNwcAppbmRleCAxOTg0NDNkNTMxZmM2Yzc5ZTdlYTE1NTM4YjIzMDFmZWJmZjQ1ZjZk
Li4zYWQyYmFkNDUzNWYyMjBmZGU0YzNjYWE3NGYzYjA4MzVmMzlhMDAzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2lj
UmVnaXN0cnkuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSAiSXRlcmF0aW9uS2luZC5o
IgogI2luY2x1ZGUgIkpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQ0lu
bGluZXMuaCIKLSNpbmNsdWRlICJKU0dlbmVyYXRvckZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNH
ZW5lcmF0b3IuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTTW9k
dWxlTG9hZGVyLmgiCiAjaW5jbHVkZSAiSlNQcm9taXNlLmgiCkBAIC03NCwxMSArNzQsMTUgQEAg
Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeShWTSYg
dm0pCiAgICAgbV9wcm9taXNlRmxhZ3NJc0ZpcnN0UmVzb2x2aW5nRnVuY3Rpb25DYWxsZWQuc2V0
KG1fdm0sIGpzTnVtYmVyKEpTUHJvbWlzZTo6aXNGaXJzdFJlc29sdmluZ0Z1bmN0aW9uQ2FsbGVk
RmxhZykpOwogICAgIG1fcHJvbWlzZUZpZWxkRmxhZ3Muc2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU1Byb21pc2U6OkZpZWxkOjpGbGFncykpKTsKICAgICBtX3Byb21p
c2VGaWVsZFJlYWN0aW9uc09yUmVzdWx0LnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNQcm9taXNlOjpGaWVsZDo6UmVhY3Rpb25zT3JSZXN1bHQpKSk7Ci0gICAgbV9H
ZW5lcmF0b3JSZXN1bWVNb2RlTm9ybWFsLnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDxp
bnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JSZXN1bWVNb2RlOjpOb3JtYWxN
b2RlKSkpOwotICAgIG1fR2VuZXJhdG9yUmVzdW1lTW9kZVRocm93LnNldChtX3ZtLCBqc051bWJl
cihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JSZXN1
bWVNb2RlOjpUaHJvd01vZGUpKSk7Ci0gICAgbV9HZW5lcmF0b3JSZXN1bWVNb2RlUmV0dXJuLnNl
dChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9u
OjpHZW5lcmF0b3JSZXN1bWVNb2RlOjpSZXR1cm5Nb2RlKSkpOwotICAgIG1fR2VuZXJhdG9yU3Rh
dGVDb21wbGV0ZWQuc2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2Vu
ZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvclN0YXRlOjpDb21wbGV0ZWQpKSk7Ci0gICAgbV9HZW5l
cmF0b3JTdGF0ZUV4ZWN1dGluZy5zZXQobV92bSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJf
dD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yU3RhdGU6OkV4ZWN1dGluZykpKTsKKyAg
ICBtX2dlbmVyYXRvckZpZWxkU3RhdGUuc2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0dlbmVyYXRvcjo6RmllbGQ6OlN0YXRlKSkpOworICAgIG1fZ2VuZXJhdG9yRmll
bGROZXh0LnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNHZW5lcmF0
b3I6OkZpZWxkOjpOZXh0KSkpOworICAgIG1fZ2VuZXJhdG9yRmllbGRUaGlzLnNldChtX3ZtLCBq
c051bWJlcihzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNHZW5lcmF0b3I6OkZpZWxkOjpUaGlzKSkp
OworICAgIG1fZ2VuZXJhdG9yRmllbGRGcmFtZS5zZXQobV92bSwganNOdW1iZXIoc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTR2VuZXJhdG9yOjpGaWVsZDo6RnJhbWUpKSk7CisgICAgbV9HZW5lcmF0
b3JSZXN1bWVNb2RlTm9ybWFsLnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90
PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9yUmVzdW1lTW9kZTo6Tm9ybWFsTW9kZSkpKTsKKyAgICBt
X0dlbmVyYXRvclJlc3VtZU1vZGVUaHJvdy5zZXQobV92bSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8
aW50MzJfdD4oSlNHZW5lcmF0b3I6OkdlbmVyYXRvclJlc3VtZU1vZGU6OlRocm93TW9kZSkpKTsK
KyAgICBtX0dlbmVyYXRvclJlc3VtZU1vZGVSZXR1cm4uc2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRp
Y19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpHZW5lcmF0b3JSZXN1bWVNb2RlOjpSZXR1cm5N
b2RlKSkpOworICAgIG1fR2VuZXJhdG9yU3RhdGVDb21wbGV0ZWQuc2V0KG1fdm0sIGpzTnVtYmVy
KHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpHZW5lcmF0b3JTdGF0ZTo6Q29tcGxl
dGVkKSkpOworICAgIG1fR2VuZXJhdG9yU3RhdGVFeGVjdXRpbmcuc2V0KG1fdm0sIGpzTnVtYmVy
KHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpHZW5lcmF0b3JTdGF0ZTo6RXhlY3V0
aW5nKSkpOwogICAgIG1fQXN5bmNHZW5lcmF0b3JTdGF0ZUNvbXBsZXRlZC5zZXQobV92bSwganNO
dW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uOjpBc3lu
Y0dlbmVyYXRvclN0YXRlOjpDb21wbGV0ZWQpKSk7CiAgICAgbV9Bc3luY0dlbmVyYXRvclN0YXRl
RXhlY3V0aW5nLnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0FzeW5j
R2VuZXJhdG9yRnVuY3Rpb246OkFzeW5jR2VuZXJhdG9yU3RhdGU6OkV4ZWN1dGluZykpKTsKICAg
ICBtX0FzeW5jR2VuZXJhdG9yU3RhdGVTdXNwZW5kZWRTdGFydC5zZXQobV92bSwganNOdW1iZXIo
c3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uOjpBc3luY0dlbmVy
YXRvclN0YXRlOjpTdXNwZW5kZWRTdGFydCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5oCmluZGV4IGQ1
ZjZjM2IwNWVlYjg5NjU5YWNkOTg3YjE2ZjIwYzk0MzZiYmE3NTAuLjI4MGI3ZjkwNmQ2NWU1MGZm
Yjc2NzVlMTFlYTJlMjkzYjdkNTdlYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuaApAQCAtNDIsMTEg
KzQyLDEzIEBAIGNsYXNzIFJlZ2lzdGVySUQ7CiAgICAgbWFjcm8oZ2V0QnlJZERpcmVjdCkgXAog
ICAgIG1hY3JvKGdldEJ5SWREaXJlY3RQcml2YXRlKSBcCiAgICAgbWFjcm8oZ2V0UHJvbWlzZUlu
dGVybmFsRmllbGQpIFwKKyAgICBtYWNybyhnZXRHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKSBcCiAg
ICAgbWFjcm8oaWRXaXRoUHJvZmlsZSkgXAogICAgIG1hY3JvKGlzT2JqZWN0KSBcCiAgICAgbWFj
cm8oaXNKU0FycmF5KSBcCiAgICAgbWFjcm8oaXNQcm94eU9iamVjdCkgXAogICAgIG1hY3JvKGlz
RGVyaXZlZEFycmF5KSBcCisgICAgbWFjcm8oaXNHZW5lcmF0b3IpIFwKICAgICBtYWNybyhpc1By
b21pc2UpIFwKICAgICBtYWNybyhpc1JlZ0V4cE9iamVjdCkgXAogICAgIG1hY3JvKGlzTWFwKSBc
CkBAIC02MSw2ICs2Myw3IEBAIGNsYXNzIFJlZ2lzdGVySUQ7CiAgICAgbWFjcm8ocHV0QnlJZERp
cmVjdFByaXZhdGUpIFwKICAgICBtYWNybyhwdXRCeVZhbERpcmVjdCkgXAogICAgIG1hY3JvKHB1
dFByb21pc2VJbnRlcm5hbEZpZWxkKSBcCisgICAgbWFjcm8ocHV0R2VuZXJhdG9ySW50ZXJuYWxG
aWVsZCkgXAogICAgIG1hY3JvKHRvTnVtYmVyKSBcCiAgICAgbWFjcm8odG9TdHJpbmcpIFwKICAg
ICBtYWNybyh0b09iamVjdCkgXApAQCAtOTgsNiArMTAxLDEwIEBAIGNsYXNzIFJlZ2lzdGVySUQ7
CiAgICAgbWFjcm8ocHJvbWlzZUZsYWdzSXNGaXJzdFJlc29sdmluZ0Z1bmN0aW9uQ2FsbGVkKSBc
CiAgICAgbWFjcm8ocHJvbWlzZUZpZWxkRmxhZ3MpIFwKICAgICBtYWNybyhwcm9taXNlRmllbGRS
ZWFjdGlvbnNPclJlc3VsdCkgXAorICAgIG1hY3JvKGdlbmVyYXRvckZpZWxkU3RhdGUpIFwKKyAg
ICBtYWNybyhnZW5lcmF0b3JGaWVsZE5leHQpIFwKKyAgICBtYWNybyhnZW5lcmF0b3JGaWVsZFRo
aXMpIFwKKyAgICBtYWNybyhnZW5lcmF0b3JGaWVsZEZyYW1lKSBcCiAgICAgbWFjcm8oR2VuZXJh
dG9yUmVzdW1lTW9kZU5vcm1hbCkgXAogICAgIG1hY3JvKEdlbmVyYXRvclJlc3VtZU1vZGVUaHJv
dykgXAogICAgIG1hY3JvKEdlbmVyYXRvclJlc3VtZU1vZGVSZXR1cm4pIFwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCmluZGV4IDNiMzk5OGFiNTBj
ZDYyMDMwOWJhYzZkNjdmZDY5MThmZjRhMDFhNzUuLjFiYTQxZjEwNmI3YTExNTEyNTU3MTJmNmEz
ZDkzMzc3MGYyZDczZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUxpc3QucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlTGlzdC5yYgpAQCAtMTM0LDYgKzEzNCwyMCBAQAogICAgICAgICBpc0ludGVybmFsUHJv
bWlzZTogYm9vbCwKICAgICB9CiAKK29wIDpjcmVhdGVfZ2VuZXJhdG9yLAorICAgIGFyZ3M6IHsK
KyAgICAgICAgZHN0OiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgICAgIGNhbGxlZTogVmlydHVhbFJl
Z2lzdGVyLAorICAgIH0sCisgICAgbWV0YWRhdGE6IHsKKyAgICAgICAgY2FjaGVkQ2FsbGVlOiBX
cml0ZUJhcnJpZXJbSlNDZWxsXQorICAgIH0KKworb3AgOm5ld19nZW5lcmF0b3IsCisgICAgYXJn
czogeworICAgICAgICBkc3Q6IFZpcnR1YWxSZWdpc3RlciwKKyAgICB9CisKIG9wIDpnZXRfYXJn
dW1lbnQsCiAgICAgYXJnczogewogICAgICAgICBkc3Q6IFZpcnR1YWxSZWdpc3RlciwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKaW5kZXggYmUw
ODU5NjQwZmIxMDdkZThiNzgyYmNmYTUwODFiYzdkMWM3OWJjMi4uNDA3OTI0OTk2NWQ1NjE4ZTkz
Zjk4NjcyNDcyNGVjYzM3MzIwMTVjNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKQEAgLTgwLDYgKzgwLDcgQEAgdm9pZCBjb21wdXRlVXNl
c0ZvckJ5dGVjb2RlT2Zmc2V0KEJsb2NrKiBjb2RlQmxvY2ssIE9wY29kZUlEIG9wY29kZUlELCBj
b25zdCBJbnMKICAgICBjYXNlIG9wX2ptcDoKICAgICBjYXNlIG9wX25ld19vYmplY3Q6CiAgICAg
Y2FzZSBvcF9uZXdfcHJvbWlzZToKKyAgICBjYXNlIG9wX25ld19nZW5lcmF0b3I6CiAgICAgY2Fz
ZSBvcF9lbnRlcjoKICAgICBjYXNlIG9wX2FyZ3VtZW50X2NvdW50OgogICAgIGNhc2Ugb3BfY2F0
Y2g6CkBAIC0xOTQsNiArMTk1LDcgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0
KEJsb2NrKiBjb2RlQmxvY2ssIE9wY29kZUlEIG9wY29kZUlELCBjb25zdCBJbnMKICAgICBVU0VT
KE9wTmV3QXJyYXlXaXRoU2l6ZSwgbGVuZ3RoKQogICAgIFVTRVMoT3BDcmVhdGVUaGlzLCBjYWxs
ZWUpCiAgICAgVVNFUyhPcENyZWF0ZVByb21pc2UsIGNhbGxlZSkKKyAgICBVU0VTKE9wQ3JlYXRl
R2VuZXJhdG9yLCBjYWxsZWUpCiAgICAgVVNFUyhPcERlbEJ5SWQsIGJhc2UpCiAgICAgVVNFUyhP
cE5ld0Z1bmMsIHNjb3BlKQogICAgIFVTRVMoT3BOZXdBc3luY0dlbmVyYXRvckZ1bmMsIHNjb3Bl
KQpAQCAtMzg1LDYgKzM4Nyw3IEBAIHZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChC
bG9jayogY29kZUJsb2NrLCBPcGNvZGVJRCBvcGNvZGVJRCwgY29uc3QgSW5zCiAgICAgREVGUyhP
cFRvUHJpbWl0aXZlLCBkc3QpCiAgICAgREVGUyhPcENyZWF0ZVRoaXMsIGRzdCkKICAgICBERUZT
KE9wQ3JlYXRlUHJvbWlzZSwgZHN0KQorICAgIERFRlMoT3BDcmVhdGVHZW5lcmF0b3IsIGRzdCkK
ICAgICBERUZTKE9wTmV3QXJyYXksIGRzdCkKICAgICBERUZTKE9wTmV3QXJyYXlXaXRoU3ByZWFk
LCBkc3QpCiAgICAgREVGUyhPcFNwcmVhZCwgZHN0KQpAQCAtNDY1LDYgKzQ2OCw3IEBAIHZvaWQg
Y29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChCbG9jayogY29kZUJsb2NrLCBPcGNvZGVJRCBv
cGNvZGVJRCwgY29uc3QgSW5zCiAgICAgREVGUyhPcE1vdiwgZHN0KQogICAgIERFRlMoT3BOZXdP
YmplY3QsIGRzdCkKICAgICBERUZTKE9wTmV3UHJvbWlzZSwgZHN0KQorICAgIERFRlMoT3BOZXdH
ZW5lcmF0b3IsIGRzdCkKICAgICBERUZTKE9wVG9UaGlzLCBzcmNEc3QpCiAgICAgREVGUyhPcEdl
dFNjb3BlLCBkc3QpCiAgICAgREVGUyhPcENyZWF0ZURpcmVjdEFyZ3VtZW50cywgZHN0KQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCAyOTQzYjJi
MTAwM2M1ZjhmMWEzMGNlNTY1MjY4NGQ0NDM2ZTc4ZWEzLi4zYTcxOTk2YzVjZDE3OTAxYzY3MDdh
NjI3ZDhhZTlhYzY4YzgyNjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcApAQCAtNTY4LDYgKzU2OCw3IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hD
cmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5r
CiAgICAgICAgIExJTksoT3BQdXRCeUlkKQogICAgICAgICBMSU5LKE9wQ3JlYXRlVGhpcykKICAg
ICAgICAgTElOSyhPcENyZWF0ZVByb21pc2UpCisgICAgICAgIExJTksoT3BDcmVhdGVHZW5lcmF0
b3IpCiAKICAgICAgICAgTElOSyhPcEFkZCkKICAgICAgICAgTElOSyhPcE11bCkKQEAgLTEzMDcs
NiArMTMwOCwxOSBAQCB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVMTEludElubGluZUNhY2hlcygp
CiAgICAgICAgICAgICBjYWNoZVdyaXRlQmFycmllci5jbGVhcigpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9jcmVhdGVfZ2VuZXJhdG9yOiB7CisgICAg
ICAgICAgICBhdXRvJiBtZXRhZGF0YSA9IGN1ckluc3RydWN0aW9uLT5hczxPcENyZWF0ZUdlbmVy
YXRvcj4oKS5tZXRhZGF0YSh0aGlzKTsKKyAgICAgICAgICAgIGF1dG8mIGNhY2hlV3JpdGVCYXJy
aWVyID0gbWV0YWRhdGEubV9jYWNoZWRDYWxsZWU7CisgICAgICAgICAgICBpZiAoIWNhY2hlV3Jp
dGVCYXJyaWVyIHx8IGNhY2hlV3JpdGVCYXJyaWVyLnVudmFsaWRhdGVkR2V0KCkgPT0gSlNDZWxs
OjpzZWVuTXVsdGlwbGVDYWxsZWVPYmplY3RzKCkpCisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICBKU0NlbGwqIGNhY2hlZEZ1bmN0aW9uID0gY2FjaGVXcml0ZUJhcnJpZXIuZ2V0
KCk7CisgICAgICAgICAgICBpZiAodm0uaGVhcC5pc01hcmtlZChjYWNoZWRGdW5jdGlvbikpCisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBpZiAoT3B0aW9uczo6dmVyYm9zZU9T
UigpKQorICAgICAgICAgICAgICAgIGRhdGFMb2dGKCJDbGVhcmluZyBMTEludCBjcmVhdGVfZ2Vu
ZXJhdG9yIHdpdGggY2FjaGVkIGNhbGxlZSAlcC5cbiIsIGNhY2hlZEZ1bmN0aW9uKTsKKyAgICAg
ICAgICAgIGNhY2hlV3JpdGVCYXJyaWVyLmNsZWFyKCk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQogICAgICAgICBjYXNlIG9wX3Jlc29sdmVfc2NvcGU6IHsKICAgICAgICAgICAgIC8v
IFJpZ2h0IG5vdyB0aGlzIGlzbid0IHN0cmljdGx5IG5lY2Vzc2FyeS4gQW55IHN5bWJvbCB0YWJs
ZXMgdGhhdCB0aGlzIHdpbGwgcmVmZXIgdG8KICAgICAgICAgICAgIC8vIGFyZSBmb3Igb3V0ZXIg
ZnVuY3Rpb25zLCBhbmQgd2UgcmVmZXIgdG8gdGhvc2UgZnVuY3Rpb25zIHN0cm9uZ2x5LCBhbmQg
dGhleSByZWZlcgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Nw
ZWN1bGF0ZWRUeXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxh
dGVkVHlwZS5jcHAKaW5kZXggNDJiNjI2YzA1ZWUxZjUxODQ2MDZlYTZkYTk0MGZmMTlhYTIzMDI3
OC4uMzUzZTU2Y2ZjOGViMDk1ZDc5NmZhYWFiZGIxMjU0ZWJiMDNkY2U1YyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3BwCkBAIC02MDks
OSArNjA5LDggQEAgU3BlY3VsYXRlZFR5cGUgc3BlY3VsYXRpb25Gcm9tSlNUeXBlKEpTVHlwZSB0
eXBlKQogICAgIGNhc2UgRGF0YVZpZXdUeXBlOgogICAgICAgICByZXR1cm4gU3BlY0RhdGFWaWV3
T2JqZWN0OwogICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICByZXR1cm4gU3BlY0NlbGw7CiAgICAgfQotICAgIHJldHVybiBTcGVjTm9uZTsKIH0KIAog
U3BlY3VsYXRlZFR5cGUgbGVhc3RVcHBlckJvdW5kT2ZTdHJpY3RseUVxdWl2YWxlbnRTcGVjdWxh
dGlvbnMoU3BlY3VsYXRlZFR5cGUgdHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggZWE3YTRhYzQ2
MDg3NGY4OWYwOWZjNTY5NDBhNDFiMGIxNjExMjYxNy4uZGVjNWNmMGEwY2NiODM2OTMwYjRhODc1
YWEwNjVkYzk3MjY5Y2JhYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTY4Myw3ICs2ODMsMTcgQEAg
Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2Rl
KiBmdW5jdGlvbk5vZGUsIFVubGlua2UKIAogICAgIHN3aXRjaCAocGFyc2VNb2RlKSB7CiAgICAg
Y2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvcldyYXBwZXJGdW5jdGlvbk1vZGU6Ci0gICAg
Y2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvcldyYXBwZXJNZXRob2RNb2RlOgorICAgIGNh
c2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JXcmFwcGVyTWV0aG9kTW9kZTogeworICAgICAg
ICBtX2dlbmVyYXRvclJlZ2lzdGVyID0gYWRkVmFyKCk7CisKKyAgICAgICAgLy8gRklYTUU6IEVt
aXQgdG9fdGhpcyBvbmx5IHdoZW4gR2VuZXJhdG9yIHVzZXMgaXQuCisgICAgICAgIC8vIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1ODYKKyAgICAgICAgZW1pdFRv
VGhpcygpOworCisgICAgICAgIGVtaXRDcmVhdGVHZW5lcmF0b3IobV9nZW5lcmF0b3JSZWdpc3Rl
ciwgJm1fY2FsbGVlUmVnaXN0ZXIpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNl
IFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNHZW5lcmF0b3JXcmFwcGVyTWV0aG9kTW9kZToKICAgICBj
YXNlIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNHZW5lcmF0b3JXcmFwcGVyRnVuY3Rpb25Nb2RlOiB7
CiAgICAgICAgIG1fZ2VuZXJhdG9yUmVnaXN0ZXIgPSBhZGRWYXIoKTsKQEAgLTcxMSw3ICs3MjEs
NyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlv
bk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgICAgICAgICAgZW1pdFRvVGhpcygpOwog
ICAgICAgICB9CiAKLSAgICAgICAgZW1pdE5ld09iamVjdChtX2dlbmVyYXRvclJlZ2lzdGVyKTsK
KyAgICAgICAgZW1pdE5ld0dlbmVyYXRvcihtX2dlbmVyYXRvclJlZ2lzdGVyKTsKICAgICAgICAg
ZW1pdE5ld1Byb21pc2UocHJvbWlzZVJlZ2lzdGVyKCksIG1faXNCdWlsdGluRnVuY3Rpb24pOwog
ICAgICAgICBicmVhazsKICAgICB9CkBAIC04NjYsNyArODc2LDEwIEBAIEJ5dGVjb2RlR2VuZXJh
dG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2Rl
LCBVbmxpbmtlCiAgICAgICAgICAgICAvLyBHZW5lcmF0b3JpZmljYXRpb24gaW5zZXJ0cyBsZXhp
Y2FsIGVudmlyb25tZW50IGNyZWF0aW9uIGlmIG5lY2Vzc2FyeS4gT3RoZXJ3aXNlLCB3ZSBjb252
ZXJ0IGl0IHRvIG9wX21vdiBmcmFtZSwgYHVuZGVmaW5lZGAuCiAgICAgICAgICAgICBPcENyZWF0
ZUdlbmVyYXRvckZyYW1lRW52aXJvbm1lbnQ6OmVtaXQodGhpcywgZ2VuZXJhdG9yRnJhbWVSZWdp
c3RlcigpLCBzY29wZVJlZ2lzdGVyKCksIFZpcnR1YWxSZWdpc3RlciB7IHN5bWJvbFRhYmxlQ29u
c3RhbnRJbmRleCB9LCBhZGRDb25zdGFudFZhbHVlKGpzVW5kZWZpbmVkKCkpKTsKICAgICAgICAg
fQotICAgICAgICBlbWl0UHV0QnlJZChnZW5lcmF0b3JSZWdpc3RlcigpLCBwcm9wZXJ0eU5hbWVz
KCkuYnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSgpLCBnZW5lcmF0b3JG
cmFtZVJlZ2lzdGVyKCkpOworICAgICAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9k
ZTo6QXN5bmNHZW5lcmF0b3JCb2R5TW9kZSkKKyAgICAgICAgICAgIGVtaXRQdXRCeUlkKGdlbmVy
YXRvclJlZ2lzdGVyKCksIHByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JG
cmFtZVByaXZhdGVOYW1lKCksIGdlbmVyYXRvckZyYW1lUmVnaXN0ZXIoKSk7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIGVtaXRQdXRJbnRlcm5hbEZpZWxkKGdlbmVyYXRvclJlZ2lzdGVyKCks
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0dlbmVyYXRvcjo6RmllbGQ6OkZyYW1lKSwgZ2VuZXJh
dG9yRnJhbWVSZWdpc3RlcigpKTsKICAgICB9CiAKICAgICBib29sIHNob3VsZEluaXRpYWxpemVC
bG9ja1Njb3BlZEZ1bmN0aW9ucyA9IGZhbHNlOyAvLyBXZSBnZW5lcmF0ZSB0b3AtbGV2ZWwgZnVu
Y3Rpb24gZGVjbGFyYXRpb25zIGluIDo6Z2VuZXJhdGUoKS4KQEAgLTI3MDYsMjAgKzI3MTksMTIg
QEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dFNldHRlckJ5VmFsKFJlZ2lzdGVySUQq
IGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnQKIAogdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dFB1dEdlbmVyYXRvckZpZWxkcyhSZWdpc3RlcklEKiBuZXh0RnVuY3Rpb24pCiB7Ci0gICAgLy8g
RklYTUU6IEN1cnJlbnRseSwgd2UganVzdCBjcmVhdGUgYW4gb2JqZWN0IGFuZCBzdG9yZSBnZW5l
cmF0b3IgcmVsYXRlZCBmaWVsZHMgYXMgaXRzIHByb3BlcnRpZXMgZm9yIGVhc2UuCi0gICAgLy8g
QnV0IHRvIG1ha2UgaXQgZWZmaWNpZW50LCB3ZSB3aWxsIGludHJvZHVjZSBKU0dlbmVyYXRvciBj
bGFzcywgYWRkIG9wY29kZSBuZXdfZ2VuZXJhdG9yIGFuZCB1c2UgaXRzIEMrKyBmaWVsZHMgaW5z
dGVhZCBvZiB0aGVzZSBwcml2YXRlIHByb3BlcnRpZXMuCi0gICAgLy8gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTU0NQotCi0gICAgZW1pdERpcmVjdFB1dEJ5SWQo
bV9nZW5lcmF0b3JSZWdpc3RlciwgcHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmdlbmVy
YXRvck5leHRQcml2YXRlTmFtZSgpLCBuZXh0RnVuY3Rpb24sIFByb3BlcnR5Tm9kZTo6S25vd25E
aXJlY3QpOworICAgIGVtaXRQdXRJbnRlcm5hbEZpZWxkKG1fZ2VuZXJhdG9yUmVnaXN0ZXIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0dlbmVyYXRvcjo6RmllbGQ6Ok5leHQpLCBuZXh0RnVuY3Rp
b24pOwogCiAgICAgLy8gV2UgZG8gbm90IHN0b3JlICd0aGlzJyBpbiBhcnJvdyBmdW5jdGlvbiB3
aXRoaW4gY29uc3RydWN0b3IsCiAgICAgLy8gYmVjYXVzZSBpdCBtaWdodCBiZSBub3QgaW5pdGlh
bGl6ZWQsIGlmIHN1cGVyIGlzIGNhbGxlZCBsYXRlci4KICAgICBpZiAoIShpc0Rlcml2ZWRDb25z
dHJ1Y3RvckNvbnRleHQoKSAmJiBtX2NvZGVCbG9jay0+cGFyc2VNb2RlKCkgPT0gU291cmNlUGFy
c2VNb2RlOjpBc3luY0Fycm93RnVuY3Rpb25Nb2RlKSkKLSAgICAgICAgZW1pdERpcmVjdFB1dEJ5
SWQobV9nZW5lcmF0b3JSZWdpc3RlciwgcHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmdl
bmVyYXRvclRoaXNQcml2YXRlTmFtZSgpLCAmbV90aGlzUmVnaXN0ZXIsIFByb3BlcnR5Tm9kZTo6
S25vd25EaXJlY3QpOwotCi0gICAgZW1pdERpcmVjdFB1dEJ5SWQobV9nZW5lcmF0b3JSZWdpc3Rl
ciwgcHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclN0YXRlUHJpdmF0ZU5h
bWUoKSwgZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoMCkpLCBQcm9wZXJ0eU5vZGU6Oktub3du
RGlyZWN0KTsKLQotICAgIGVtaXREaXJlY3RQdXRCeUlkKG1fZ2VuZXJhdG9yUmVnaXN0ZXIsIHBy
b3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lKCks
IGVtaXRMb2FkKG51bGxwdHIsIGpzTnVsbCgpKSwgUHJvcGVydHlOb2RlOjpLbm93bkRpcmVjdCk7
CisgICAgICAgIGVtaXRQdXRJbnRlcm5hbEZpZWxkKG1fZ2VuZXJhdG9yUmVnaXN0ZXIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0dlbmVyYXRvcjo6RmllbGQ6OlRoaXMpLCAmbV90aGlzUmVnaXN0
ZXIpOwogfQogCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0QXN5bmNHZW5lcmF0b3JG
aWVsZHMoUmVnaXN0ZXJJRCogbmV4dEZ1bmN0aW9uKQpAQCAtMjg2OCw2ICsyODczLDE4IEBAIFJl
Z2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3UHJvbWlzZShSZWdpc3RlcklEKiBk
c3QsIGJvb2wgaXNJbnRlcm5hbFByCiAgICAgcmV0dXJuIGRzdDsKIH0KIAorUmVnaXN0ZXJJRCog
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDcmVhdGVHZW5lcmF0b3IoUmVnaXN0ZXJJRCogZHN0LCBS
ZWdpc3RlcklEKiBuZXdUYXJnZXQpCit7CisgICAgT3BDcmVhdGVHZW5lcmF0b3I6OmVtaXQodGhp
cywgZHN0LCBuZXdUYXJnZXQpOworICAgIHJldHVybiBkc3Q7Cit9CisKK1JlZ2lzdGVySUQqIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3R2VuZXJhdG9yKFJlZ2lzdGVySUQqIGRzdCkKK3sKKyAg
ICBPcE5ld0dlbmVyYXRvcjo6ZW1pdCh0aGlzLCBkc3QpOworICAgIHJldHVybiBkc3Q7Cit9CisK
IHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRURFpDaGVjayhSZWdpc3RlcklEKiB0YXJnZXQp
CiB7CiAgICAgT3BDaGVja1Rkejo6ZW1pdCh0aGlzLCB0YXJnZXQpOwpAQCAtNDU1NCwxMSArNDU3
MSwxMSBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFlpZWxkKFJlZ2lzdGVy
SUQqIGFyZ3VtZW50LCBKU0FzeW5jR2VuZXJhdG9yRgogCiAgICAgUmVmPExhYmVsPiBub3JtYWxM
YWJlbCA9IG5ld0xhYmVsKCk7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGNvbmRpdGlvbiA9IG5l
d1RlbXBvcmFyeSgpOwotICAgIGVtaXRFcXVhbGl0eU9wPE9wU3RyaWN0ZXE+KGNvbmRpdGlvbi5n
ZXQoKSwgZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCksIGVtaXRMb2FkKG51bGxwdHIsIGpz
TnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRv
clJlc3VtZU1vZGU6Ok5vcm1hbE1vZGUpKSkpOworICAgIGVtaXRFcXVhbGl0eU9wPE9wU3RyaWN0
ZXE+KGNvbmRpdGlvbi5nZXQoKSwgZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCksIGVtaXRM
b2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpH
ZW5lcmF0b3JSZXN1bWVNb2RlOjpOb3JtYWxNb2RlKSkpKTsKICAgICBlbWl0SnVtcElmVHJ1ZShj
b25kaXRpb24uZ2V0KCksIG5vcm1hbExhYmVsLmdldCgpKTsKIAogICAgIFJlZjxMYWJlbD4gdGhy
b3dMYWJlbCA9IG5ld0xhYmVsKCk7Ci0gICAgZW1pdEVxdWFsaXR5T3A8T3BTdHJpY3RlcT4oY29u
ZGl0aW9uLmdldCgpLCBnZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSwgZW1pdExvYWQobnVs
bHB0ciwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6
R2VuZXJhdG9yUmVzdW1lTW9kZTo6VGhyb3dNb2RlKSkpKTsKKyAgICBlbWl0RXF1YWxpdHlPcDxP
cFN0cmljdGVxPihjb25kaXRpb24uZ2V0KCksIGdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3Rlcigp
LCBlbWl0TG9hZChudWxscHRyLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVy
YXRvcjo6R2VuZXJhdG9yUmVzdW1lTW9kZTo6VGhyb3dNb2RlKSkpKTsKICAgICBlbWl0SnVtcElm
VHJ1ZShjb25kaXRpb24uZ2V0KCksIHRocm93TGFiZWwuZ2V0KCkpOwogICAgIC8vIFJldHVybi4K
ICAgICB7CkBAIC00NjY2LDEwICs0NjgzLDEwIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0RGVsZWdhdGVZaWVsZChSZWdpc3RlcklEKiBhcmd1bWVudCwgVGhyb3dhYmxlCiAg
ICAgICAgICAgICAgICAgUmVmPExhYmVsPiByZXR1cm5MYWJlbCA9IG5ld0xhYmVsKCk7CiAgICAg
ICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gY29u
ZGl0aW9uID0gbmV3VGVtcG9yYXJ5KCk7Ci0gICAgICAgICAgICAgICAgICAgIGVtaXRFcXVhbGl0
eU9wPE9wU3RyaWN0ZXE+KGNvbmRpdGlvbi5nZXQoKSwgZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lz
dGVyKCksIGVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpT
R2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvclJlc3VtZU1vZGU6Ok5vcm1hbE1vZGUpKSkpOwor
ICAgICAgICAgICAgICAgICAgICBlbWl0RXF1YWxpdHlPcDxPcFN0cmljdGVxPihjb25kaXRpb24u
Z2V0KCksIGdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3RlcigpLCBlbWl0TG9hZChudWxscHRyLCBq
c051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9yUmVzdW1l
TW9kZTo6Tm9ybWFsTW9kZSkpKSk7CiAgICAgICAgICAgICAgICAgICAgIGVtaXRKdW1wSWZUcnVl
KGNvbmRpdGlvbi5nZXQoKSwgbm9ybWFsTGFiZWwuZ2V0KCkpOwogCi0gICAgICAgICAgICAgICAg
ICAgIGVtaXRFcXVhbGl0eU9wPE9wU3RyaWN0ZXE+KGNvbmRpdGlvbi5nZXQoKSwgZ2VuZXJhdG9y
UmVzdW1lTW9kZVJlZ2lzdGVyKCksIGVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0YXRpY19j
YXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvclJlc3VtZU1vZGU6OlJl
dHVybk1vZGUpKSkpOworICAgICAgICAgICAgICAgICAgICBlbWl0RXF1YWxpdHlPcDxPcFN0cmlj
dGVxPihjb25kaXRpb24uZ2V0KCksIGdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3RlcigpLCBlbWl0
TG9hZChudWxscHRyLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6
R2VuZXJhdG9yUmVzdW1lTW9kZTo6UmV0dXJuTW9kZSkpKSk7CiAgICAgICAgICAgICAgICAgICAg
IGVtaXRKdW1wSWZUcnVlKGNvbmRpdGlvbi5nZXQoKSwgcmV0dXJuTGFiZWwuZ2V0KCkpOwogCiAg
ICAgICAgICAgICAgICAgICAgIC8vIEZhbGx0aHJvdWdoIHRvIFRocm93TW9kZS4KQEAgLTQ3NzEs
NyArNDc4OCwxMCBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlbGVnYXRl
WWllbGQoUmVnaXN0ZXJJRCogYXJndW1lbnQsIFRocm93YWJsZQogdm9pZCBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdEdlbmVyYXRvclN0YXRlQ2hhbmdlKGludDMyX3Qgc3RhdGUpCiB7CiAgICAgUmVn
aXN0ZXJJRCogY29tcGxldGVkU3RhdGUgPSBlbWl0TG9hZChudWxscHRyLCBqc051bWJlcihzdGF0
ZSkpOwotICAgIGVtaXRQdXRCeUlkKGdlbmVyYXRvclJlZ2lzdGVyKCksIHByb3BlcnR5TmFtZXMo
KS5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JTdGF0ZVByaXZhdGVOYW1lKCksIGNvbXBsZXRlZFN0
YXRlKTsKKyAgICBpZiAobV9jb2RlQmxvY2stPnBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9k
ZTo6QXN5bmNHZW5lcmF0b3JCb2R5TW9kZSkKKyAgICAgICAgZW1pdFB1dEJ5SWQoZ2VuZXJhdG9y
UmVnaXN0ZXIoKSwgcHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclN0YXRl
UHJpdmF0ZU5hbWUoKSwgY29tcGxldGVkU3RhdGUpOworICAgIGVsc2UKKyAgICAgICAgZW1pdFB1
dEludGVybmFsRmllbGQoZ2VuZXJhdG9yUmVnaXN0ZXIoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTR2VuZXJhdG9yOjpGaWVsZDo6U3RhdGUpLCBjb21wbGV0ZWRTdGF0ZSk7CiB9CiAKIGJvb2wg
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRKdW1wVmlhRmluYWxseUlmTmVlZGVkKGludCB0YXJnZXRM
YWJlbFNjb3BlRGVwdGgsIExhYmVsJiBqdW1wVGFyZ2V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IDk0ZWVi
MTMyNjEwNmZmNmRkY2Q3NDkzMWRlYTBhYjI5MTk0ZGRjYzcuLjdhNWYxZDRkZThlMWZjMTI4OTdi
MzdmMzQ2N2ZkNTNkM2QzN2RiOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTM1LDcgKzM1LDcgQEAKICNp
bmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpTQXN5bmNHZW5lcmF0b3JGdW5jdGlv
bi5oIgogI2luY2x1ZGUgIkpTQmlnSW50LmgiCi0jaW5jbHVkZSAiSlNHZW5lcmF0b3JGdW5jdGlv
bi5oIgorI2luY2x1ZGUgIkpTR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNUZW1wbGF0ZU9iamVj
dERlc2NyaXB0b3IuaCIKICNpbmNsdWRlICJMYWJlbC5oIgogI2luY2x1ZGUgIkxhYmVsU2NvcGUu
aCIKQEAgLTcyNCwxMiArNzI0LDE0IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIFJlZ2lz
dGVySUQqIGVtaXRDcmVhdGVUaGlzKFJlZ2lzdGVySUQqIGRzdCk7CiAgICAgICAgIFJlZ2lzdGVy
SUQqIGVtaXRDcmVhdGVQcm9taXNlKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogbmV3VGFy
Z2V0LCBib29sIGlzSW50ZXJuYWxQcm9taXNlKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdENy
ZWF0ZUdlbmVyYXRvcihSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIG5ld1RhcmdldCk7CiAg
ICAgICAgIHZvaWQgZW1pdFREWkNoZWNrKFJlZ2lzdGVySUQqIHRhcmdldCk7CiAgICAgICAgIGJv
b2wgbmVlZHNURFpDaGVjayhjb25zdCBWYXJpYWJsZSYpOwogICAgICAgICB2b2lkIGVtaXRURFpD
aGVja0lmTmVjZXNzYXJ5KGNvbnN0IFZhcmlhYmxlJiwgUmVnaXN0ZXJJRCogdGFyZ2V0LCBSZWdp
c3RlcklEKiBzY29wZSk7CiAgICAgICAgIHZvaWQgbGlmdFREWkNoZWNrSWZQb3NzaWJsZShjb25z
dCBWYXJpYWJsZSYpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3T2JqZWN0KFJlZ2lzdGVy
SUQqIGRzdCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdQcm9taXNlKFJlZ2lzdGVySUQq
IGRzdCwgYm9vbCBpc0ludGVybmFsUHJvbWlzZSk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRO
ZXdHZW5lcmF0b3IoUmVnaXN0ZXJJRCogZHN0KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5l
d0FycmF5KFJlZ2lzdGVySUQqIGRzdCwgRWxlbWVudE5vZGUqLCB1bnNpZ25lZCBsZW5ndGgsIElu
ZGV4aW5nVHlwZSByZWNvbW1lbmRlZEluZGV4aW5nVHlwZSk7IC8vIHN0b3BzIGF0IGZpcnN0IGVs
aXNpb24KICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld0FycmF5QnVmZmVyKFJlZ2lzdGVySUQq
IGRzdCwgSlNJbW11dGFibGVCdXR0ZXJmbHkqLCBJbmRleGluZ1R5cGUgcmVjb21tZW5kZWRJbmRl
eGluZ1R5cGUpOwogICAgICAgICAvLyBGSVhNRTogbmV3X2FycmF5X3dpdGhfc3ByZWFkIHNob3Vs
ZCB1c2UgYW4gYXJyYXkgYWxsb2NhdGlvbiBwcm9maWxlIGFuZCB0YWtlIGEgcmVjb21tZW5kZWRJ
bmRleGluZ1R5cGUKQEAgLTg2Niw2ICs4NjgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
UmVnaXN0ZXJJRCogZW1pdFRvSW5kZXhTdHJpbmcoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklE
KiBpbmRleCk7CiAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdElzQ2VsbFdpdGhUeXBlKFJlZ2lz
dGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjLCBKU1R5cGUpOworICAgICAgICBSZWdpc3RlcklE
KiBlbWl0SXNHZW5lcmF0b3IoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMpIHsgcmV0
dXJuIGVtaXRJc0NlbGxXaXRoVHlwZShkc3QsIHNyYywgSlNHZW5lcmF0b3JUeXBlKTsgfQogICAg
ICAgICBSZWdpc3RlcklEKiBlbWl0SXNKU0FycmF5KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJ
RCogc3JjKSB7IHJldHVybiBlbWl0SXNDZWxsV2l0aFR5cGUoZHN0LCBzcmMsIEFycmF5VHlwZSk7
IH0KICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdElzUHJvbWlzZShSZWdpc3RlcklEKiBkc3QsIFJl
Z2lzdGVySUQqIHNyYykgeyByZXR1cm4gZW1pdElzQ2VsbFdpdGhUeXBlKGRzdCwgc3JjLCBKU1By
b21pc2VUeXBlKTsgfQogICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXNQcm94eU9iamVjdChSZWdp
c3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYykgeyByZXR1cm4gZW1pdElzQ2VsbFdpdGhUeXBl
KGRzdCwgc3JjLCBQcm94eU9iamVjdFR5cGUpOyB9CkBAIC05ODgsMTAgKzk5MSwxMCBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0R2VuZXJhdG9yU3RhdGVDaGFuZ2UoaW50MzJf
dCBzdGF0ZSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRZaWVsZChSZWdpc3RlcklEKiBhcmd1
bWVudCwgSlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uOjpBc3luY0dlbmVyYXRvclN1c3BlbmRSZWFz
b24gPSBKU0FzeW5jR2VuZXJhdG9yRnVuY3Rpb246OkFzeW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNv
bjo6WWllbGQpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0RGVsZWdhdGVZaWVsZChSZWdpc3Rl
cklEKiBhcmd1bWVudCwgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqKTsKLSAgICAgICAgUmVnaXN0
ZXJJRCogZ2VuZXJhdG9yU3RhdGVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbc3Rh
dGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yQXJndW1lbnQ6
OlN0YXRlKV07IH0KLSAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yVmFsdWVSZWdpc3Rlcigp
IHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JG
dW5jdGlvbjo6R2VuZXJhdG9yQXJndW1lbnQ6OlZhbHVlKV07IH0KLSAgICAgICAgUmVnaXN0ZXJJ
RCogZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1fcGFyYW1ldGVyc1tz
dGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JBcmd1bWVu
dDo6UmVzdW1lTW9kZSldOyB9Ci0gICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRvckZyYW1lUmVn
aXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJzW3N0YXRpY19jYXN0PGludDMyX3Q+KEpTR2Vu
ZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvckFyZ3VtZW50OjpGcmFtZSldOyB9CisgICAgICAgIFJl
Z2lzdGVySUQqIGdlbmVyYXRvclN0YXRlUmVnaXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJz
W3N0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpHZW5lcmF0b3JBcmd1bWVudDo6U3Rh
dGUpXTsgfQorICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JWYWx1ZVJlZ2lzdGVyKCkgeyBy
ZXR1cm4gJm1fcGFyYW1ldGVyc1tzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6R2Vu
ZXJhdG9yQXJndW1lbnQ6OlZhbHVlKV07IH0KKyAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9y
UmVzdW1lTW9kZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1fcGFyYW1ldGVyc1tzdGF0aWNfY2FzdDxp
bnQzMl90PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9yQXJndW1lbnQ6OlJlc3VtZU1vZGUpXTsgfQor
ICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JGcmFtZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1f
cGFyYW1ldGVyc1tzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9yQXJn
dW1lbnQ6OkZyYW1lKV07IH0KIAogICAgICAgICBDb2RlVHlwZSBjb2RlVHlwZSgpIGNvbnN0IHsg
cmV0dXJuIG1fY29kZVR5cGU7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCmluZGV4IDQ4OTA5ZWY5YjA0ZDE1YWRjNGEwMmQy
NmM3NWY4Y2M1YzljMTUzYjEuLjg3NzhmYjY2NDY5NTk5Y2UyNWIwYjY4OWQwZDM5MGVhMzA5YTZk
YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXND
b2RlZ2VuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVz
Q29kZWdlbi5jcHAKQEAgLTM0LDcgKzM0LDcgQEAKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRl
ICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgotI2luY2x1ZGUgIkpTR2Vu
ZXJhdG9yRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0dlbmVyYXRvci5oIgogI2luY2x1ZGUgIkpT
R2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNJbW11dGFibGVCdXR0ZXJmbHkuaCIKICNpbmNs
dWRlICJMYWJlbFNjb3BlLmgiCkBAIC0xMDIwLDYgKzEwMjAsMjAgQEAgc3RhdGljIEpTUHJvbWlz
ZTo6RmllbGQgcHJvbWlzZUludGVybmFsRmllbGRJbmRleChCeXRlY29kZUludHJpbnNpY05vZGUq
IG5vZGUpCiAgICAgcmV0dXJuIEpTUHJvbWlzZTo6RmllbGQ6OkZsYWdzOwogfQogCitzdGF0aWMg
SlNHZW5lcmF0b3I6OkZpZWxkIGdlbmVyYXRvckludGVybmFsRmllbGRJbmRleChCeXRlY29kZUlu
dHJpbnNpY05vZGUqIG5vZGUpCit7CisgICAgaWYgKG5vZGUtPmVtaXR0ZXIoKSA9PSAmQnl0ZWNv
ZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19nZW5lcmF0b3JGaWVsZFN0YXRlKQorICAg
ICAgICByZXR1cm4gSlNHZW5lcmF0b3I6OkZpZWxkOjpTdGF0ZTsKKyAgICBpZiAobm9kZS0+ZW1p
dHRlcigpID09ICZCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dlbmVyYXRv
ckZpZWxkTmV4dCkKKyAgICAgICAgcmV0dXJuIEpTR2VuZXJhdG9yOjpGaWVsZDo6TmV4dDsKKyAg
ICBpZiAobm9kZS0+ZW1pdHRlcigpID09ICZCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50
cmluc2ljX2dlbmVyYXRvckZpZWxkVGhpcykKKyAgICAgICAgcmV0dXJuIEpTR2VuZXJhdG9yOjpG
aWVsZDo6VGhpczsKKyAgICBpZiAobm9kZS0+ZW1pdHRlcigpID09ICZCeXRlY29kZUludHJpbnNp
Y05vZGU6OmVtaXRfaW50cmluc2ljX2dlbmVyYXRvckZpZWxkRnJhbWUpCisgICAgICAgIHJldHVy
biBKU0dlbmVyYXRvcjo6RmllbGQ6OkZyYW1lOworICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgcmV0dXJuIEpTR2VuZXJhdG9yOjpGaWVsZDo6U3RhdGU7Cit9CisKIFJlZ2lz
dGVySUQqIEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfZ2V0UHJvbWlzZUlu
dGVybmFsRmllbGQoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0
KQogewogICAgIEFyZ3VtZW50TGlzdE5vZGUqIG5vZGUgPSBtX2FyZ3MtPm1fbGlzdE5vZGU7CkBA
IC0xMDMzLDYgKzEwNDcsMTkgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjpl
bWl0X2ludHJpbnNpY19nZXRQcm9taXNlSW50ZXJuYWxGaWVsZChCeXRlY28KICAgICByZXR1cm4g
Z2VuZXJhdG9yLmVtaXRHZXRJbnRlcm5hbEZpZWxkKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9u
KGRzdCksIGJhc2UuZ2V0KCksIGluZGV4KTsKIH0KIAorUmVnaXN0ZXJJRCogQnl0ZWNvZGVJbnRy
aW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19nZXRHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKEJ5dGVj
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK3sKKyAgICBBcmd1bWVu
dExpc3ROb2RlKiBub2RlID0gbV9hcmdzLT5tX2xpc3ROb2RlOworICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiBiYXNlID0gZ2VuZXJhdG9yLmVtaXROb2RlKG5vZGUpOworICAgIG5vZGUgPSBub2RlLT5t
X25leHQ7CisgICAgUkVMRUFTRV9BU1NFUlQobm9kZS0+bV9leHByLT5pc0J5dGVjb2RlSW50cmlu
c2ljTm9kZSgpKTsKKyAgICB1bnNpZ25lZCBpbmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihn
ZW5lcmF0b3JJbnRlcm5hbEZpZWxkSW5kZXgoc3RhdGljX2Nhc3Q8Qnl0ZWNvZGVJbnRyaW5zaWNO
b2RlKj4obm9kZS0+bV9leHByKSkpOworICAgIEFTU0VSVChpbmRleCA8IEpTR2VuZXJhdG9yOjpu
dW1iZXJPZkludGVybmFsRmllbGRzKTsKKyAgICBBU1NFUlQoIW5vZGUtPm1fbmV4dCk7CisKKyAg
ICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRHZXRJbnRlcm5hbEZpZWxkKGdlbmVyYXRvci5maW5hbERl
c3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCksIGluZGV4KTsKK30KKwogUmVnaXN0ZXJJRCogQnl0
ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19hcmd1bWVudChCeXRlY29kZUdlbmVy
YXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7CiAgICAgQXJndW1lbnRMaXN0Tm9k
ZSogbm9kZSA9IG1fYXJncy0+bV9saXN0Tm9kZTsKQEAgLTExMTgsNiArMTE0NSwyMiBAQCBSZWdp
c3RlcklEKiBCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX3B1dFByb21pc2VJ
bnRlcm5hbEZpZWxkKEJ5dGVjbwogICAgIHJldHVybiBnZW5lcmF0b3IubW92ZShkc3QsIGdlbmVy
YXRvci5lbWl0UHV0SW50ZXJuYWxGaWVsZChiYXNlLmdldCgpLCBpbmRleCwgdmFsdWUuZ2V0KCkp
KTsKIH0KIAorUmVnaXN0ZXJJRCogQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNp
Y19wdXRHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Is
IFJlZ2lzdGVySUQqIGRzdCkKK3sKKyAgICBBcmd1bWVudExpc3ROb2RlKiBub2RlID0gbV9hcmdz
LT5tX2xpc3ROb2RlOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gZ2VuZXJhdG9yLmVt
aXROb2RlKG5vZGUpOworICAgIG5vZGUgPSBub2RlLT5tX25leHQ7CisgICAgUkVMRUFTRV9BU1NF
UlQobm9kZS0+bV9leHByLT5pc0J5dGVjb2RlSW50cmluc2ljTm9kZSgpKTsKKyAgICB1bnNpZ25l
ZCBpbmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihnZW5lcmF0b3JJbnRlcm5hbEZpZWxkSW5k
ZXgoc3RhdGljX2Nhc3Q8Qnl0ZWNvZGVJbnRyaW5zaWNOb2RlKj4obm9kZS0+bV9leHByKSkpOwor
ICAgIEFTU0VSVChpbmRleCA8IEpTR2VuZXJhdG9yOjpudW1iZXJPZkludGVybmFsRmllbGRzKTsK
KyAgICBub2RlID0gbm9kZS0+bV9uZXh0OworICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9
IGdlbmVyYXRvci5lbWl0Tm9kZShub2RlKTsKKworICAgIEFTU0VSVCghbm9kZS0+bV9uZXh0KTsK
KworICAgIHJldHVybiBnZW5lcmF0b3IubW92ZShkc3QsIGdlbmVyYXRvci5lbWl0UHV0SW50ZXJu
YWxGaWVsZChiYXNlLmdldCgpLCBpbmRleCwgdmFsdWUuZ2V0KCkpKTsKK30KKwogUmVnaXN0ZXJJ
RCogQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY190YWlsQ2FsbEZvcndhcmRB
cmd1bWVudHMoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQog
ewogICAgIEFyZ3VtZW50TGlzdE5vZGUqIG5vZGUgPSBtX2FyZ3MtPm1fbGlzdE5vZGU7CkBAIC0x
MjMxLDYgKzEyNzQsMTUgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0
X2ludHJpbnNpY19pZFdpdGhQcm9maWxlKEJ5dGVjb2RlR2VuZXJhdG8KIAogICAgIHJldHVybiBn
ZW5lcmF0b3IubW92ZShkc3QsIGdlbmVyYXRvci5lbWl0SWRXaXRoUHJvZmlsZShpZFZhbHVlLmdl
dCgpLCBzcGVjdWxhdGlvbikpOwogfQorCitSZWdpc3RlcklEKiBCeXRlY29kZUludHJpbnNpY05v
ZGU6OmVtaXRfaW50cmluc2ljX2lzR2VuZXJhdG9yKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3ImIGdl
bmVyYXRvciwgSlNDOjpSZWdpc3RlcklEKiBkc3QpCit7CisgICAgQXJndW1lbnRMaXN0Tm9kZSog
bm9kZSA9IG1fYXJncy0+bV9saXN0Tm9kZTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3JjID0g
Z2VuZXJhdG9yLmVtaXROb2RlKG5vZGUpOworICAgIEFTU0VSVCghbm9kZS0+bV9uZXh0KTsKKwor
ICAgIHJldHVybiBnZW5lcmF0b3IubW92ZShkc3QsIGdlbmVyYXRvci5lbWl0SXNHZW5lcmF0b3Io
Z2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBzcmMuZ2V0KCkpKTsKK30KICAgICAKIFJl
Z2lzdGVySUQqIEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfaXNKU0FycmF5
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgSlNDOjpSZWdpc3RlcklEKiBkc3Qp
CiB7CkBAIC0zOTkzLDcgKzQwNDUsNyBAQCB2b2lkIEZ1bmN0aW9uTm9kZTo6ZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqKQogICAgICAgICBnZW5l
cmF0b3IubW92ZShhcmdzLmFyZ3VtZW50UmVnaXN0ZXIoYXJndW1lbnRDb3VudCsrKSwgZ2VuZXJh
dG9yLmdlbmVyYXRvclJlZ2lzdGVyKCkpOwogICAgICAgICBnZW5lcmF0b3IubW92ZShhcmdzLmFy
Z3VtZW50UmVnaXN0ZXIoYXJndW1lbnRDb3VudCsrKSwgZ2VuZXJhdG9yLnByb21pc2VSZWdpc3Rl
cigpKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGFyZ3MuYXJndW1lbnRSZWdpc3Rlcihh
cmd1bWVudENvdW50KyspLCBqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRM
b2FkKGFyZ3MuYXJndW1lbnRSZWdpc3Rlcihhcmd1bWVudENvdW50KyspLCBqc051bWJlcihzdGF0
aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JSZXN1bWVNb2Rl
OjpOb3JtYWxNb2RlKSkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdExvYWQoYXJncy5hcmd1bWVu
dFJlZ2lzdGVyKGFyZ3VtZW50Q291bnQrKyksIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+
KEpTR2VuZXJhdG9yOjpHZW5lcmF0b3JSZXN1bWVNb2RlOjpOb3JtYWxNb2RlKSkpOwogICAgICAg
ICAvLyBKU1RleHRQb3NpdGlvbihpbnQgX2xpbmUsIGludCBfb2Zmc2V0LCBpbnQgX2xpbmVTdGFy
dE9mZnNldCkKICAgICAgICAgSlNUZXh0UG9zaXRpb24gZGl2b3QoZmlyc3RMaW5lKCksIHN0YXJ0
T2Zmc2V0KCksIGxpbmVTdGFydE9mZnNldCgpKTsKIApAQCAtNDAxMCwxMSArNDA2MiwxMSBAQCB2
b2lkIEZ1bmN0aW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0
b3IsIFJlZ2lzdGVySUQqKQogICAgICAgICBSZWY8TGFiZWw+IGdlbmVyYXRvckJvZHlMYWJlbCA9
IGdlbmVyYXRvci5uZXdMYWJlbCgpOwogICAgICAgICB7CiAgICAgICAgICAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gY29uZGl0aW9uID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwotICAgICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRFcXVhbGl0eU9wPE9wU3RyaWN0ZXE+KGNvbmRpdGlvbi5nZXQoKSwg
Z2VuZXJhdG9yLmdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3RlcigpLCBnZW5lcmF0b3IuZW1pdExv
YWQobnVsbHB0ciwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5j
dGlvbjo6R2VuZXJhdG9yUmVzdW1lTW9kZTo6Tm9ybWFsTW9kZSkpKSk7CisgICAgICAgICAgICBn
ZW5lcmF0b3IuZW1pdEVxdWFsaXR5T3A8T3BTdHJpY3RlcT4oY29uZGl0aW9uLmdldCgpLCBnZW5l
cmF0b3IuZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCksIGdlbmVyYXRvci5lbWl0TG9hZChu
dWxscHRyLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6R2VuZXJh
dG9yUmVzdW1lTW9kZTo6Tm9ybWFsTW9kZSkpKSk7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1p
dEp1bXBJZlRydWUoY29uZGl0aW9uLmdldCgpLCBnZW5lcmF0b3JCb2R5TGFiZWwuZ2V0KCkpOwog
CiAgICAgICAgICAgICBSZWY8TGFiZWw+IHRocm93TGFiZWwgPSBnZW5lcmF0b3IubmV3TGFiZWwo
KTsKLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0RXF1YWxpdHlPcDxPcFN0cmljdGVxPihjb25k
aXRpb24uZ2V0KCksIGdlbmVyYXRvci5nZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSwgZ2Vu
ZXJhdG9yLmVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpT
R2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvclJlc3VtZU1vZGU6OlRocm93TW9kZSkpKSk7Cisg
ICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEVxdWFsaXR5T3A8T3BTdHJpY3RlcT4oY29uZGl0aW9u
LmdldCgpLCBnZW5lcmF0b3IuZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCksIGdlbmVyYXRv
ci5lbWl0TG9hZChudWxscHRyLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVy
YXRvcjo6R2VuZXJhdG9yUmVzdW1lTW9kZTo6VGhyb3dNb2RlKSkpKTsKICAgICAgICAgICAgIGdl
bmVyYXRvci5lbWl0SnVtcElmVHJ1ZShjb25kaXRpb24uZ2V0KCksIHRocm93TGFiZWwuZ2V0KCkp
OwogCiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFJldHVybihnZW5lcmF0b3IuZ2VuZXJhdG9y
VmFsdWVSZWdpc3RlcigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAppbmRleCA5YjZiZjAzNTk3ODc5N2Ez
ZTMzYTRjODQ5NTE0MDMxNDBjNTMxZDEzLi5lMzA3MWM1YmYzMmVkMTFmOTVmZTExN2UzZjM2MDhk
MWFiNGQ3ODFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3Ry
YWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVk
ZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSGFzaE1hcEltcGwuaCIKICNpbmNsdWRlICJK
SVRPcGVyYXRpb25zLmgiCisjaW5jbHVkZSAiSlNHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJKU0lt
bXV0YWJsZUJ1dHRlcmZseS5oIgogI2luY2x1ZGUgIkpTSW50ZXJuYWxQcm9taXNlLmgiCiAjaW5j
bHVkZSAiSlNJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5oIgpAQCAtMTU2NSw2ICsxNTY2LDEz
IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVF
ZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgICAgICBicmVhazsKIAogICAgICAg
ICBjYXNlIElzQ2VsbFdpdGhUeXBlOgorICAgICAgICAgICAgaWYgKG5vZGUtPnNwZWN1bGF0ZWRU
eXBlRm9yUXVlcnkoKSA9PSBTcGVjQ2VsbCkgeworICAgICAgICAgICAgICAgIGlmICghKGNoaWxk
Lm1fdHlwZSAmIFNwZWNDZWxsKSkgeworICAgICAgICAgICAgICAgICAgICBzZXRDb25zdGFudChu
b2RlLCBqc0Jvb2xlYW4oZmFsc2UpKTsKKyAgICAgICAgICAgICAgICAgICAgY29uc3RhbnRXYXNT
ZXQgPSB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICghKGNoaWxkLm1fdHlwZSAmIH5ub2RlLT5zcGVj
dWxhdGVkVHlwZUZvclF1ZXJ5KCkpKSB7CiAgICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9k
ZSwganNCb29sZWFuKHRydWUpKTsKICAgICAgICAgICAgICAgICBjb25zdGFudFdhc1NldCA9IHRy
dWU7CkBAIC0yNjc1LDEwICsyNjgzLDQyIEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0
cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAg
ICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgQ3JlYXRlR2VuZXJhdG9yOiB7CisgICAgICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICBpZiAoSlNWYWx1ZSBiYXNlID0gZm9yTm9k
ZShub2RlLT5jaGlsZDEoKSkubV92YWx1ZSkgeworICAgICAgICAgICAgaWYgKGF1dG8qIGZ1bmN0
aW9uID0ganNEeW5hbWljQ2FzdDxKU0Z1bmN0aW9uKj4obV9ncmFwaC5tX3ZtLCBiYXNlKSkgewor
ICAgICAgICAgICAgICAgIGlmIChGdW5jdGlvblJhcmVEYXRhKiByYXJlRGF0YSA9IGZ1bmN0aW9u
LT5yYXJlRGF0YSgpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChyYXJlRGF0YS0+YWxsb2Nh
dGlvblByb2ZpbGVXYXRjaHBvaW50U2V0KCkuaXNTdGlsbFZhbGlkKCkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gcmFyZURhdGEtPmludGVybmFsRnVu
Y3Rpb25BbGxvY2F0aW9uU3RydWN0dXJlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
c3RydWN0dXJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgc3RydWN0dXJlLT5jbGFz
c0luZm8oKSA9PSBKU0dlbmVyYXRvcjo6aW5mbygpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJiYgc3RydWN0dXJlLT5nbG9iYWxPYmplY3QoKSA9PSBnbG9iYWxPYmplY3QKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAmJiByYXJlRGF0YS0+YWxsb2NhdGlvblByb2ZpbGVXYXRjaHBv
aW50U2V0KCkuaXNTdGlsbFZhbGlkKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
X2dyYXBoLmZyZWV6ZShyYXJlRGF0YSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9n
cmFwaC53YXRjaHBvaW50cygpLmFkZExhemlseShyYXJlRGF0YS0+YWxsb2NhdGlvblByb2ZpbGVX
YXRjaHBvaW50U2V0KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fc3RhdGUuc2V0
Rm91bmRDb25zdGFudHModHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkRm9s
ZENsb2JiZXJXb3JsZCgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEZvck5vZGUo
bm9kZSwgc3RydWN0dXJlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBjbG9iYmVyV29ybGQo
KTsKKyAgICAgICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY09iamVjdE90aGVyKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBOZXdQcm9taXNlOgogICAgICAgICBBU1NFUlQo
ISFub2RlLT5zdHJ1Y3R1cmUoKS5nZXQoKSk7CiAgICAgICAgIHNldEZvck5vZGUobm9kZSwgbm9k
ZS0+c3RydWN0dXJlKCkpOwogICAgICAgICBicmVhazsKKworICAgIGNhc2UgTmV3R2VuZXJhdG9y
OgorICAgICAgICBBU1NFUlQoISFub2RlLT5zdHJ1Y3R1cmUoKS5nZXQoKSk7CisgICAgICAgIHNl
dEZvck5vZGUobm9kZSwgbm9kZS0+c3RydWN0dXJlKCkpOworICAgICAgICBicmVhazsKICAgICAg
ICAgCiAgICAgY2FzZSBOZXdPYmplY3Q6CiAgICAgICAgIEFTU0VSVCghIW5vZGUtPnN0cnVjdHVy
ZSgpLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0
ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHAKaW5kZXggMmM4MmIxZTkzYmQxZmQ1MmNlZDU1MDRhNDFiYWVjOWE1ZDliOTM5Mi4u
M2U1NDI4MWUzNzYxZGQwMDBjYjRjNmZiYTEwZDAxYjdmNzJiOWE4YSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTQ5MzksNiArNDkz
OSw1MiBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQog
ICAgICAgICAgICAgTkVYVF9PUENPREUob3BfY3JlYXRlX3Byb21pc2UpOwogICAgICAgICB9CiAK
KyAgICAgICAgY2FzZSBvcF9jcmVhdGVfZ2VuZXJhdG9yOiB7CisgICAgICAgICAgICBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY3VycmVudE5v
ZGVPcmlnaW4oKS5zZW1hbnRpYyk7CisgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVu
dEluc3RydWN0aW9uLT5hczxPcENyZWF0ZUdlbmVyYXRvcj4oKTsKKyAgICAgICAgICAgIE5vZGUq
IGNhbGxlZSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9jYWxsZWUpKTsKKworICAg
ICAgICAgICAgYm9vbCBhbHJlYWR5RW1pdHRlZCA9IGZhbHNlOworCisgICAgICAgICAgICBKU0Z1
bmN0aW9uKiBmdW5jdGlvbiA9IGNhbGxlZS0+ZHluYW1pY0Nhc3RDb25zdGFudDxKU0Z1bmN0aW9u
Kj4oKm1fdm0pOworICAgICAgICAgICAgaWYgKCFmdW5jdGlvbikgeworICAgICAgICAgICAgICAg
IEpTQ2VsbCogY2FjaGVkRnVuY3Rpb24gPSBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spLm1f
Y2FjaGVkQ2FsbGVlLnVudmFsaWRhdGVkR2V0KCk7CisgICAgICAgICAgICAgICAgaWYgKGNhY2hl
ZEZ1bmN0aW9uCisgICAgICAgICAgICAgICAgICAgICYmIGNhY2hlZEZ1bmN0aW9uICE9IEpTQ2Vs
bDo6c2Vlbk11bHRpcGxlQ2FsbGVlT2JqZWN0cygpCisgICAgICAgICAgICAgICAgICAgICYmICFt
X2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4
LCBCYWRDZWxsKSkgeworICAgICAgICAgICAgICAgICAgICBBU1NFUlQoY2FjaGVkRnVuY3Rpb24t
PmluaGVyaXRzPEpTRnVuY3Rpb24+KCptX3ZtKSk7CisKKyAgICAgICAgICAgICAgICAgICAgRnJv
emVuVmFsdWUqIGZyb3plbiA9IG1fZ3JhcGguZnJlZXplKGNhY2hlZEZ1bmN0aW9uKTsKKyAgICAg
ICAgICAgICAgICAgICAgYWRkVG9HcmFwaChDaGVja0NlbGwsIE9wSW5mbyhmcm96ZW4pLCBjYWxs
ZWUpOworCisgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uID0gc3RhdGljX2Nhc3Q8SlNGdW5j
dGlvbio+KGNhY2hlZEZ1bmN0aW9uKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIGlmIChmdW5jdGlvbikgeworICAgICAgICAgICAgICAgIGlmIChGdW5j
dGlvblJhcmVEYXRhKiByYXJlRGF0YSA9IGZ1bmN0aW9uLT5yYXJlRGF0YSgpKSB7CisgICAgICAg
ICAgICAgICAgICAgIGlmIChyYXJlRGF0YS0+YWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50U2V0
KCkuaXNTdGlsbFZhbGlkKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFN0cnVjdHVyZSog
c3RydWN0dXJlID0gcmFyZURhdGEtPmludGVybmFsRnVuY3Rpb25BbGxvY2F0aW9uU3RydWN0dXJl
KCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RydWN0dXJlCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJiYgc3RydWN0dXJlLT5jbGFzc0luZm8oKSA9PSBKU0dlbmVyYXRvcjo6
aW5mbygpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgc3RydWN0dXJlLT5nbG9iYWxP
YmplY3QoKSA9PSBnbG9iYWxPYmplY3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBy
YXJlRGF0YS0+YWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50U2V0KCkuaXNTdGlsbFZhbGlkKCkp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLmZyZWV6ZShyYXJlRGF0YSk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC53YXRjaHBvaW50cygpLmFkZExh
emlseShyYXJlRGF0YS0+YWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50U2V0KCkpOworCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIGNhbGxlZSBpcyBzdGlsbCBsaXZlIHVwIHRv
IHRoaXMgcG9pbnQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChQaGFu
dG9tLCBjYWxsZWUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldChWaXJ0dWFsUmVn
aXN0ZXIoYnl0ZWNvZGUubV9kc3QpLCBhZGRUb0dyYXBoKE5ld0dlbmVyYXRvciwgT3BJbmZvKG1f
Z3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUoc3RydWN0dXJlKSkpKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhbHJlYWR5RW1pdHRlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBpZiAoIWFscmVhZHlFbWl0dGVkKQorICAgICAgICAgICAgICAgIHNl
dChWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9kc3QpLCBhZGRUb0dyYXBoKENyZWF0ZUdlbmVy
YXRvciwgY2FsbGVlKSk7CisgICAgICAgICAgICBORVhUX09QQ09ERShvcF9jcmVhdGVfZ2VuZXJh
dG9yKTsKKyAgICAgICAgfQorCiAgICAgICAgIGNhc2Ugb3BfbmV3X29iamVjdDogewogICAgICAg
ICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BOZXdPYmplY3Q+
KCk7CiAgICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV9kc3QsCkBAIC00OTUzLDYgKzQ5OTksMTMg
QEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAg
ICAgICAgIHNldChieXRlY29kZS5tX2RzdCwgYWRkVG9HcmFwaChOZXdQcm9taXNlLCBPcEluZm8o
bV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShieXRlY29kZS5tX2lzSW50ZXJuYWxQcm9taXNlID8g
Z2xvYmFsT2JqZWN0LT5pbnRlcm5hbFByb21pc2VTdHJ1Y3R1cmUoKSA6IGdsb2JhbE9iamVjdC0+
cHJvbWlzZVN0cnVjdHVyZSgpKSksIE9wSW5mbyhieXRlY29kZS5tX2lzSW50ZXJuYWxQcm9taXNl
KSkpOwogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfbmV3X3Byb21pc2UpOwogICAgICAgICB9
CisKKyAgICAgICAgY2FzZSBvcF9uZXdfZ2VuZXJhdG9yOiB7CisgICAgICAgICAgICBhdXRvIGJ5
dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcE5ld0dlbmVyYXRvcj4oKTsKKyAgICAg
ICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihjdXJyZW50Tm9kZU9yaWdpbigpLnNlbWFudGljKTsKKyAgICAgICAgICAgIHNldChieXRl
Y29kZS5tX2RzdCwgYWRkVG9HcmFwaChOZXdHZW5lcmF0b3IsIE9wSW5mbyhtX2dyYXBoLnJlZ2lz
dGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+Z2VuZXJhdG9yU3RydWN0dXJlKCkpKSkpOworICAg
ICAgICAgICAgTkVYVF9PUENPREUob3BfbmV3X2dlbmVyYXRvcik7CisgICAgICAgIH0KICAgICAg
ICAgICAgIAogICAgICAgICBjYXNlIG9wX25ld19hcnJheTogewogICAgICAgICAgICAgYXV0byBi
eXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BOZXdBcnJheT4oKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAppbmRleCBjMGVlOThhZWE4
MzhkNzI1NmU2Yjc1NGI1NDU3NGJiOGQ2ZTlmOWZhLi43MWVjN2YxNjI4NDk1ZWIyYzg0MDQ1OTUx
Nzg1NzEwMmYxZDhlNDBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBh
YmlsaXRpZXMuY3BwCkBAIC0xMTcsNiArMTE3LDcgQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxp
dHlMZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEkK
ICAgICBjYXNlIG9wX2NoZWNrX3RkejoKICAgICBjYXNlIG9wX2NyZWF0ZV90aGlzOgogICAgIGNh
c2Ugb3BfY3JlYXRlX3Byb21pc2U6CisgICAgY2FzZSBvcF9jcmVhdGVfZ2VuZXJhdG9yOgogICAg
IGNhc2Ugb3BfYml0bm90OgogICAgIGNhc2Ugb3BfYml0YW5kOgogICAgIGNhc2Ugb3BfYml0b3I6
CkBAIC0yMTIsNiArMjEzLDcgQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNv
ZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEkKICAgICBjYXNlIG9w
X2VuZDoKICAgICBjYXNlIG9wX25ld19vYmplY3Q6CiAgICAgY2FzZSBvcF9uZXdfcHJvbWlzZToK
KyAgICBjYXNlIG9wX25ld19nZW5lcmF0b3I6CiAgICAgY2FzZSBvcF9uZXdfYXJyYXk6CiAgICAg
Y2FzZSBvcF9uZXdfYXJyYXlfd2l0aF9zaXplOgogICAgIGNhc2Ugb3BfbmV3X2FycmF5X2J1ZmZl
cjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKaW5kZXggYzFiN2Ew
YmMyMjFjZjQ4NDFjNmQ0MzFhYzRlNWNlNWFkYTFmNzFhMC4uYjhjMTcxZDNhNzZjZGMzMzgzMjlk
ODkxYWViNWJlMDc2YjI0ZGY2MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDbG9iYmVyaXplLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9i
YmVyaXplLmgKQEAgLTY2Nyw2ICs2NjcsNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBo
LCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAg
IGNhc2UgTnVtYmVyVG9TdHJpbmdXaXRoUmFkaXg6CiAgICAgY2FzZSBDcmVhdGVUaGlzOgogICAg
IGNhc2UgQ3JlYXRlUHJvbWlzZToKKyAgICBjYXNlIENyZWF0ZUdlbmVyYXRvcjoKICAgICBjYXNl
IEluc3RhbmNlT2Y6CiAgICAgY2FzZSBTdHJpbmdWYWx1ZU9mOgogICAgIGNhc2UgT2JqZWN0S2V5
czoKQEAgLTE1NjUsNiArMTU2Niw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5v
ZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAKICAgICBj
YXNlIE5ld09iamVjdDoKICAgICBjYXNlIE5ld1Byb21pc2U6CisgICAgY2FzZSBOZXdHZW5lcmF0
b3I6CiAgICAgY2FzZSBOZXdSZWdleHA6CiAgICAgY2FzZSBOZXdTeW1ib2w6CiAgICAgY2FzZSBO
ZXdTdHJpbmdPYmplY3Q6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Nsb2JiZXJzRXhpdFN0YXRlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xv
YmJlcnNFeGl0U3RhdGUuY3BwCmluZGV4IDM3MGZkMWRjMmM1YzE0NzZjN2I1YTUzY2ZkYzJkYjdj
MWY0ZTAxYzQuLmQyZjdiYTQ3OGQ4ZWM4MzRjZDI1MDhkNTNiZDlmYTE0ZDI4MDA5MGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3Bw
CkBAIC01OCw2ICs1OCw3IEBAIGJvb2wgY2xvYmJlcnNFeGl0U3RhdGUoR3JhcGgmIGdyYXBoLCBO
b2RlKiBub2RlKQogICAgIGNhc2UgQXJyYXlpZnk6CiAgICAgY2FzZSBOZXdPYmplY3Q6CiAgICAg
Y2FzZSBOZXdQcm9taXNlOgorICAgIGNhc2UgTmV3R2VuZXJhdG9yOgogICAgIGNhc2UgTmV3UmVn
ZXhwOgogICAgIGNhc2UgTmV3U3ltYm9sOgogICAgIGNhc2UgTmV3U3RyaW5nT2JqZWN0OgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFz
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNl
LmNwcAppbmRleCA5OWQ4NzVlNjZhNmI3MGZiZTUyODgxZTAwMTE3YTcwOGJlYTQzYmQwLi5mM2Y1
Y2I2MGQ4OGFjNWM2NDUyZGRmMTViZTRjNDVkZmUxMDhkOWE3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcApAQCAtNzc4
LDYgKzc3OCwzMCBAQCBjbGFzcyBDb25zdGFudEZvbGRpbmdQaGFzZSA6IHB1YmxpYyBQaGFzZSB7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAKKyAgICAgICAgICAgIGNh
c2UgQ3JlYXRlR2VuZXJhdG9yOiB7CisgICAgICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
Yyk7CisgICAgICAgICAgICAgICAgaWYgKEpTVmFsdWUgYmFzZSA9IG1fc3RhdGUuZm9yTm9kZShu
b2RlLT5jaGlsZDEoKSkubV92YWx1ZSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoYXV0byog
ZnVuY3Rpb24gPSBqc0R5bmFtaWNDYXN0PEpTRnVuY3Rpb24qPihtX2dyYXBoLm1fdm0sIGJhc2Up
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoRnVuY3Rpb25SYXJlRGF0YSogcmFyZURh
dGEgPSBmdW5jdGlvbi0+cmFyZURhdGEoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChyYXJlRGF0YS0+YWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50U2V0KCkuaXNTdGlsbFZh
bGlkKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUgPSByYXJlRGF0YS0+aW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25TdHJ1Y3R1cmUoKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0cnVjdHVyZQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgc3RydWN0dXJlLT5jbGFzc0luZm8oKSA9PSBK
U0dlbmVyYXRvcjo6aW5mbygpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAm
JiBzdHJ1Y3R1cmUtPmdsb2JhbE9iamVjdCgpID09IGdsb2JhbE9iamVjdAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJiYgcmFyZURhdGEtPmFsbG9jYXRpb25Qcm9maWxlV2F0
Y2hwb2ludFNldCgpLmlzU3RpbGxWYWxpZCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtX2dyYXBoLmZyZWV6ZShyYXJlRGF0YSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtX2dyYXBoLndhdGNocG9pbnRzKCkuYWRkTGF6aWx5KHJhcmVEYXRh
LT5hbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnRTZXQoKSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9OZXdHZW5lcmF0b3IobV9ncmFwaC5yZWdp
c3RlclN0cnVjdHVyZShzdHJ1Y3R1cmUpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNoYW5nZWQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICB9CisKICAgICAgICAgICAgIGNhc2UgT2JqZWN0Q3JlYXRlOiB7CiAgICAgICAg
ICAgICAgICAgaWYgKEpTVmFsdWUgYmFzZSA9IG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEo
KSkubV92YWx1ZSkgewogICAgICAgICAgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAppbmRleCBmYjMxMjJiN2MyNjVk
M2I4ZWQxYTZhMDA2YjJkYzgyNGE1ZTU4ZDc1Li5iZWExZTE2NmU0OWU2ZmRiYTAzNTc3NThmMDVj
ZTM1ODFlZmNiYWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rv
ZXNHQy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCkBA
IC0zMzIsNiArMzMyLDcgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQog
ICAgIGNhc2UgVHJ5R2V0QnlJZDoKICAgICBjYXNlIENyZWF0ZVRoaXM6CiAgICAgY2FzZSBDcmVh
dGVQcm9taXNlOgorICAgIGNhc2UgQ3JlYXRlR2VuZXJhdG9yOgogICAgIGNhc2UgT2JqZWN0Q3Jl
YXRlOgogICAgIGNhc2UgT2JqZWN0S2V5czoKICAgICBjYXNlIEFsbG9jYXRlUHJvcGVydHlTdG9y
YWdlOgpAQCAtMzQwLDYgKzM0MSw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSog
bm9kZSkKICAgICBjYXNlIEFycmF5aWZ5VG9TdHJ1Y3R1cmU6CiAgICAgY2FzZSBOZXdPYmplY3Q6
CiAgICAgY2FzZSBOZXdQcm9taXNlOgorICAgIGNhc2UgTmV3R2VuZXJhdG9yOgogICAgIGNhc2Ug
TmV3QXJyYXk6CiAgICAgY2FzZSBOZXdBcnJheVdpdGhTcHJlYWQ6CiAgICAgY2FzZSBTcHJlYWQ6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAppbmRleCBlNDVh
YzVjMWU2NGM3M2ZlMjY4OWM0ZTM4ZTRlZTJiMTI1ZGMzNzFkLi5hNTAxY2RkODQzZTEwYzRlZjI4
ODljNDA1NzBlMDAwZGIyMTY0OTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Rml4dXBQaGFzZS5jcHAKQEAgLTE2NDYsNiArMTY0Niw3IEBAIGNsYXNzIEZpeHVwUGhhc2UgOiBw
dWJsaWMgUGhhc2UgewogICAgICAgICBjYXNlIENoZWNrQ2VsbDoKICAgICAgICAgY2FzZSBDcmVh
dGVUaGlzOgogICAgICAgICBjYXNlIENyZWF0ZVByb21pc2U6CisgICAgICAgIGNhc2UgQ3JlYXRl
R2VuZXJhdG9yOgogICAgICAgICBjYXNlIEdldEJ1dHRlcmZseTogewogICAgICAgICAgICAgZml4
RWRnZTxDZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTI0
MDgsNiArMjQwOSw3IEBAIGNsYXNzIEZpeHVwUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAg
ICBjYXNlIFByb2ZpbGVDb250cm9sRmxvdzoKICAgICAgICAgY2FzZSBOZXdPYmplY3Q6CiAgICAg
ICAgIGNhc2UgTmV3UHJvbWlzZToKKyAgICAgICAgY2FzZSBOZXdHZW5lcmF0b3I6CiAgICAgICAg
IGNhc2UgTmV3UmVnZXhwOgogICAgICAgICBjYXNlIERlbGV0ZUJ5SWQ6CiAgICAgICAgIGNhc2Ug
RGVsZXRlQnlWYWw6CkBAIC0yNjMzLDYgKzI2MzUsOSBAQCBjbGFzcyBGaXh1cFBoYXNlIDogcHVi
bGljIFBoYXNlIHsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFNwZWNDZWxsOgorICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1
bGF0ZUNlbGwoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAppbmRleCA2OWYwOGMx
ODZkNDhjZWJmNmM3NmI4OWE0ZDVkNDg0NDA3ZGIzZDBlLi45MjJjZTFlY2NmMjBhYzJkMzc2NDIx
YmYwODQzOWM3NmUyOGY5ODAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaApAQCAt
NzY3LDYgKzc2NywxNSBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgICAgIG1fb3BJbmZvMiA9IGludGVy
bmFsOwogICAgIH0KIAorICAgIHZvaWQgY29udmVydFRvTmV3R2VuZXJhdG9yKFJlZ2lzdGVyZWRT
dHJ1Y3R1cmUgc3RydWN0dXJlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fb3AgPT0gQ3JlYXRl
R2VuZXJhdG9yKTsKKyAgICAgICAgc2V0T3BBbmREZWZhdWx0RmxhZ3MoTmV3R2VuZXJhdG9yKTsK
KyAgICAgICAgY2hpbGRyZW4ucmVzZXQoKTsKKyAgICAgICAgbV9vcEluZm8gPSBzdHJ1Y3R1cmU7
CisgICAgICAgIG1fb3BJbmZvMiA9IE9wSW5mb1dyYXBwZXIoKTsKKyAgICB9CisKICAgICB2b2lk
IGNvbnZlcnRUb05ld0FycmF5QnVmZmVyKEZyb3plblZhbHVlKiBpbW11dGFibGVCdXR0ZXJmbHkp
OwogICAgIAogICAgIHZvaWQgY29udmVydFRvRGlyZWN0Q2FsbChGcm96ZW5WYWx1ZSopOwpAQCAt
MTkwOSw2ICsxOTE4LDcgQEAgc3RydWN0IE5vZGUgewogICAgICAgICBjYXNlIEFycmF5aWZ5VG9T
dHJ1Y3R1cmU6CiAgICAgICAgIGNhc2UgTmV3T2JqZWN0OgogICAgICAgICBjYXNlIE5ld1Byb21p
c2U6CisgICAgICAgIGNhc2UgTmV3R2VuZXJhdG9yOgogICAgICAgICBjYXNlIE5ld1N0cmluZ09i
amVjdDoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBkZWZhdWx0OgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCmluZGV4IDRkNzE1ODJlMTdhNjkxYTA1OGE4
MzQ3MjI4NGY2MDE5Zjk3ZDgwMzkuLjA2MmNkYzA4NDkzMGQ3NGEwMmE3MmEzMGJlOTYwZjZmMTg1
MDNkZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKQEAgLTU0LDYg
KzU0LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKFRvVGhp
cywgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oQ3JlYXRlVGhpcywgTm9kZVJlc3VsdEpTKSAv
KiBOb3RlIHRoaXMgaXMgbm90IE11c3RHZW5lcmF0ZSBzaW5jZSB3ZSdyZSByZXR1cm5pbmcgaXQg
YW55d2F5LiAqLyBcCiAgICAgbWFjcm8oQ3JlYXRlUHJvbWlzZSwgTm9kZVJlc3VsdEpTIHwgTm9k
ZU11c3RHZW5lcmF0ZSkgXAorICAgIG1hY3JvKENyZWF0ZUdlbmVyYXRvciwgTm9kZVJlc3VsdEpT
IHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEdldENhbGxlZSwgTm9kZVJlc3VsdEpT
KSBcCiAgICAgbWFjcm8oU2V0Q2FsbGVlLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8o
R2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIE5vZGVSZXN1bHRJbnQzMikgXApAQCAtMzQw
LDYgKzM0MSw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICAvKiBBbGxv
Y2F0aW9ucy4gKi9cCiAgICAgbWFjcm8oTmV3T2JqZWN0LCBOb2RlUmVzdWx0SlMpIFwKICAgICBt
YWNybyhOZXdQcm9taXNlLCBOb2RlUmVzdWx0SlMpIFwKKyAgICBtYWNybyhOZXdHZW5lcmF0b3Is
IE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKE5ld0FycmF5LCBOb2RlUmVzdWx0SlMgfCBOb2Rl
SGFzVmFyQXJncykgXAogICAgIG1hY3JvKE5ld0FycmF5V2l0aFNwcmVhZCwgTm9kZVJlc3VsdEpT
IHwgTm9kZUhhc1ZhckFyZ3MpIFwKICAgICBtYWNybyhOZXdBcnJheVdpdGhTaXplLCBOb2RlUmVz
dWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPcGVyYXRpb25zLmNwcAppbmRleCBhZmEyODIyMGRjZjMwMjQ0MTQ0MTU5M2UzNTczZDg5ZTNh
ZDUwMzNkLi5jMzE1YzI2NTI3Yzc2MmIxM2MwZTZlMzNjMzQ5YzJiY2I2NDQ0OWFiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKQEAgLTM5OCw2ICszOTgs
MTYgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZUludGVybmFsUHJvbWlz
ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KgogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgSlNJbnRlcm5hbFByb21pc2U6OmNyZWF0ZSh2bSwgc3RydWN0dXJlKSk7CiB9CiAKK0pTQ2Vs
bCogSklUX09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVHZW5lcmF0b3IoRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCogY29uc3RydWN0b3IsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7
CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBleGVjKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJj
bGFzc1N0cnVjdHVyZShleGVjLCBudWxscHRyLCBjb25zdHJ1Y3RvciwgZ2xvYmFsT2JqZWN0LT5n
ZW5lcmF0b3JTdHJ1Y3R1cmUoKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVs
bHB0cik7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU0dlbmVyYXRvcjo6Y3JlYXRl
KHZtLCBzdHJ1Y3R1cmUpKTsKK30KKwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNh
bGxPYmplY3RDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRUYXJnZXQpCiB7CiAgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3Bl
cmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKaW5k
ZXggYjk4ZTYyMTc1YzY2ZjM2ZTM2NGQ1OGU5ZGM4MDZhZDA1MmRjNjUyYi4uNzQ0YTUwZGJmZWY4
Mjc1ZTI5YWY3Mjk2OWM2ODY0YTM2NjJjNTcwMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPcGVyYXRpb25zLmgKQEAgLTUwLDYgKzUwLDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbk9iamVjdENyZWF0ZU9iamVjdChFeGVjU3RhdGUqLCBKU09iamVjdCopIFdURl9J
TlQKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVUaGlzKEV4ZWNTdGF0ZSos
IEpTT2JqZWN0KiBjb25zdHJ1Y3RvciwgdWludDMyX3QgaW5saW5lQ2FwYWNpdHkpIFdURl9JTlRF
Uk5BTDsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVQcm9taXNlKEV4ZWNT
dGF0ZSosIEpTT2JqZWN0KiBjb25zdHJ1Y3RvciwgSlNHbG9iYWxPYmplY3QqKSBXVEZfSU5URVJO
QUw7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlSW50ZXJuYWxQcm9taXNl
KEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiBjb25zdHJ1Y3RvciwgSlNHbG9iYWxPYmplY3QqKSBXVEZf
SU5URVJOQUw7CitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlR2VuZXJhdG9y
KEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiBjb25zdHJ1Y3RvciwgSlNHbG9iYWxPYmplY3QqKSBXVEZf
SU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRvVGhpcyhF
eGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxKSBXVEZfSU5URVJOQUw7CiBFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRvVGhpc1N0cmljdChFeGVjU3RhdGUq
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlTW9kKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIpIFdURl9JTlRFUk5BTDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3Bh
Z2F0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9u
UHJvcGFnYXRpb25QaGFzZS5jcHAKaW5kZXggNDhhNDFiMzA3MmI3Njc2MzYxOTEwNDUzYTRkZTRm
NWFhZWI1NGJhYi4uZjIwOWM0YTZmNzQ3MWJkYWUyZThmZGIzYTc4NzA3MmUxNDBjODdkNiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRp
b25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9u
UHJvcGFnYXRpb25QaGFzZS5jcHAKQEAgLTEwMTQsNiArMTAxNCwxMSBAQCBjbGFzcyBQcmVkaWN0
aW9uUHJvcGFnYXRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgIGNhc2UgTmV3UHJv
bWlzZToKICAgICAgICAgICAgIHNldFByZWRpY3Rpb24oU3BlY1Byb21pc2VPYmplY3QpOwogICAg
ICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBDcmVhdGVHZW5lcmF0b3I6CisgICAgICAg
IGNhc2UgTmV3R2VuZXJhdG9yOgorICAgICAgICAgICAgc2V0UHJlZGljdGlvbihTcGVjT2JqZWN0
T3RoZXIpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBB
cnJheVNsaWNlOgogICAgICAgICBjYXNlIE5ld0FycmF5V2l0aFNwcmVhZDoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKaW5kZXggY2E4YWVhMzBhMzUyNjZj
Njc1NDU5YjliNWVmNTQ1MmM1MzE3NmQ1ZC4uMDk1ZTE1YWQ5ZDM2NzNlOGZjODk2NzkyNGJlYTg0
ZTI4ODgwMzliMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZl
VG9FeGVjdXRlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVj
dXRlLmgKQEAgLTE3OSw2ICsxNzksNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0
ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGJvb2wgaWdubwogICAgIGNh
c2UgVG9UaGlzOgogICAgIGNhc2UgQ3JlYXRlVGhpczoKICAgICBjYXNlIENyZWF0ZVByb21pc2U6
CisgICAgY2FzZSBDcmVhdGVHZW5lcmF0b3I6CiAgICAgY2FzZSBPYmplY3RDcmVhdGU6CiAgICAg
Y2FzZSBPYmplY3RLZXlzOgogICAgIGNhc2UgR2V0Q2FsbGVlOgpAQCAtMzIxLDYgKzMyMiw3IEBA
IGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBncmFw
aCwgTm9kZSogbm9kZSwgYm9vbCBpZ25vCiAgICAgY2FzZSBDb25zdHJ1Y3RGb3J3YXJkVmFyYXJn
czoKICAgICBjYXNlIE5ld09iamVjdDoKICAgICBjYXNlIE5ld1Byb21pc2U6CisgICAgY2FzZSBO
ZXdHZW5lcmF0b3I6CiAgICAgY2FzZSBOZXdBcnJheToKICAgICBjYXNlIE5ld0FycmF5V2l0aFNp
emU6CiAgICAgY2FzZSBOZXdBcnJheUJ1ZmZlcjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggMjdjYzFiNDU3YTg5ZjNkNDM1MzAyZWEw
NzMxMjVmZjEzZjM4ZWNmYy4uY2E5MWM0OGE3MTE1MTNjZDc2ZjNmNmE1ZWIyYjI5Yjc4Y2FhNDE2
MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5j
cHAKQEAgLTEyNzY2LDYgKzEyNzY2LDQ5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVD
cmVhdGVQcm9taXNlKE5vZGUqIG5vZGUpCiAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUp
OwogfQogCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3JlYXRlR2VuZXJhdG9yKE5vZGUq
IG5vZGUpCit7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1faml0Lmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOworCisgICAgU3BlY3VsYXRlQ2VsbE9w
ZXJhbmQgY2FsbGVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICBHUFJUZW1wb3JhcnkgcmVz
dWx0KHRoaXMpOworICAgIEdQUlRlbXBvcmFyeSBzdHJ1Y3R1cmUodGhpcyk7CisgICAgR1BSVGVt
cG9yYXJ5IHNjcmF0Y2gxKHRoaXMpOworICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoMih0aGlzKTsK
KworICAgIEdQUlJlZyBjYWxsZWVHUFIgPSBjYWxsZWUuZ3ByKCk7CisgICAgR1BSUmVnIHJlc3Vs
dEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAgICBHUFJSZWcgc3RydWN0dXJlR1BSID0gc3RydWN0dXJl
LmdwcigpOworICAgIEdQUlJlZyBzY3JhdGNoMUdQUiA9IHNjcmF0Y2gxLmdwcigpOworICAgIEdQ
UlJlZyBzY3JhdGNoMkdQUiA9IHNjcmF0Y2gyLmdwcigpOworICAgIC8vIFJhcmUgZGF0YSBpcyBv
bmx5IHVzZWQgdG8gYWNjZXNzIHRoZSBhbGxvY2F0b3IgJiBzdHJ1Y3R1cmUKKyAgICAvLyBXZSBj
YW4gYXZvaWQgdXNpbmcgYW4gYWRkaXRpb25hbCBHUFIgdGhpcyB3YXkKKyAgICBHUFJSZWcgcmFy
ZURhdGFHUFIgPSBzdHJ1Y3R1cmVHUFI7CisKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Qg
c2xvd0Nhc2VzOworCisgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdEZ1bmN0
aW9uKGNhbGxlZUdQUikpOworICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3Mo
Y2FsbGVlR1BSLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZlJhcmVEYXRhKCkpLCByYXJlRGF0YUdQUik7
CisgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVy
OjpaZXJvLCByYXJlRGF0YUdQUikpOworICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFk
ZHJlc3MocmFyZURhdGFHUFIsIEZ1bmN0aW9uUmFyZURhdGE6Om9mZnNldE9mSW50ZXJuYWxGdW5j
dGlvbkFsbG9jYXRpb25Qcm9maWxlKCkgKyBJbnRlcm5hbEZ1bmN0aW9uQWxsb2NhdGlvblByb2Zp
bGU6Om9mZnNldE9mU3RydWN0dXJlKCkpLCBzdHJ1Y3R1cmVHUFIpOworICAgIG1faml0Lm1vdmUo
VHJ1c3RlZEltbVB0cihKU0dlbmVyYXRvcjo6aW5mbygpKSwgc2NyYXRjaDFHUFIpOworICAgIHNs
b3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoUHRyKENDYWxsSGVscGVyczo6Tm90RXF1YWwsIHNj
cmF0Y2gxR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3RydWN0dXJlR1BSLCBTdHJ1Y3R1cmU6
OmNsYXNzSW5mb09mZnNldCgpKSkpOworICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cjo6d2Vh
a1BvaW50ZXIobV9qaXQuZ3JhcGgoKSwgZ2xvYmFsT2JqZWN0KSwgc2NyYXRjaDFHUFIpOworICAg
IHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoUHRyKENDYWxsSGVscGVyczo6Tm90RXF1YWws
IHNjcmF0Y2gxR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3RydWN0dXJlR1BSLCBTdHJ1Y3R1
cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSkpOworCisgICAgYXV0byBidXR0ZXJmbHkgPSBUcnVz
dGVkSW1tUHRyKG51bGxwdHIpOworICAgIGVtaXRBbGxvY2F0ZUpTT2JqZWN0V2l0aEtub3duU2l6
ZTxKU0dlbmVyYXRvcj4ocmVzdWx0R1BSLCBzdHJ1Y3R1cmVHUFIsIGJ1dHRlcmZseSwgc2NyYXRj
aDFHUFIsIHNjcmF0Y2gyR1BSLCBzbG93Q2FzZXMsIHNpemVvZihKU0dlbmVyYXRvcikpOworICAg
IG1faml0LnN0b3JlVHJ1c3RlZFZhbHVlKGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpT
R2VuZXJhdG9yOjpHZW5lcmF0b3JTdGF0ZTo6SW5pdCkpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mo
cmVzdWx0R1BSLCBKU0ludGVybmFsRmllbGRPYmplY3RJbXBsPD46Om9mZnNldE9mSW50ZXJuYWxG
aWVsZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNHZW5lcmF0b3I6OkZpZWxkOjpTdGF0ZSkpKSk7
CisgICAgbV9qaXQuc3RvcmVUcnVzdGVkVmFsdWUoanNVbmRlZmluZWQoKSwgQ0NhbGxIZWxwZXJz
OjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbDw+OjpvZmZzZXRP
ZkludGVybmFsRmllbGQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTR2VuZXJhdG9yOjpGaWVsZDo6
TmV4dCkpKSk7CisgICAgbV9qaXQuc3RvcmVUcnVzdGVkVmFsdWUoanNVbmRlZmluZWQoKSwgQ0Nh
bGxIZWxwZXJzOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbDw+
OjpvZmZzZXRPZkludGVybmFsRmllbGQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTR2VuZXJhdG9y
OjpGaWVsZDo6VGhpcykpKSk7CisgICAgbV9qaXQuc3RvcmVUcnVzdGVkVmFsdWUoanNVbmRlZmlu
ZWQoKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNJbnRlcm5hbEZpZWxkT2Jq
ZWN0SW1wbDw+OjpvZmZzZXRPZkludGVybmFsRmllbGQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
R2VuZXJhdG9yOjpGaWVsZDo6RnJhbWUpKSkpOworICAgIG1faml0Lm11dGF0b3JGZW5jZShtX2pp
dC52bSgpKTsKKworICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93Q2Fz
ZXMsIHRoaXMsIG9wZXJhdGlvbkNyZWF0ZUdlbmVyYXRvciwgcmVzdWx0R1BSLCBjYWxsZWVHUFIs
IFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1faml0LmdyYXBoKCksIGdsb2JhbE9iamVjdCkp
KTsKKworICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKK30KKwogdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZU5ld09iamVjdChOb2RlKiBub2RlKQogewogICAgIEdQUlRlbXBvcmFy
eSByZXN1bHQodGhpcyk7CkBAIC0xMjgyMiw2ICsxMjg2NSwzMiBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlTmV3UHJvbWlzZShOb2RlKiBub2RlKQogICAgIGNlbGxSZXN1bHQocmVzdWx0
R1BSLCBub2RlKTsKIH0KIAordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0dlbmVyYXRv
cihOb2RlKiBub2RlKQoreworICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CisgICAgR1BS
VGVtcG9yYXJ5IHNjcmF0Y2gxKHRoaXMpOworICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoMih0aGlz
KTsKKworICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisgICAgR1BSUmVnIHNj
cmF0Y2gxR1BSID0gc2NyYXRjaDEuZ3ByKCk7CisgICAgR1BSUmVnIHNjcmF0Y2gyR1BSID0gc2Ny
YXRjaDIuZ3ByKCk7CisKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOwor
CisgICAgRnJvemVuVmFsdWUqIHN0cnVjdHVyZSA9IG1fZ3JhcGguZnJlZXplU3Ryb25nKG5vZGUt
PnN0cnVjdHVyZSgpLmdldCgpKTsKKyAgICBhdXRvIGJ1dHRlcmZseSA9IFRydXN0ZWRJbW1QdHIo
bnVsbHB0cik7CisgICAgZW1pdEFsbG9jYXRlSlNPYmplY3RXaXRoS25vd25TaXplPEpTR2VuZXJh
dG9yPihyZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgYnV0dGVyZmx5LCBzY3Jh
dGNoMUdQUiwgc2NyYXRjaDJHUFIsIHNsb3dDYXNlcywgc2l6ZW9mKEpTR2VuZXJhdG9yKSk7Cisg
ICAgbV9qaXQuc3RvcmVUcnVzdGVkVmFsdWUoanNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4o
SlNHZW5lcmF0b3I6OkdlbmVyYXRvclN0YXRlOjpJbml0KSksIENDYWxsSGVscGVyczo6QWRkcmVz
cyhyZXN1bHRHUFIsIEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGw8Pjo6b2Zmc2V0T2ZJbnRlcm5h
bEZpZWxkKHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0dlbmVyYXRvcjo6RmllbGQ6OlN0YXRlKSkp
KTsKKyAgICBtX2ppdC5zdG9yZVRydXN0ZWRWYWx1ZShqc1VuZGVmaW5lZCgpLCBDQ2FsbEhlbHBl
cnM6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0ludGVybmFsRmllbGRPYmplY3RJbXBsPD46Om9mZnNl
dE9mSW50ZXJuYWxGaWVsZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNHZW5lcmF0b3I6OkZpZWxk
OjpOZXh0KSkpKTsKKyAgICBtX2ppdC5zdG9yZVRydXN0ZWRWYWx1ZShqc1VuZGVmaW5lZCgpLCBD
Q2FsbEhlbHBlcnM6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0ludGVybmFsRmllbGRPYmplY3RJbXBs
PD46Om9mZnNldE9mSW50ZXJuYWxGaWVsZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNHZW5lcmF0
b3I6OkZpZWxkOjpUaGlzKSkpKTsKKyAgICBtX2ppdC5zdG9yZVRydXN0ZWRWYWx1ZShqc1VuZGVm
aW5lZCgpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0ludGVybmFsRmllbGRP
YmplY3RJbXBsPD46Om9mZnNldE9mSW50ZXJuYWxGaWVsZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNHZW5lcmF0b3I6OkZpZWxkOjpGcmFtZSkpKSk7CisgICAgbV9qaXQubXV0YXRvckZlbmNlKG1f
aml0LnZtKCkpOworCisgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dD
YXNlcywgdGhpcywgb3BlcmF0aW9uTmV3R2VuZXJhdG9yLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1Q
dHIoc3RydWN0dXJlKSkpOworCisgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOworfQor
CiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9QcmltaXRpdmUoTm9kZSogbm9kZSkKIHsK
ICAgICBERkdfQVNTRVJUKG1faml0LmdyYXBoKCksIG5vZGUsIG5vZGUtPmNoaWxkMSgpLnVzZUtp
bmQoKSA9PSBVbnR5cGVkVXNlLCBub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCmluZGV4IGY5OTFkZDIwMTYy
NGU2MDNiMjFlZDczZGQwM2M1M2MzYjczMWFkZTIuLjBmMmY1ZTU4OTA4MzJkOTU3OGU4YTRlMGZj
NzFmYTliODY3YTlkMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmgKQEAgLTE0ODQsOCArMTQ4NCwxMCBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVCB7
CiAgICAgdm9pZCBjb21waWxlT2JqZWN0Q3JlYXRlKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVD
cmVhdGVUaGlzKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVDcmVhdGVQcm9taXNlKE5vZGUqKTsK
KyAgICB2b2lkIGNvbXBpbGVDcmVhdGVHZW5lcmF0b3IoTm9kZSopOwogICAgIHZvaWQgY29tcGls
ZU5ld09iamVjdChOb2RlKik7CiAgICAgdm9pZCBjb21waWxlTmV3UHJvbWlzZShOb2RlKik7Cisg
ICAgdm9pZCBjb21waWxlTmV3R2VuZXJhdG9yKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVUb1By
aW1pdGl2ZShOb2RlKik7CiAgICAgdm9pZCBjb21waWxlTG9nU2hhZG93Q2hpY2tlblByb2xvZ3Vl
KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVMb2dTaGFkb3dDaGlja2VuVGFpbChOb2RlKik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJf
NjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0
LmNwcAppbmRleCAwOWNmMDk4NDY5OGI5Zjc5Mzc2ZjA1NjQxN2U1NzE2MDM5YWU1NmRiLi4yOTdh
NDA5MjZiZjZkZTUwZTEzM2U5ZTgyZWIwODkzOTJhYWQ3ODNiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTMyMDIs
NiArMzIwMiwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAg
ICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgQ3JlYXRlR2VuZXJhdG9yOiB7CisgICAg
ICAgIGNvbXBpbGVDcmVhdGVHZW5lcmF0b3Iobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0K
KwogICAgIGNhc2UgTmV3T2JqZWN0OiB7CiAgICAgICAgIGNvbXBpbGVOZXdPYmplY3Qobm9kZSk7
CiAgICAgICAgIGJyZWFrOwpAQCAtMzIxMiw2ICszMjE3LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2Fz
ZSBOZXdHZW5lcmF0b3I6IHsKKyAgICAgICAgY29tcGlsZU5ld0dlbmVyYXRvcihub2RlKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBHZXRDYWxsZWU6IHsKICAgICAgICAgY29t
cGlsZUdldENhbGxlZShub2RlKTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAppbmRleCBmMWYwNGMzYzk4NzVh
NjMxNjVhNjI4ZmY5ZjFjZWRiNWZjNzA2YjM2Li42YjZmZDUyZjNkYTZhM2YzODg4NmE1MWZlMzU0
NmFmMjgzYTI3YzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTM0NzgsNiArMzQ3OCwxMSBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGNvbXBpbGVDcmVhdGVQcm9taXNlKG5v
ZGUpOwogICAgICAgICBicmVhazsKICAgICB9CisKKyAgICBjYXNlIENyZWF0ZUdlbmVyYXRvcjog
eworICAgICAgICBjb21waWxlQ3JlYXRlR2VuZXJhdG9yKG5vZGUpOworICAgICAgICBicmVhazsK
KyAgICB9CiAgICAgICAgIAogICAgIGNhc2UgTmV3T2JqZWN0OiB7CiAgICAgICAgIGNvbXBpbGVO
ZXdPYmplY3Qobm9kZSk7CkBAIC0zNDg5LDYgKzM0OTQsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNl
IE5ld0dlbmVyYXRvcjogeworICAgICAgICBjb21waWxlTmV3R2VuZXJhdG9yKG5vZGUpOworICAg
ICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIEdldENhbGxlZTogewogICAgICAgICBjb21w
aWxlR2V0Q2FsbGVlKG5vZGUpOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAK
aW5kZXggMjRiNTVlNzg4ZDlkZTliNTA2OTk2NzU1NzUzNzczOGIzMzJiZTM1Ny4uMGQ1OTAxODZk
ODNiZGI0NzQ1ZWY3YzdjMTU2NzQxMDI0NTIzOWVjNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAK
QEAgLTMyMiw2ICszMjIsNyBAQCBjbGFzcyBTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZSA6IHB1
YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICBzd2l0Y2ggKG1fbm9kZS0+b3AoKSkgewogICAgICAg
ICAgICAgY2FzZSBOZXdPYmplY3Q6CiAgICAgICAgICAgICBjYXNlIE5ld1Byb21pc2U6CisgICAg
ICAgICAgICBjYXNlIE5ld0dlbmVyYXRvcjoKICAgICAgICAgICAgIGNhc2UgTmV3QXJyYXk6CiAg
ICAgICAgICAgICBjYXNlIE5ld0FycmF5V2l0aFNpemU6CiAgICAgICAgICAgICBjYXNlIE5ld0Fy
cmF5QnVmZmVyOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBh
YmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMu
Y3BwCmluZGV4IDg0NWM0MTdlY2RiMTRiZjUwYTQ1ZjVlOGUwOWUzYWUyMzk5ZjlkODAuLmVhODQy
YzA2MTJjNmNjYjljNTA4ZWE1MTM2MDA4NjBkYzc3ZmMzMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKQEAgLTc1LDYgKzc1LDcgQEAgaW5saW5l
IENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBHZXRCdXR0
ZXJmbHk6CiAgICAgY2FzZSBOZXdPYmplY3Q6CiAgICAgY2FzZSBOZXdQcm9taXNlOgorICAgIGNh
c2UgTmV3R2VuZXJhdG9yOgogICAgIGNhc2UgTmV3U3RyaW5nT2JqZWN0OgogICAgIGNhc2UgTmV3
U3ltYm9sOgogICAgIGNhc2UgTmV3QXJyYXk6CkBAIC0zNzksNiArMzgwLDcgQEAgaW5saW5lIENh
cGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBGaWx0ZXJJbkJ5
SWRTdGF0dXM6CiAgICAgY2FzZSBDcmVhdGVUaGlzOgogICAgIGNhc2UgQ3JlYXRlUHJvbWlzZToK
KyAgICBjYXNlIENyZWF0ZUdlbmVyYXRvcjoKICAgICBjYXNlIERhdGFWaWV3R2V0SW50OgogICAg
IGNhc2UgRGF0YVZpZXdHZXRGbG9hdDoKICAgICBjYXNlIERhdGFWaWV3U2V0OgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDhjMDkxYzY2NDUx
YzAxNTUzMDBiNTJmNDlhMmE4MmU1MDI1MjQ0MjUuLjkwYTU4ZjdjM2VkYzA3OGVlNDNmNjVjMGRh
MjY1NjM2ZTQwNWY2YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2Vy
REZHVG9CMy5jcHAKQEAgLTc4LDYgKzc4LDcgQEAKICNpbmNsdWRlICJKU0FzeW5jRnVuY3Rpb24u
aCIKICNpbmNsdWRlICJKU0FzeW5jR2VuZXJhdG9yRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NJ
bmxpbmVzLmgiCisjaW5jbHVkZSAiSlNHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJKU0dlbmVyYXRv
ckZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNJbW11dGFibGVCdXR0ZXJmbHkuaCIKICNpbmNsdWRl
ICJKU0xleGljYWxFbnZpcm9ubWVudC5oIgpAQCAtMTA0OCw2ICsxMDQ5LDkgQEAgY2xhc3MgTG93
ZXJERkdUb0IzIHsKICAgICAgICAgY2FzZSBOZXdQcm9taXNlOgogICAgICAgICAgICAgY29tcGls
ZU5ld1Byb21pc2UoKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE5ld0dlbmVy
YXRvcjoKKyAgICAgICAgICAgIGNvbXBpbGVOZXdHZW5lcmF0b3IoKTsKKyAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBjYXNlIE5ld1N0cmluZ09iamVjdDoKICAgICAgICAgICAgIGNvbXBpbGVO
ZXdTdHJpbmdPYmplY3QoKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTA2Niw2ICsxMDcwLDkg
QEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgY2FzZSBDcmVhdGVQcm9taXNlOgogICAg
ICAgICAgICAgY29tcGlsZUNyZWF0ZVByb21pc2UoKTsKICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIENyZWF0ZUdlbmVyYXRvcjoKKyAgICAgICAgICAgIGNvbXBpbGVDcmVhdGVHZW5l
cmF0b3IoKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFNwcmVhZDoKICAgICAg
ICAgICAgIGNvbXBpbGVTcHJlYWQoKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNTkyNiw2ICs1
OTMzLDMwIEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIHNldEpTVmFsdWUobV9vdXQu
cGhpKHBvaW50ZXJUeXBlKCksIGZhc3RSZXN1bHQsIHNsb3dSZXN1bHQpKTsKICAgICB9CiAKKyAg
ICB2b2lkIGNvbXBpbGVOZXdHZW5lcmF0b3IoKQorICAgIHsKKyAgICAgICAgTEJhc2ljQmxvY2sg
c2xvd0Nhc2UgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9jayBjb250aW51
YXRpb24gPSBtX291dC5uZXdCbG9jaygpOworCisgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0
ID0gbV9vdXQuaW5zZXJ0TmV3QmxvY2tzQmVmb3JlKHNsb3dDYXNlKTsKKworICAgICAgICBMVmFs
dWUgZ2VuZXJhdG9yID0gYWxsb2NhdGVPYmplY3Q8SlNHZW5lcmF0b3I+KG1fbm9kZS0+c3RydWN0
dXJlKCksIG1fb3V0LmludFB0clplcm8sIHNsb3dDYXNlKTsKKyAgICAgICAgbV9vdXQuc3RvcmU2
NChtX291dC5jb25zdEludDY0KEpTVmFsdWU6OmVuY29kZShqc051bWJlcihzdGF0aWNfY2FzdDxp
bnQzMl90PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9yU3RhdGU6OkluaXQpKSkpLCBnZW5lcmF0b3Is
IG1faGVhcHMuSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbF9pbnRlcm5hbEZpZWxkc1tzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNHZW5lcmF0b3I6OkZpZWxkOjpTdGF0ZSldKTsKKyAgICAgICAgbV9v
dXQuc3RvcmU2NChtX291dC5jb25zdEludDY0KEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KSksIGdlbmVyYXRvciwgbV9oZWFwcy5KU0ludGVybmFsRmllbGRPYmplY3RJbXBsX2ludGVybmFs
RmllbGRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihKU0dlbmVyYXRvcjo6RmllbGQ6Ok5leHQpXSk7
CisgICAgICAgIG1fb3V0LnN0b3JlNjQobV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSkpLCBnZW5lcmF0b3IsIG1faGVhcHMuSlNJbnRlcm5hbEZpZWxkT2JqZWN0
SW1wbF9pbnRlcm5hbEZpZWxkc1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNHZW5lcmF0b3I6OkZp
ZWxkOjpUaGlzKV0pOworICAgICAgICBtX291dC5zdG9yZTY0KG1fb3V0LmNvbnN0SW50NjQoSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpKSwgZ2VuZXJhdG9yLCBtX2hlYXBzLkpTSW50ZXJu
YWxGaWVsZE9iamVjdEltcGxfaW50ZXJuYWxGaWVsZHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
R2VuZXJhdG9yOjpGaWVsZDo6RnJhbWUpXSk7CisgICAgICAgIG11dGF0b3JGZW5jZSgpOworICAg
ICAgICBWYWx1ZUZyb21CbG9jayBmYXN0UmVzdWx0ID0gbV9vdXQuYW5jaG9yKGdlbmVyYXRvcik7
CisgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAgICBtX291dC5hcHBl
bmRUbyhzbG93Q2FzZSwgY29udGludWF0aW9uKTsKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xv
d1Jlc3VsdCA9IG1fb3V0LmFuY2hvcih2bUNhbGwocG9pbnRlclR5cGUoKSwgbV9vdXQub3BlcmF0
aW9uKG9wZXJhdGlvbk5ld0dlbmVyYXRvciksIG1fY2FsbEZyYW1lLCBmcm96ZW5Qb2ludGVyKG1f
Z3JhcGguZnJlZXplU3Ryb25nKG1fbm9kZS0+c3RydWN0dXJlKCkuZ2V0KCkpKSkpOworICAgICAg
ICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29u
dGludWF0aW9uLCBsYXN0TmV4dCk7CisgICAgICAgIHNldEpTVmFsdWUobV9vdXQucGhpKHBvaW50
ZXJUeXBlKCksIGZhc3RSZXN1bHQsIHNsb3dSZXN1bHQpKTsKKyAgICB9CisKICAgICB2b2lkIGNv
bXBpbGVOZXdTdHJpbmdPYmplY3QoKQogICAgIHsKICAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVy
ZSBzdHJ1Y3R1cmUgPSBtX25vZGUtPnN0cnVjdHVyZSgpOwpAQCAtNjMzOCw2ICs2MzY5LDUyIEBA
IGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKICAgICB9
CiAKKyAgICB2b2lkIGNvbXBpbGVDcmVhdGVHZW5lcmF0b3IoKQorICAgIHsKKyAgICAgICAgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9k
ZS0+b3JpZ2luLnNlbWFudGljKTsKKworICAgICAgICBMVmFsdWUgY2FsbGVlID0gbG93Q2VsbCht
X25vZGUtPmNoaWxkMSgpKTsKKworICAgICAgICBMQmFzaWNCbG9jayBpc0Z1bmN0aW9uQmxvY2sg
PSBtX291dC5uZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9jayBoYXNSYXJlRGF0YSA9IG1f
b3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIGNoZWNrR2xvYmFsT2JqZWN0Q2Fz
ZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIGZhc3RBbGxvY2F0aW9u
Q2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIHNsb3dDYXNlID0g
bV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9v
dXQubmV3QmxvY2soKTsKKworICAgICAgICBtX291dC5icmFuY2goaXNGdW5jdGlvbihjYWxsZWUs
IHByb3ZlblR5cGUobV9ub2RlLT5jaGlsZDEoKSkpLCB1c3VhbGx5KGlzRnVuY3Rpb25CbG9jayks
IHJhcmVseShzbG93Q2FzZSkpOworCisgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9v
dXQuYXBwZW5kVG8oaXNGdW5jdGlvbkJsb2NrLCBoYXNSYXJlRGF0YSk7CisgICAgICAgIExWYWx1
ZSByYXJlRGF0YSA9IG1fb3V0LmxvYWRQdHIoY2FsbGVlLCBtX2hlYXBzLkpTRnVuY3Rpb25fcmFy
ZURhdGEpOworICAgICAgICBtX291dC5icmFuY2gobV9vdXQuaXNaZXJvNjQocmFyZURhdGEpLCBy
YXJlbHkoc2xvd0Nhc2UpLCB1c3VhbGx5KGhhc1JhcmVEYXRhKSk7CisKKyAgICAgICAgbV9vdXQu
YXBwZW5kVG8oaGFzUmFyZURhdGEsIGZhc3RBbGxvY2F0aW9uQ2FzZSk7CisgICAgICAgIExWYWx1
ZSBzdHJ1Y3R1cmUgPSBtX291dC5sb2FkUHRyKHJhcmVEYXRhLCBtX2hlYXBzLkZ1bmN0aW9uUmFy
ZURhdGFfaW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25Qcm9maWxlX3N0cnVjdHVyZSk7CisgICAg
ICAgIG1fb3V0LmJyYW5jaChtX291dC5lcXVhbChtX291dC5sb2FkUHRyKHN0cnVjdHVyZSwgbV9o
ZWFwcy5TdHJ1Y3R1cmVfY2xhc3NJbmZvKSwgbV9vdXQuY29uc3RJbnRQdHIoSlNHZW5lcmF0b3I6
OmluZm8oKSkpLCB1c3VhbGx5KGNoZWNrR2xvYmFsT2JqZWN0Q2FzZSksIHJhcmVseShzbG93Q2Fz
ZSkpOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNoZWNrR2xvYmFsT2JqZWN0Q2FzZSwgZmFz
dEFsbG9jYXRpb25DYXNlKTsKKyAgICAgICAgbV9vdXQuYnJhbmNoKG1fb3V0LmVxdWFsKG1fb3V0
LmxvYWRQdHIoc3RydWN0dXJlLCBtX2hlYXBzLlN0cnVjdHVyZV9nbG9iYWxPYmplY3QpLCB3ZWFr
UG9pbnRlcihnbG9iYWxPYmplY3QpKSwgdXN1YWxseShmYXN0QWxsb2NhdGlvbkNhc2UpLCByYXJl
bHkoc2xvd0Nhc2UpKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhmYXN0QWxsb2NhdGlvbkNh
c2UsIHNsb3dDYXNlKTsKKyAgICAgICAgTFZhbHVlIGdlbmVyYXRvciA9IGFsbG9jYXRlT2JqZWN0
PEpTR2VuZXJhdG9yPihzdHJ1Y3R1cmUsIG1fb3V0LmludFB0clplcm8sIHNsb3dDYXNlKTsKKyAg
ICAgICAgbV9vdXQuc3RvcmU2NChtX291dC5jb25zdEludDY0KEpTVmFsdWU6OmVuY29kZShqc051
bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9yU3RhdGU6Oklu
aXQpKSkpLCBnZW5lcmF0b3IsIG1faGVhcHMuSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbF9pbnRl
cm5hbEZpZWxkc1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNHZW5lcmF0b3I6OkZpZWxkOjpTdGF0
ZSldKTsKKyAgICAgICAgbV9vdXQuc3RvcmU2NChtX291dC5jb25zdEludDY0KEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKSksIGdlbmVyYXRvciwgbV9oZWFwcy5KU0ludGVybmFsRmllbGRP
YmplY3RJbXBsX2ludGVybmFsRmllbGRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihKU0dlbmVyYXRv
cjo6RmllbGQ6Ok5leHQpXSk7CisgICAgICAgIG1fb3V0LnN0b3JlNjQobV9vdXQuY29uc3RJbnQ2
NChKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSkpLCBnZW5lcmF0b3IsIG1faGVhcHMuSlNJ
bnRlcm5hbEZpZWxkT2JqZWN0SW1wbF9pbnRlcm5hbEZpZWxkc1tzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNHZW5lcmF0b3I6OkZpZWxkOjpUaGlzKV0pOworICAgICAgICBtX291dC5zdG9yZTY0KG1f
b3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpKSwgZ2VuZXJhdG9y
LCBtX2hlYXBzLkpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGxfaW50ZXJuYWxGaWVsZHNbc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTR2VuZXJhdG9yOjpGaWVsZDo6RnJhbWUpXSk7CisgICAgICAgIG11
dGF0b3JGZW5jZSgpOworICAgICAgICBWYWx1ZUZyb21CbG9jayBmYXN0UmVzdWx0ID0gbV9vdXQu
YW5jaG9yKGdlbmVyYXRvcik7CisgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKwor
ICAgICAgICBtX291dC5hcHBlbmRUbyhzbG93Q2FzZSwgY29udGludWF0aW9uKTsKKyAgICAgICAg
VmFsdWVGcm9tQmxvY2sgc2xvd1Jlc3VsdCA9IG1fb3V0LmFuY2hvcih2bUNhbGwoSW50NjQsIG1f
b3V0Lm9wZXJhdGlvbihvcGVyYXRpb25DcmVhdGVHZW5lcmF0b3IpLCBtX2NhbGxGcmFtZSwgY2Fs
bGVlLCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpKSk7CisgICAgICAgIG1fb3V0Lmp1bXAoY29u
dGludWF0aW9uKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3RO
ZXh0KTsKKyAgICAgICAgTFZhbHVlIHJlc3VsdCA9IG1fb3V0LnBoaShJbnQ2NCwgZmFzdFJlc3Vs
dCwgc2xvd1Jlc3VsdCk7CisKKyAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOworICAgIH0KKwog
ICAgIHZvaWQgY29tcGlsZVNwcmVhZCgpCiAgICAgewogICAgICAgICBpZiAobV9ub2RlLT5jaGls
ZDEoKS0+b3AoKSA9PSBQaGFudG9tTmV3QXJyYXlCdWZmZXIpIHsKQEAgLTE2MDU5LDggKzE2MTM2
LDEwIEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAKICAgICBMVmFsdWUgaXNDZWxsV2l0aFR5cGUo
TFZhbHVlIGNlbGwsIEpTVHlwZSBxdWVyaWVkVHlwZSwgU3BlY3VsYXRlZFR5cGUgc3BlY3VsYXRl
ZFR5cGVGb3JRdWVyeSwgU3BlY3VsYXRlZFR5cGUgdHlwZSA9IFNwZWNGdWxsVG9wKQogICAgIHsK
LSAgICAgICAgaWYgKExWYWx1ZSBwcm92ZW4gPSBpc1Byb3ZlblZhbHVlKHR5cGUgJiBTcGVjQ2Vs
bCwgc3BlY3VsYXRlZFR5cGVGb3JRdWVyeSkpCi0gICAgICAgICAgICByZXR1cm4gcHJvdmVuOwor
ICAgICAgICBpZiAoc3BlY3VsYXRlZFR5cGVGb3JRdWVyeSAhPSBTcGVjQ2VsbCkgeworICAgICAg
ICAgICAgaWYgKExWYWx1ZSBwcm92ZW4gPSBpc1Byb3ZlblZhbHVlKHR5cGUgJiBTcGVjQ2VsbCwg
c3BlY3VsYXRlZFR5cGVGb3JRdWVyeSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHByb3ZlbjsK
KyAgICAgICAgfQogICAgICAgICByZXR1cm4gbV9vdXQuZXF1YWwoCiAgICAgICAgICAgICBtX291
dC5sb2FkOFplcm9FeHQzMihjZWxsLCBtX2hlYXBzLkpTQ2VsbF90eXBlSW5mb1R5cGUpLAogICAg
ICAgICAgICAgbV9vdXQuY29uc3RJbnQzMihxdWVyaWVkVHlwZSkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuY3BwCmluZGV4IDM2ZGU1M2EwYmMzYTcyZjU1NThkMTllZGE2NDc2YWYwNDk0NmVjNmMu
LjgyNTQ2MzgxMmZiZTUzNmQwOTRjMTc5YjdlZmIyNjI4NWMxNDAyZjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5jcHAKQEAgLTMxMiw2ICszMTIsOCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBp
bGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9TTE9XX09QKGNyZWF0ZV9yZXN0KQogICAgICAg
ICBERUZJTkVfU0xPV19PUChjcmVhdGVfcHJvbWlzZSkKICAgICAgICAgREVGSU5FX1NMT1dfT1Ao
bmV3X3Byb21pc2UpCisgICAgICAgIERFRklORV9TTE9XX09QKGNyZWF0ZV9nZW5lcmF0b3IpCisg
ICAgICAgIERFRklORV9TTE9XX09QKG5ld19nZW5lcmF0b3IpCiAgICAgICAgIERFRklORV9TTE9X
X09QKHBvdykKIAogICAgICAgICBERUZJTkVfT1Aob3BfYWRkKQpAQCAtNTgwLDYgKzU4Miw3IEBA
IHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAgICAgICAgIERFRklORV9TTE9X
Q0FTRV9TTE9XX09QKGRpdikKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX1NMT1dfT1AoY3JlYXRl
X3RoaXMpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9TTE9XX09QKGNyZWF0ZV9wcm9taXNlKQor
ICAgICAgICBERUZJTkVfU0xPV0NBU0VfU0xPV19PUChjcmVhdGVfZ2VuZXJhdG9yKQogICAgICAg
ICBERUZJTkVfU0xPV0NBU0VfU0xPV19PUCh0b190aGlzKQogICAgICAgICBERUZJTkVfU0xPV0NB
U0VfU0xPV19PUCh0b19wcmltaXRpdmUpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9TTE9XX09Q
KHRvX251bWJlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3Bw
CmluZGV4IDdhZjRlZTMyNmNmMWU4OWU5YTUzZjlhMjc3YmQ1YzQwNTI2MzA4MDguLmVmYTI1NGNi
MmFmMDEyNTdlYWQ2MGNkMjI1ODk3YTYxYjcxMDkxNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtMTM5NCw2ICsxMzk0LDE0IEBAIEpTQ2VsbCog
SklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdJbnRlcm5hbFByb21pc2UoRXhlY1N0YXRlKiBleGVj
LCBTdHJ1Y3R1cmUqIHN0CiAgICAgcmV0dXJuIEpTSW50ZXJuYWxQcm9taXNlOjpjcmVhdGUodm0s
IHN0cnVjdHVyZSk7CiB9CiAKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdHZW5l
cmF0b3IoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK3sKKyAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4
ZWMpOworCisgICAgcmV0dXJuIEpTR2VuZXJhdG9yOjpjcmVhdGUodm0sIHN0cnVjdHVyZSk7Cit9
CisKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdSZWdleHAoRXhlY1N0YXRlKiBl
eGVjLCBKU0NlbGwqIHJlZ2V4cFB0cikKIHsKICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNh
bXBsZXJTY29wZShmYWxzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9u
cy5oCmluZGV4IDFjM2MyNzJjYmJhOGRkMzU2MmQ0ZDE1Y2YwOTUwZTZjOTI0Mjg3NjIuLjFiNzQ5
YjIzMGY4MDJkM2ZjNDJmY2ZhMTYwNDZiYTg5ZjMwYzhjNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCkBAIC00MjEsNiArNDIxLDcgQEAgdm9pZCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblNldEZ1bmN0aW9uTmFtZShFeGVjU3RhdGUqLCBKU0NlbGwqLCBFbmNv
ZGVkSlNWYWx1ZSkKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdPYmplY3QoRXhl
Y1N0YXRlKiwgU3RydWN0dXJlKikgV1RGX0lOVEVSTkFMOwogSlNDZWxsKiBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbk5ld1Byb21pc2UoRXhlY1N0YXRlKiwgU3RydWN0dXJlKikgV1RGX0lOVEVSTkFM
OwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0ludGVybmFsUHJvbWlzZShFeGVj
U3RhdGUqLCBTdHJ1Y3R1cmUqKSBXVEZfSU5URVJOQUw7CitKU0NlbGwqIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uTmV3R2VuZXJhdG9yKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSopIFdURl9JTlRFUk5B
TDsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdSZWdleHAoRXhlY1N0YXRlKiwg
SlNDZWxsKikgV1RGX0lOVEVSTkFMOwogVW51c2VkUHRyIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
SGFuZGxlVHJhcHMoRXhlY1N0YXRlKikgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblRocm93KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCmlu
ZGV4IDQwNzU4ZTdmMzBhY2M0ZDcyODJlYjg1MzVjYjRkMzFiYzhjMGU3NDIuLjM2OWNiMTBiMjI1
YzA5YTE0MmFmZTYyM2JlOTNkNWIwNGFmODBkYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCkBAIC0xMjQzLDcgKzEyNDMsNiBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9nZXRfaW50ZXJuYWxfZmllbGQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKICAgICBpbnQgZHN0ID0gYnl0ZWNvZGUubV9kc3Qub2Zmc2V0KCk7CiAg
ICAgaW50IGJhc2UgPSBieXRlY29kZS5tX2Jhc2Uub2Zmc2V0KCk7CiAgICAgdW5zaWduZWQgaW5k
ZXggPSBieXRlY29kZS5tX2luZGV4OwotICAgIEFTU0VSVChpbmRleCA8IEpTUHJvbWlzZTo6bnVt
YmVyT2ZJbnRlcm5hbEZpZWxkcyk7CiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2Us
IHJlZ1QxKTsKICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDEsIEpTSW50ZXJuYWxGaWVsZE9iamVj
dEltcGw8Pjo6b2Zmc2V0T2ZJbnRlcm5hbEZpZWxkKGluZGV4KSksIHJlZ1QwKTsKQEAgLTEyNTgs
NyArMTI1Nyw2IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9pbnRlcm5hbF9maWVsZChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGludCBiYXNlID0gYnl0ZWNvZGUu
bV9iYXNlLm9mZnNldCgpOwogICAgIGludCB2YWx1ZSA9IGJ5dGVjb2RlLm1fdmFsdWUub2Zmc2V0
KCk7CiAgICAgdW5zaWduZWQgaW5kZXggPSBieXRlY29kZS5tX2luZGV4OwotICAgIEFTU0VSVChp
bmRleCA8IEpTUHJvbWlzZTo6bnVtYmVyT2ZJbnRlcm5hbEZpZWxkcyk7CiAKICAgICBlbWl0R2V0
VmlydHVhbFJlZ2lzdGVyKGJhc2UsIHJlZ1QwKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVy
KHZhbHVlLCByZWdUMSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggZDIwNGI0MDdjMmRlNDhlNWRjYjJjYTEzMWE0YWIx
NGUzZDg5YjFjYy4uMjU3NmVmNDllMTE4MzEyNmNmZjhmMWUzNWVlYWVkYmZlMDQ2ZGVjZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIu
YXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
LmFzbQpAQCAtMTQ5NSw2ICsxNDk1LDcgQEAgc2xvd1BhdGhPcChjcmVhdGVfcmVzdCkKIHNsb3dQ
YXRoT3AoY3JlYXRlX3Njb3BlZF9hcmd1bWVudHMpCiBzbG93UGF0aE9wKGNyZWF0ZV90aGlzKQog
c2xvd1BhdGhPcChjcmVhdGVfcHJvbWlzZSkKK3Nsb3dQYXRoT3AoY3JlYXRlX2dlbmVyYXRvcikK
IHNsb3dQYXRoT3AoZGVmaW5lX2FjY2Vzc29yX3Byb3BlcnR5KQogc2xvd1BhdGhPcChkZWZpbmVf
ZGF0YV9wcm9wZXJ0eSkKIHNsb3dQYXRoT3AoZW51bWVyYXRvcl9nZW5lcmljX3BuYW1lKQpAQCAt
MTUzMCw2ICsxNTMxLDcgQEAgc2xvd1BhdGhPcCh0b19pbmRleF9zdHJpbmcpCiBzbG93UGF0aE9w
KHR5cGVvZikKIHNsb3dQYXRoT3AodW5yZWFjaGFibGUpCiBzbG93UGF0aE9wKG5ld19wcm9taXNl
KQorc2xvd1BhdGhPcChuZXdfZ2VuZXJhdG9yKQogCiBtYWNybyBsbGludFNsb3dQYXRoT3Aob3Bj
b2RlTmFtZSkKICAgICBsbGludE9wKG9wXyVvcGNvZGVOYW1lJSwgdW51c2VkLCBtYWNybyAodW51
c2VkLCB1bnVzZWQsIGRpc3BhdGNoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKaW5kZXggNjU4NjU3OTgyMzM0NDQ5OTcwMmJiYmRjNWQz
NWNiMjc1NDRlM2NlZi4uMTEyM2QxNzlmNjM5MDYyMzE1ZTU0MjQwNGExZTUyNWI0ODdlNmY1ZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhz
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMu
Y3BwCkBAIC0zMDksNiArMzA5LDM2IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uZXdfcHJv
bWlzZSkKICAgICBSRVRVUk4ocmVzdWx0KTsKIH0KIAorU0xPV19QQVRIX0RFQ0woc2xvd19wYXRo
X2NyZWF0ZV9nZW5lcmF0b3IpCit7CisgICAgQkVHSU4oKTsKKyAgICBhdXRvIGJ5dGVjb2RlID0g
cGMtPmFzPE9wQ3JlYXRlR2VuZXJhdG9yPigpOworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CisgICAgSlNPYmplY3QqIGNvbnN0
cnVjdG9yQXNPYmplY3QgPSBhc09iamVjdChHRVQoYnl0ZWNvZGUubV9jYWxsZWUpLmpzVmFsdWUo
KSk7CisKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rpb246OmNyZWF0
ZVN1YmNsYXNzU3RydWN0dXJlKGV4ZWMsIG51bGxwdHIsIGNvbnN0cnVjdG9yQXNPYmplY3QsIGds
b2JhbE9iamVjdC0+Z2VuZXJhdG9yU3RydWN0dXJlKCkpOworICAgIENIRUNLX0VYQ0VQVElPTigp
OworICAgIEpTR2VuZXJhdG9yKiByZXN1bHQgPSBKU0dlbmVyYXRvcjo6Y3JlYXRlKHZtLCBzdHJ1
Y3R1cmUpOworCisgICAgSlNGdW5jdGlvbiogY29uc3RydWN0b3IgPSBqc0R5bmFtaWNDYXN0PEpT
RnVuY3Rpb24qPih2bSwgY29uc3RydWN0b3JBc09iamVjdCk7CisgICAgaWYgKGNvbnN0cnVjdG9y
ICYmIGNvbnN0cnVjdG9yLT5jYW5Vc2VBbGxvY2F0aW9uUHJvZmlsZSgpKSB7CisgICAgICAgIFdy
aXRlQmFycmllcjxKU0NlbGw+JiBjYWNoZWRDYWxsZWUgPSBieXRlY29kZS5tZXRhZGF0YShleGVj
KS5tX2NhY2hlZENhbGxlZTsKKyAgICAgICAgaWYgKCFjYWNoZWRDYWxsZWUpCisgICAgICAgICAg
ICBjYWNoZWRDYWxsZWUuc2V0KHZtLCBleGVjLT5jb2RlQmxvY2soKSwgY29uc3RydWN0b3IpOwor
ICAgICAgICBlbHNlIGlmIChjYWNoZWRDYWxsZWUudW52YWxpZGF0ZWRHZXQoKSAhPSBKU0NlbGw6
OnNlZW5NdWx0aXBsZUNhbGxlZU9iamVjdHMoKSAmJiBjYWNoZWRDYWxsZWUuZ2V0KCkgIT0gY29u
c3RydWN0b3IpCisgICAgICAgICAgICBjYWNoZWRDYWxsZWUuc2V0V2l0aG91dFdyaXRlQmFycmll
cihKU0NlbGw6OnNlZW5NdWx0aXBsZUNhbGxlZU9iamVjdHMoKSk7CisgICAgfQorICAgIFJFVFVS
TihyZXN1bHQpOworfQorCitTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmV3X2dlbmVyYXRvcikK
K3sKKyAgICBCRUdJTigpOworICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BOZXdHZW5lcmF0
b3I+KCk7CisgICAgSlNHZW5lcmF0b3IqIHJlc3VsdCA9IEpTR2VuZXJhdG9yOjpjcmVhdGUodm0s
IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+Z2VuZXJhdG9yU3RydWN0dXJlKCkpOworICAg
IFJFVFVSTihyZXN1bHQpOworfQorCiBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfdG9fdGhpcykK
IHsKICAgICBCRUdJTigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uU2xvd1BhdGhzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25TbG93UGF0aHMuaAppbmRleCAyZmU3NWU2YzM2NTIzZWZjOWJhODJhNDYxNjU1MGRmZjc2MjNh
MTg4Li43ZjkwYjE0MGI4OTc5MGZlMTRjNDMwN2YxYTIwZjc0ZmQ5ZDNmYmIxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaApAQCAtMzg0LDYg
KzM4NCw3IEBAIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcmVzb2x2ZV9zY29wZSk7
CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2lzX3Zhcl9zY29wZSk7CiBTTE9XX1BB
VEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3Jlc29sdmVfc2NvcGVfZm9yX2hvaXN0aW5nX2Z1bmNf
ZGVjbF9pbl9ldmFsKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfY3JlYXRlX3By
b21pc2UpOworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jcmVhdGVfZ2VuZXJhdG9y
KTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfY3JlYXRlX3Jlc3QpOwogU0xPV19Q
QVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9nZXRfYnlfaWRfd2l0aF90aGlzKTsKIFNMT1dfUEFU
SF9ISURERU5fREVDTChzbG93X3BhdGhfZ2V0X2J5X3ZhbF93aXRoX3RoaXMpOwpAQCAtMzkzLDYg
KzM5NCw3IEBAIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZGVmaW5lX2RhdGFfcHJv
cGVydHkpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9kZWZpbmVfYWNjZXNzb3Jf
cHJvcGVydHkpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF90aHJvd19zdGF0aWNf
ZXJyb3IpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfcHJvbWlzZSk7CitT
TE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25ld19nZW5lcmF0b3IpOwogU0xPV19QQVRI
X0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfYXJyYXlfd2l0aF9zcHJlYWQpOwogU0xPV19QQVRI
X0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfYXJyYXlfYnVmZmVyKTsKIFNMT1dfUEFUSF9ISURE
RU5fREVDTChzbG93X3BhdGhfc3ByZWFkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHAKaW5kZXggZGQ0YTIyMDgwMGYxODM0MzE3MDEy
OWY5MzFiZTMxMmZmMzdmMTNkMi4uMjM4ZTU0MzMzZWFkY2NiZWY4NWIzZWI2MDQwM2Q1N2IwYmYz
ODliMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxG
dW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxG
dW5jdGlvbi5jcHAKQEAgLTExOSw3ICsxMTksNiBAQCBTdHJ1Y3R1cmUqIEludGVybmFsRnVuY3Rp
b246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlU2xvdyhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdQog
ewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwotICAgIEFTU0VSVCghbmV3VGFyZ2V0IHx8IG5ld1RhcmdldC5pc0NvbnN0
cnVjdG9yKHZtKSk7CiAKICAgICBBU1NFUlQoYmFzZUNsYXNzLT5oYXNNb25vUHJvdG8oKSk7CiAK
QEAgLTEzMyw3ICsxMzIsNyBAQCBTdHJ1Y3R1cmUqIEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1
YmNsYXNzU3RydWN0dXJlU2xvdyhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdQogICAgICAgICAgICAg
cmV0dXJuIHN0cnVjdHVyZTsKIAogICAgICAgICAvLyBOb3RlLCBSZWZsZWN0LmNvbnN0cnVjdCBt
aWdodCBjYXVzZSB0aGUgcHJvZmlsZSB0byBjaHVybiBidXQgd2UgZG9uJ3QgY2FyZS4KLSAgICAg
ICAgSlNWYWx1ZSBwcm90b3R5cGVWYWx1ZSA9IG5ld1RhcmdldC5nZXQoZXhlYywgdm0ucHJvcGVy
dHlOYW1lcy0+cHJvdG90eXBlKTsKKyAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGVWYWx1ZSA9IHRh
cmdldEZ1bmN0aW9uLT5nZXQoZXhlYywgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlKTsKICAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CiAgICAgICAgIGlmIChK
U09iamVjdCogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxKU09iamVjdCo+KHZtLCBwcm90b3R5
cGVWYWx1ZSkpCiAgICAgICAgICAgICByZXR1cm4gdGFyZ2V0RnVuY3Rpb24tPnJhcmVEYXRhKHZt
KS0+Y3JlYXRlSW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25TdHJ1Y3R1cmVGcm9tQmFzZSh2bSwg
Z2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIGJhc2VDbGFzcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmgKaW5kZXggOTMzNjg4OWZlZTgxNTAx
OGM5Y2FjYjQzNWM2NGE3OGFjMTBhZTczYi4uMWZhNDg1OGM3YzNlNmUyMWI1NGMwMzg3ZWI2YzQ4
NDNhODAxMzFmMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
ZXJuYWxGdW5jdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVy
bmFsRnVuY3Rpb24uaApAQCAtMTAyLDggKzEwMiw2IEBAIEFMV0FZU19JTkxJTkUgU3RydWN0dXJl
KiBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShFeGVjU3RhdGUqIGV4
CiB7CiAgICAgLy8gV2UgYWxsb3cgbmV3VGFyZ2V0ID09IEpTVmFsdWUoKSBiZWNhdXNlIHRoZSBB
UEkgbmVlZHMgdG8gYmUgYWJsZSB0byBjcmVhdGUgY2xhc3NlcyB3aXRob3V0IGhhdmluZyBhIHJl
YWwgSlMgZnJhbWUuCiAgICAgLy8gU2luY2Ugd2UgZG9uJ3QgYWxsb3cgc3ViY2xhc3NpbmcgaW4g
dGhlIEFQSSB3ZSBqdXN0IHRyZWF0IG5ld1RhcmdldCA9PSBKU1ZhbHVlKCkgYXMgbmV3VGFyZ2V0
ID09IGV4ZWMtPmpzQ2FsbGVlKCkKLSAgICBBU1NFUlQoIW5ld1RhcmdldCB8fCBuZXdUYXJnZXQu
aXNDb25zdHJ1Y3RvcihleGVjLT52bSgpKSk7Ci0KICAgICBpZiAobmV3VGFyZ2V0ICYmIG5ld1Rh
cmdldCAhPSBiYXNlQ2FsbGVlKQogICAgICAgICByZXR1cm4gY3JlYXRlU3ViY2xhc3NTdHJ1Y3R1
cmVTbG93KGV4ZWMsIG5ld1RhcmdldCwgYmFzZUNsYXNzKTsKICAgICByZXR1cm4gYmFzZUNsYXNz
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3Iu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3IuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmM0MDU0MmM5Njk1NWRmMDM0ZWQ2OGI1MmYyNTA2MTcxZTE0YWEyZGIKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRvci5jcHAK
QEAgLTAsMCArMSw3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJKU0dlbmVyYXRvci5oIgorCisjaW5jbHVkZSAiQnVpbHRpbk5hbWVzLmgiCisjaW5jbHVk
ZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlv
bi5oIgorI2luY2x1ZGUgIkpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGxJbmxpbmVzLmgiCisKK25h
bWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gSlNHZW5lcmF0b3I6OnNfaW5mbyA9IHsg
IkdlbmVyYXRvciIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRI
T0RfVEFCTEUoSlNHZW5lcmF0b3IpIH07CisKK0pTR2VuZXJhdG9yKiBKU0dlbmVyYXRvcjo6Y3Jl
YXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAgSlNHZW5lcmF0b3IqIGdl
bmVyYXRvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTR2VuZXJhdG9yPih2bS5oZWFw
KSkgSlNHZW5lcmF0b3Iodm0sIHN0cnVjdHVyZSk7CisgICAgZ2VuZXJhdG9yLT5maW5pc2hDcmVh
dGlvbih2bSk7CisgICAgcmV0dXJuIGdlbmVyYXRvcjsKK30KKworU3RydWN0dXJlKiBKU0dlbmVy
YXRvcjo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oSlNHZW5lcmF0b3JUeXBlLCBTdHJ1
Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK0pTR2VuZXJhdG9yOjpKU0dlbmVyYXRvcihWTSYg
dm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQorewor
fQorCit2b2lkIEpTR2VuZXJhdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7CisgICAgQmFz
ZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIGludGVybmFsRmllbGQoc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEZpZWxkOjpTdGF0ZSkpLnNldCh2bSwgdGhpcywganNOdW1iZXIoc3RhdGljX2Nhc3Q8
aW50MzJfdD4oR2VuZXJhdG9yU3RhdGU6OkluaXQpKSk7CisgICAgaW50ZXJuYWxGaWVsZChzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oRmllbGQ6Ok5leHQpKS5zZXQodm0sIHRoaXMsIGpzVW5kZWZpbmVk
KCkpOworICAgIGludGVybmFsRmllbGQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEZpZWxkOjpUaGlz
KSkuc2V0KHZtLCB0aGlzLCBqc1VuZGVmaW5lZCgpKTsKKyAgICBpbnRlcm5hbEZpZWxkKHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihGaWVsZDo6RnJhbWUpKS5zZXQodm0sIHRoaXMsIGpzVW5kZWZpbmVk
KCkpOworfQorCit2b2lkIEpTR2VuZXJhdG9yOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwg
U2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxK
U0dlbmVyYXRvcio+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09i
amVjdCwgaW5mbygpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0
b3IpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dlbmVyYXRvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY1YTRlY2I4ZTIxOWU1ZjYzNjBmOWY2OTc3
NGI3ZDY4ODIxODkzMGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dlbmVyYXRvci5oCkBAIC0wLDAgKzEsODAgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2luY2x1ZGUgIkpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGwuaCIKKworbmFt
ZXNwYWNlIEpTQyB7CisKK2NsYXNzIEpTRnVuY3Rpb247CisKK2NsYXNzIEpTR2VuZXJhdG9yIDog
cHVibGljIEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGw8ND4geworcHVibGljOgorICAgIHVzaW5n
IEJhc2UgPSBKU0ludGVybmFsRmllbGRPYmplY3RJbXBsPDQ+OworCisgICAgZW51bSBjbGFzcyBH
ZW5lcmF0b3JSZXN1bWVNb2RlIDogaW50MzJfdCB7CisgICAgICAgIE5vcm1hbE1vZGUgPSAwLAor
ICAgICAgICBSZXR1cm5Nb2RlID0gMSwKKyAgICAgICAgVGhyb3dNb2RlID0gMgorICAgIH07CisK
KyAgICBlbnVtIGNsYXNzIEdlbmVyYXRvclN0YXRlIDogaW50MzJfdCB7CisgICAgICAgIENvbXBs
ZXRlZCA9IC0xLAorICAgICAgICBFeGVjdXRpbmcgPSAtMiwKKyAgICAgICAgSW5pdCA9IDAsCisg
ICAgfTsKKworICAgIC8vIFt0aGlzXSwgQGdlbmVyYXRvciwgQGdlbmVyYXRvclN0YXRlLCBAZ2Vu
ZXJhdG9yVmFsdWUsIEBnZW5lcmF0b3JSZXN1bWVNb2RlLCBAZ2VuZXJhdG9yRnJhbWUuCisgICAg
ZW51bSBjbGFzcyBHZW5lcmF0b3JBcmd1bWVudCA6IGludDMyX3QgeworICAgICAgICBUaGlzVmFs
dWUgPSAwLAorICAgICAgICBHZW5lcmF0b3IgPSAxLAorICAgICAgICBTdGF0ZSA9IDIsCisgICAg
ICAgIFZhbHVlID0gMywKKyAgICAgICAgUmVzdW1lTW9kZSA9IDQsCisgICAgICAgIEZyYW1lID0g
NSwKKyAgICB9OworCisgICAgZW51bSBjbGFzcyBGaWVsZCA6IHVpbnQzMl90IHsKKyAgICAgICAg
U3RhdGUgPSAwLAorICAgICAgICBOZXh0LAorICAgICAgICBUaGlzLAorICAgICAgICBGcmFtZSwK
KyAgICB9OworICAgIHN0YXRpY19hc3NlcnQobnVtYmVyT2ZJbnRlcm5hbEZpZWxkcyA9PSA0KTsK
KworICAgIHN0YXRpYyBKU0dlbmVyYXRvciogY3JlYXRlKFZNJiwgU3RydWN0dXJlKik7CisgICAg
c3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBK
U1ZhbHVlKTsKKworICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CisKKyAgICBzdGF0aWMgdm9pZCB2
aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CisKK3Byb3RlY3RlZDoKKyAgICBK
U0dlbmVyYXRvcihWTSYsIFN0cnVjdHVyZSopOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0m
KTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5oCmluZGV4IGE0NTRiOTU4ODA2MWQ0OGI1
N2Y1NmIzMGVmZTA2M2M4NGYyNmIyOTMuLmVmZDI4OTBhMzFmYWY4MGRmYWM1MGI3NDQwYjlkMmYz
NDZlY2EyY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2Vu
ZXJhdG9yRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dl
bmVyYXRvckZ1bmN0aW9uLmgKQEAgLTQxLDI4ICs0MSw3IEBAIGNsYXNzIEpTR2VuZXJhdG9yRnVu
Y3Rpb24gZmluYWwgOiBwdWJsaWMgSlNGdW5jdGlvbiB7CiAjZW5kaWYKICAgICBmcmllbmQgY2xh
c3MgVk07CiBwdWJsaWM6Ci0gICAgdHlwZWRlZiBKU0Z1bmN0aW9uIEJhc2U7Ci0KLSAgICBlbnVt
IGNsYXNzIEdlbmVyYXRvclJlc3VtZU1vZGUgOiBpbnQzMl90IHsKLSAgICAgICAgTm9ybWFsTW9k
ZSA9IDAsCi0gICAgICAgIFJldHVybk1vZGUgPSAxLAotICAgICAgICBUaHJvd01vZGUgPSAyCi0g
ICAgfTsKLQotICAgIGVudW0gY2xhc3MgR2VuZXJhdG9yU3RhdGUgOiBpbnQzMl90IHsKLSAgICAg
ICAgQ29tcGxldGVkID0gLTEsCi0gICAgICAgIEV4ZWN1dGluZyA9IC0yLAotICAgIH07Ci0KLSAg
ICAvLyBbdGhpc10sIEBnZW5lcmF0b3IsIEBnZW5lcmF0b3JTdGF0ZSwgQGdlbmVyYXRvclZhbHVl
LCBAZ2VuZXJhdG9yUmVzdW1lTW9kZSwgQGdlbmVyYXRvckZyYW1lLgotICAgIGVudW0gY2xhc3Mg
R2VuZXJhdG9yQXJndW1lbnQgOiBpbnQzMl90IHsKLSAgICAgICAgVGhpc1ZhbHVlID0gMCwKLSAg
ICAgICAgR2VuZXJhdG9yID0gMSwKLSAgICAgICAgU3RhdGUgPSAyLAotICAgICAgICBWYWx1ZSA9
IDMsCi0gICAgICAgIFJlc3VtZU1vZGUgPSA0LAotICAgICAgICBGcmFtZSA9IDUsCi0gICAgfTsK
KyAgICB1c2luZyBCYXNlID0gSlNGdW5jdGlvbjsKIAogICAgIGNvbnN0IHN0YXRpYyB1bnNpZ25l
ZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggYzZhYjg2Yjgw
MTdmOTA2Mjg1YWJhMjI3Y2RjZDE1OGZmMTc3NjY5MS4uNjNiODUyNDU4NTg0YWJmNTRiNzI5YWE1
MTBjNmVlYzUzMTJjYjAzZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtODE5LDYgKzgxOSw3IEBAIGNhcGl0YWxOYW1lICMjIENv
bnN0cnVjdG9yKiBsb3dlck5hbWUgIyMgQ29uc3RydWN0b3IgPSBmZWF0dXJlRmxhZyA/IGNhcGl0
YWxOYW1lCiAKICAgICBtX2dlbmVyYXRvclByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5z
aXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBtX2dlbmVyYXRvckZ1bmN0
aW9uUHJvdG90eXBlLmdldCgpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOwogICAgIG1fZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUt
PnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5
cGUsIG1fZ2VuZXJhdG9yUHJvdG90eXBlLmdldCgpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOworICAgIG1fZ2VuZXJhdG9yU3RydWN0
dXJlLnNldCh2bSwgdGhpcywgSlNHZW5lcmF0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywg
bV9nZW5lcmF0b3JQcm90b3R5cGUuZ2V0KCkpKTsKIAogICAgIG1fYXN5bmNGdW5jdGlvblByb3Rv
dHlwZS5zZXQodm0sIHRoaXMsIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGU6OmNyZWF0ZSh2bSwgQXN5
bmNGdW5jdGlvblByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9u
UHJvdG90eXBlLmdldCgpKSkpOwogICAgIEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3RvciogYXN5bmNG
dW5jdGlvbkNvbnN0cnVjdG9yID0gQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGUodm0s
IEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBmdW5j
dGlvbkNvbnN0cnVjdG9yKSwgbV9hc3luY0Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKTsKQEAgLTE3
NjcsNiArMTc2OCw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxs
KiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2Jq
ZWN0LT5tX2dlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCh0
aGlzT2JqZWN0LT5tX2FzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5k
KHRoaXNPYmplY3QtPm1fYXN5bmNHZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZSk7CisgICAgdmlz
aXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9nZW5lcmF0b3JTdHJ1Y3R1cmUpOwogICAgIHRoaXNP
YmplY3QtPm1faXRlcmF0b3JSZXN1bHRPYmplY3RTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CiAg
ICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1
cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fcmVnRXhwTWF0Y2hlc0FycmF5
V2l0aEdyb3Vwc1N0cnVjdHVyZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuaAppbmRleCAxMDVkNTZhOGM4YzNkMGExNDFjNDQwYWY3NGIwODllNzdi
YWE0Y2I5Li4yYWQ5MWE1M2Y4ZWFlOGM0NDY1YzEzNzNhODg0MzNlOTZiOTgzNzIxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTM3NCw2
ICszNzQsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlh
YmxlT2JqZWN0IHsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2FzeW5jRnVuY3Rpb25T
dHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9hc3luY0dlbmVyYXRvckZ1
bmN0aW9uU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fZ2VuZXJhdG9y
RnVuY3Rpb25TdHJ1Y3R1cmU7CisgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9nZW5lcmF0
b3JTdHJ1Y3R1cmU7CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+
IG1faXRlcmF0b3JSZXN1bHRPYmplY3RTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVj
dHVyZT4gbV9yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0
cnVjdHVyZT4gbV9yZWdFeHBNYXRjaGVzQXJyYXlXaXRoR3JvdXBzU3RydWN0dXJlOwpAQCAtNzUy
LDYgKzc1Myw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFy
aWFibGVPYmplY3QgewogICAgIFN0cnVjdHVyZSogbnVtYmVyT2JqZWN0U3RydWN0dXJlKCkgY29u
c3QgeyByZXR1cm4gbV9udW1iZXJPYmplY3RTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CiAgICAgU3Ry
dWN0dXJlKiBtYXBTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX21hcFN0cnVjdHVyZS5nZXQo
KTsgfQogICAgIFN0cnVjdHVyZSogcmVnRXhwU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9y
ZWdFeHBTdHJ1Y3R1cmUuZ2V0KCk7IH0KKyAgICBTdHJ1Y3R1cmUqIGdlbmVyYXRvclN0cnVjdHVy
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZ2VuZXJhdG9yU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3Ry
dWN0dXJlKiBnZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fZ2Vu
ZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIGFzeW5jRnVu
Y3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2FzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUu
Z2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIGFzeW5jR2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUo
KSBjb25zdCB7IHJldHVybiBtX2FzeW5jR2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuY3BwCmluZGV4IDg0OWIzNzkx
ODhlZmNlNTcwOTIzZjVhMWE1YTRmNzFiYzlkOTk0NzYuLmRhYzVlNjlkYTIwNDUxYjkwZmQ0OGIw
N2E3MGMxMTIyM2Y1NzA3NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTVHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBl
LmNwcApAQCAtOTYsNiArOTYsNyBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91
dCwgSlNDOjpKU1R5cGUgdHlwZSkKICAgICBDQVNFKFdpdGhTY29wZVR5cGUpCiAgICAgQ0FTRShS
ZWdFeHBPYmplY3RUeXBlKQogICAgIENBU0UoUHJveHlPYmplY3RUeXBlKQorICAgIENBU0UoSlNH
ZW5lcmF0b3JUeXBlKQogICAgIENBU0UoSlNQcm9taXNlVHlwZSkKICAgICBDQVNFKEpTTWFwVHlw
ZSkKICAgICBDQVNFKEpTU2V0VHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTVHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBl
LmgKaW5kZXggOGQzNWFjNzc5ODM3MzliMWEzZmU1ZDUwYTZmOTFiOTAxMjlmZjc3ZC4uMDFlNzAy
MjczNDc2NGIxOGQ5ZTMxYTkxZWU4Y2Q2MGE5OTU5MjVlYSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNUeXBlLmgKQEAgLTEwOCw2ICsxMDgsNyBAQCBlbnVtIEpTVHlwZSA6IHVpbnQ4
X3QgewogCiAgICAgUmVnRXhwT2JqZWN0VHlwZSwKICAgICBQcm94eU9iamVjdFR5cGUsCisgICAg
SlNHZW5lcmF0b3JUeXBlLAogICAgIEpTUHJvbWlzZVR5cGUsCiAgICAgSlNNYXBUeXBlLAogICAg
IEpTU2V0VHlwZSwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378353</attachid>
            <date>2019-09-09 00:43:31 -0700</date>
            <delta_ts>2019-09-09 00:45:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201159-20190909004330.patch</filename>
            <type>text/plain</type>
            <size>131858</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5NjA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
MWFiMGFiYjE5NmM5NGE1OTljMjMzNDA2OWE1MzlhMWM4ZjIyZDk5Li45MDA2M2RlMGM5NTMwYjli
Y2FlNzIwODUxMzQxNDIzYWNiNzQ0YWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNDUgQEAKKzIwMTktMDktMDkgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBHZW5lcmF0b3Igc2hvdWxkIGhhdmUgaW50ZXJuYWwgZmllbGRz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDExNTkK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEphdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogU291cmNlcy50
eHQ6CisgICAgICAgICogYnVpbHRpbnMvQXN5bmNGdW5jdGlvblByb3RvdHlwZS5qczoKKyAgICAg
ICAgKGdsb2JhbFByaXZhdGUuYXN5bmNGdW5jdGlvblJlc3VtZSk6CisgICAgICAgICogYnVpbHRp
bnMvR2VuZXJhdG9yUHJvdG90eXBlLmpzOgorICAgICAgICAoZ2xvYmFsUHJpdmF0ZS5nZW5lcmF0
b3JSZXN1bWUpOgorICAgICAgICAobmV4dCk6CisgICAgICAgIChyZXR1cm4pOgorICAgICAgICAo
dGhyb3cpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNw
cDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb246OnJ1bik6CisgICAg
ICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5jcHA6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6OkJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkp
OgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuaDoKKyAgICAg
ICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3QucmI6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNv
ZGVVc2VEZWYuaDoKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCk6
CisgICAgICAgIChKU0M6OmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAq
IGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluaXNo
Q3JlYXRpb24pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmFsaXplTExJbnRJbmxpbmVD
YWNoZXMpOgorICAgICAgICAqIGJ5dGVjb2RlL0ludGVybmFsRnVuY3Rpb25BbGxvY2F0aW9uUHJv
ZmlsZS5oOgorICAgICAgICAoSlNDOjpJbnRlcm5hbEZ1bmN0aW9uQWxsb2NhdGlvblByb2ZpbGU6
Om9mZnNldE9mUHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6SW50ZXJuYWxGdW5jdGlvbkFsbG9j
YXRpb25Qcm9maWxlOjpwcm90b3R5cGUpOgorICAgICAgICAoSlNDOjpJbnRlcm5hbEZ1bmN0aW9u
QWxsb2NhdGlvblByb2ZpbGU6OmNsZWFyKToKKyAgICAgICAgKEpTQzo6SW50ZXJuYWxGdW5jdGlv
bkFsbG9jYXRpb25Qcm9maWxlOjp2aXNpdEFnZ3JlZ2F0ZSk6CisgICAgICAgIChKU0M6OkludGVy
bmFsRnVuY3Rpb25BbGxvY2F0aW9uUHJvZmlsZTo6Y3JlYXRlQWxsb2NhdGlvblN0cnVjdHVyZUZy
b21CYXNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9JbnRlcm5hbEZ1bmN0aW9uQWxs
b2NhdGlvblByb2ZpbGVJbmxpbmVzLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpJbnRlcm5hbEZ1
bmN0aW9uQWxsb2NhdGlvblByb2ZpbGU6OmluaXRpYWxpemVBbGxvY2F0aW9uU3RydWN0dXJlRnJv
bUJhc2UpOgorICAgICAgICAqIGJ5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcDoKKyAgICAgICAg
KEpTQzo6c3BlY3VsYXRpb25Gcm9tSlNUeXBlKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Qnl0
ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1
dEdlbmVyYXRvckZpZWxkcyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
Q3JlYXRlR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRO
ZXdHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFlpZWxk
KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWxlZ2F0ZVlpZWxkKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZW5lcmF0b3JTdGF0ZUNoYW5n
ZSk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXNHZW5lcmF0b3IpOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdG9yU3RhdGVSZWdpc3Rlcik6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0b3JWYWx1ZVJlZ2lzdGVyKToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3Rlcik6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0b3JGcmFtZVJlZ2lzdGVyKToK
KyAgICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6
Z2VuZXJhdG9ySW50ZXJuYWxGaWVsZEluZGV4KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVJbnRy
aW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19nZXRHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19wdXRHZW5l
cmF0b3JJbnRlcm5hbEZpZWxkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVJbnRyaW5zaWNOb2Rl
OjplbWl0X2ludHJpbnNpY19pc0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uTm9k
ZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklu
bGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0
U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sp
OgorICAgICAgICAqIGRmZy9ERkdDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OmNhcGFiaWxpdHlMZXZlbCk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAgICAg
ICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcnNFeGl0
U3RhdGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJzRXhpdFN0YXRlKToKKyAgICAg
ICAgKiBkZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OkNvbnN0YW50Rm9sZGluZ1BoYXNlOjpmb2xkQ29uc3RhbnRzKToKKyAgICAgICAgKiBkZmcvREZH
RG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAgICAqIGRmZy9E
RkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5v
ZGUpOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwSXNDZWxsV2l0aFR5cGUp
OgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6Y29u
dmVydFRvTmV3R2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNTdHJ1Y3R1
cmUpOgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdPcGVy
YXRpb25zLmNwcDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGRm
Zy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1Nh
ZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAg
ICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjb21waWxlTmV3RnVuY3Rpb25Db21tb24pOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3JlYXRlR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0dlbmVyYXRvcik6CisgICAgICAgICogZGZn
L0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJf
NjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAg
ICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTdG9yZUJhcnJpZXJJ
bnNlcnRpb25QaGFzZS5jcHA6CisgICAgICAgICogZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRv
cnkuaDoKKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6
RlRMOjpjYW5Db21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAg
ICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5vZGUpOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTmV3RnVuY3Rpb24pOgorICAg
ICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTmV3R2VuZXJhdG9yKToK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNyZWF0ZUdlbmVy
YXRvcik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmlzQ2VsbFdpdGhU
eXBlKToKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRl
Q29tcGlsZU1haW5QYXNzKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVNsb3dD
YXNlcyk6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGppdC9K
SVRPcGVyYXRpb25zLmg6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9pbnRlcm5hbF9maWVsZCk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdF9vcF9wdXRfaW50ZXJuYWxfZmllbGQpOgorICAgICAgICAqIGxsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhz
LmNwcDoKKyAgICAgICAgKEpTQzo6U0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIHJ1bnRpbWUv
Q29tbW9uU2xvd1BhdGhzLmg6CisgICAgICAgICogcnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmg6
CisgICAgICAgICogcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6
SW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmVTbG93KToKKyAgICAgICAg
KiBydW50aW1lL0ludGVybmFsRnVuY3Rpb24uaDoKKyAgICAgICAgKEpTQzo6SW50ZXJuYWxGdW5j
dGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNCb3Vu
ZEZ1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0Qm91bmRGdW5jdGlvblN0cnVjdHVyZSk6
CisgICAgICAgICogcnVudGltZS9KU0dlbmVyYXRvci5jcHA6IEFkZGVkLgorICAgICAgICAoSlND
OjpKU0dlbmVyYXRvcjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmF0b3I6OmNyZWF0
ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkpTR2VuZXJhdG9yOjpKU0dlbmVyYXRvcik6Cisg
ICAgICAgIChKU0M6OkpTR2VuZXJhdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6
OkpTR2VuZXJhdG9yOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJh
dG9yLmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJh
dG9yRnVuY3Rpb24uaC4KKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uaDoK
KyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNH
bG9iYWxPYmplY3Q6OmluaXQpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6dmlzaXRD
aGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAo
SlNDOjpKU0dsb2JhbE9iamVjdDo6Z2VuZXJhdG9yU3RydWN0dXJlIGNvbnN0KToKKyAgICAgICAg
KiBydW50aW1lL0pTVHlwZS5jcHA6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNUeXBlLmg6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmVDYWNo
ZS5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZUNhY2hlOjplbXB0eVN0cnVjdHVyZUZvclBy
b3RvdHlwZUZyb21CYXNlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZUNh
Y2hlLmg6CisKIDIwMTktMDktMDYgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAg
ICAgICAgIEhhcmRlbiBwcm90ZWN0aW9uIG9mIHRoZSBHaWdhY2FnZSBDb25maWcgcGFyYW1ldGVy
cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMGQ4OGI1NDRjYWMxZjc4ZjhlOGU2
OTc2ZWYwMjBiYzNhZWRmODdkNi4uZTY2NDg5Njc0MTc3MTBlOTJlYjUyNjJkMWNjYjMyNzc3Yzk3
MTVkYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTExMyw3ICsxMTMsNyBAQAog
CQl9OwogCQlFMUFDMkUyNzIwRjdCOTRDMDBCMDg5N0QgLyogVW5sb2NrIEtleWNoYWluICovID0g
ewogCQkJaXNhID0gUEJYQWdncmVnYXRlVGFyZ2V0OwotCQkJYnVpbGRDb25maWd1cmF0aW9uTGlz
dCA9IDE0Q0ZCMTA1MjMwMzVFRjMwMEYwMDQ4QyAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3Qg
Ki87CisJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gMTRDRkIxMDUyMzAzNUVGMzAwRjAwNDhD
IC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYQWdncmVnYXRlVGFyZ2V0ICJVbmxv
Y2sgS2V5Y2hhaW4iICovOwogCQkJYnVpbGRQaGFzZXMgPSAoCiAJCQkJRTFBQzJFMkMyMEY3Qjk1
ODAwQjA4OTdEIC8qIFVubG9jayBLZXljaGFpbiAqLywKIAkJCSk7CkBAIC0xODA0LDYgKzE4MDQs
OCBAQAogCQlFMzQwMEVDMTIyQTFDQzdCMDA5REVENTQgLyogRnVuY3Rpb25FeGVjdXRhYmxlSW5s
aW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM0
MDBFQzAyMkExQ0M3ODAwOURFRDU0IC8qIEZ1bmN0aW9uRXhlY3V0YWJsZUlubGluZXMuaCAqLzsg
fTsKIAkJRTM0RTY1NzUyMDY2OEVBQTAwRkI4MUFDIC8qIFBhcnNlSGFzaC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM0RTY1NzMyMDY2OEU4RDAwRkI4
MUFDIC8qIFBhcnNlSGFzaC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUUzNEVEQkY3MURCNUZGQzkwMERDODdBNSAvKiBGcmFtZVRyYWNlcnMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNEVEQkY2MURC
NUZGQzEwMERDODdBNSAvKiBGcmFtZVRyYWNlcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMzRGOTMwRTIzMjJEODgyMDAyQjhEQjQgLyogSlNH
ZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzNEY5MzBDMjMyMkQ4ODEwMDJCOERCNCAvKiBKU0dlbmVyYXRvci5oICovOyB9OworCQlFMzRG
RTJGMDIzMjYyODM3MDBCRDg0NTcgLyogSW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25Qcm9maWxl
SW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTM0RkUyRUYyMzI2MjgzMzAwQkQ4NDU3IC8qIEludGVybmFsRnVuY3Rpb25BbGxvY2F0aW9uUHJv
ZmlsZUlubGluZXMuaCAqLzsgfTsKIAkJRTM1MDcwOEExREM0OUJCRjAwODlCQ0Q2IC8qIERPTUpJ
VFNpZ25hdHVyZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTM1MDcwODkxREM0OUJCNjAwODlCQ0Q2IC8qIERPTUpJVFNpZ25hdHVyZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzNTQ2MjJCMUI2MDY1
RDEwMDU0NTM4NiAvKiBDb25zdHJ1Y3RBYmlsaXR5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzU0NjIyQTFCNjA2NUQxMDA1NDUzODYgLyogQ29uc3Ry
dWN0QWJpbGl0eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUUzNTU1QjhBMURBRTAzQTUwMEYzNjkyMSAvKiBET01KSVRDYWxsRE9NR2V0dGVyU25p
cHBldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1
NTVCODkxREFFMDNBMjAwRjM2OTIxIC8qIERPTUpJVENhbGxET01HZXR0ZXJTbmlwcGV0LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTQ4OTksNiAr
NDkwMSw5IEBACiAJCUUzNEU2NTczMjA2NjhFOEQwMEZCODFBQyAvKiBQYXJzZUhhc2guaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFyc2VIYXNoLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUUzNEU2NTc0MjA2NjhFOEUwMEZCODFBQyAvKiBQYXJzZUhhc2guY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGFyc2VIYXNoLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM0RURCRjYxREI1RkZDMTAwREM4N0E1IC8qIEZy
YW1lVHJhY2Vycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGcmFtZVRyYWNl
cnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM0RjkzMEIyMzIyRDg4MTAwMkI4
REI0IC8qIEpTR2VuZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTR2VuZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM0Rjkz
MEMyMzIyRDg4MTAwMkI4REI0IC8qIEpTR2VuZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEpTR2VuZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUUzNEZFMkVGMjMyNjI4MzMwMEJEODQ1NyAvKiBJbnRlcm5hbEZ1bmN0aW9uQWxsb2NhdGlvblBy
b2ZpbGVJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGVybmFsRnVuY3Rpb25BbGxvY2F0aW9u
UHJvZmlsZUlubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM1MDcwODkx
REM0OUJCNjAwODlCQ0Q2IC8qIERPTUpJVFNpZ25hdHVyZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBET01KSVRTaWduYXR1cmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRTM1NDYyMkExQjYwNjVEMTAwNTQ1Mzg2IC8qIENvbnN0cnVjdEFiaWxpdHkuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29uc3RydWN0QWJpbGl0eS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlFMzU1NUI4OTFEQUUwM0EyMDBGMzY5MjEgLyogRE9NSklU
Q2FsbERPTUdldHRlclNuaXBwZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RE9NSklUQ2FsbERPTUdldHRlclNuaXBwZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTcxNzAsNiArNzE3NSw4IEBACiAJCQkJRjY5MkE4NUUwMjU1NTk3RDAxRkY2MEY3IC8qIEpT
RnVuY3Rpb24uY3BwICovLAogCQkJCUY2OTJBODVGMDI1NTU5N0QwMUZGNjBGNyAvKiBKU0Z1bmN0
aW9uLmggKi8sCiAJCQkJQTcyMDI4QjkxNzk3NjAzRDAwOTgwMjhDIC8qIEpTRnVuY3Rpb25Jbmxp
bmVzLmggKi8sCisJCQkJRTM0RjkzMEIyMzIyRDg4MTAwMkI4REI0IC8qIEpTR2VuZXJhdG9yLmNw
cCAqLywKKwkJCQlFMzRGOTMwQzIzMjJEODgxMDAyQjhEQjQgLyogSlNHZW5lcmF0b3IuaCAqLywK
IAkJCQk3MEI3OTE4QzFDMDI0NDYyMDAyNDgxRTIgLyogSlNHZW5lcmF0b3JGdW5jdGlvbi5jcHAg
Ki8sCiAJCQkJNzBCNzkxOEQxQzAyNDQ2MjAwMjQ4MUUyIC8qIEpTR2VuZXJhdG9yRnVuY3Rpb24u
aCAqLywKIAkJCQkwRjJCNjZDMzE3QjZCNUFCMDBBN0FFM0YgLyogSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXcuaCAqLywKQEAgLTgxNzEsNiArODE3OCw3IEBACiAJCQkJMTRDQzNCQTEyMTM4QTIzODAw
MkQ1OEI2IC8qIEluc3RydWN0aW9uU3RyZWFtLmNwcCAqLywKIAkJCQkxNENDM0JBMjIxMzhBMjM4
MDAyRDU4QjYgLyogSW5zdHJ1Y3Rpb25TdHJlYW0uaCAqLywKIAkJCQk1M0Y2QkY2QzFDM0YwNjBB
MDBGNDFFNUQgLyogSW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25Qcm9maWxlLmggKi8sCisJCQkJ
RTM0RkUyRUYyMzI2MjgzMzAwQkQ4NDU3IC8qIEludGVybmFsRnVuY3Rpb25BbGxvY2F0aW9uUHJv
ZmlsZUlubGluZXMuaCAqLywKIAkJCQlCQ0ZEOEM5MDBFRUIyRUU3MDAyODM4NDggLyogSnVtcFRh
YmxlLmNwcCAqLywKIAkJCQlCQ0ZEOEM5MTBFRUIyRUU3MDAyODM4NDggLyogSnVtcFRhYmxlLmgg
Ki8sCiAJCQkJMEZCNTQ2NzgxNEY1QzQ2ODAwMkMyOTg5IC8qIExhenlPcGVyYW5kVmFsdWVQcm9m
aWxlLmNwcCAqLywKQEAgLTk1MTEsNiArOTUxOSw3IEBACiAJCQkJQTdBOEFGM0ExN0FEQjVGMzAw
NUFCMTc0IC8qIEludDhBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxMTY2N0IwRTE5OUMw
NTAwODA2NkREIC8qIEludGVybmFsRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTUzRjZC
RjZEMUMzRjA2MEEwMEY0MUU1RCAvKiBJbnRlcm5hbEZ1bmN0aW9uQWxsb2NhdGlvblByb2ZpbGUu
aCBpbiBIZWFkZXJzICovLAorCQkJCUUzNEZFMkYwMjMyNjI4MzcwMEJEODQ1NyAvKiBJbnRlcm5h
bEZ1bmN0aW9uQWxsb2NhdGlvblByb2ZpbGVJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
NDI5RDc3QzBFRDIwRDczMDBCODk2MTkgLyogSW50ZXJwcmV0ZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCUUzOUQ0NUY1MUQzOTAwNTYwMEIzQjM3NyAvKiBJbnRlcnByZXRlcklubGluZXMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUExQjlFMjNBMUI0RTBENjcwMEJDN0ZFRCAvKiBJbnRsQ29sbGF0b3Iu
aCBpbiBIZWFkZXJzICovLApAQCAtOTYyOSw2ICs5NjM4LDcgQEAKIAkJCQkwRjJCNjZGMDE3QjZC
NUFCMDBBN0FFM0YgLyogSlNGbG9hdDY0QXJyYXkuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThD
NDFGMEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU0Z1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
NzIwMjhCQTE3OTc2MDNEMDA5ODAyOEMgLyogSlNGdW5jdGlvbklubGluZXMuaCBpbiBIZWFkZXJz
ICovLAorCQkJCUUzNEY5MzBFMjMyMkQ4ODIwMDJCOERCNCAvKiBKU0dlbmVyYXRvci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNzBCNzkxOUMxQzAyNEE0OTAwMjQ4MUUyIC8qIEpTR2VuZXJhdG9yRnVu
Y3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NkYxMTdCNkI1QUIwMEE3QUUzRiAvKiBK
U0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2RjIxN0I2
QjVBQjAwQTdBRTNGIC8qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3IuaCBpbiBI
ZWFkZXJzICovLApAQCAtMTIxOTcsNyArMTIyMDcsNyBAQAogCQkJZGVmYXVsdENvbmZpZ3VyYXRp
b25Jc1Zpc2libGUgPSAwOwogCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUHJvZHVjdGlv
bjsKIAkJfTsKLQkJMTRDRkIxMDUyMzAzNUVGMzAwRjAwNDhDIC8qIEJ1aWxkIGNvbmZpZ3VyYXRp
b24gbGlzdCAqLyA9IHsKKwkJMTRDRkIxMDUyMzAzNUVGMzAwRjAwNDhDIC8qIEJ1aWxkIGNvbmZp
Z3VyYXRpb24gbGlzdCBmb3IgUEJYQWdncmVnYXRlVGFyZ2V0ICJVbmxvY2sgS2V5Y2hhaW4iICov
ID0gewogCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlv
bnMgPSAoCiAJCQkJMTRDRkIxMDEyMzAzNUVGMzAwRjAwNDhDIC8qIERlYnVnICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL1NvdXJjZXMudHh0CmluZGV4IDI2MjE5M2IyMzg1MTJmOGU5NWRlZDE0YWIyODkwYzUx
ZGJjNWU5YzAuLmQxMDEyMDIyN2EwYzFiZWE1OTg5MmEyNjlkYWNiNGY4NTQwYjVmOWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvU291cmNlcy50eHQKQEAgLTgyNCw2ICs4MjQsNyBAQCBydW50aW1lL0pTRGF0
ZU1hdGguY3BwCiBydW50aW1lL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmNwcAog
cnVudGltZS9KU0ZpeGVkQXJyYXkuY3BwCiBydW50aW1lL0pTRnVuY3Rpb24uY3BwCitydW50aW1l
L0pTR2VuZXJhdG9yLmNwcAogcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmNwcAogcnVudGlt
ZS9KU0dsb2JhbExleGljYWxFbnZpcm9ubWVudC5jcHAKIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXN5bmNGdW5j
dGlvblByb3RvdHlwZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Bc3luY0Z1
bmN0aW9uUHJvdG90eXBlLmpzCmluZGV4IDUyMTRiZDZmM2ExYjRlMmU1ZjFlOTVhYTFjOTkxMTg5
OWI4OTUwMGYuLjk2OGNmMWU3MzQ2MTkyZjFkNDU4YzM3OThlYzM3YzhkMWJjOTFkMDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Bc3luY0Z1bmN0aW9uUHJvdG90
eXBlLmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Bc3luY0Z1bmN0aW9u
UHJvdG90eXBlLmpzCkBAIC0zMSwyMiArMzEsMjIgQEAgZnVuY3Rpb24gYXN5bmNGdW5jdGlvblJl
c3VtZShnZW5lcmF0b3IsIHByb21pc2UsIHNlbnRWYWx1ZSwgcmVzdW1lTW9kZSkKIAogICAgIEBh
c3NlcnQoQGlzUHJvbWlzZShwcm9taXNlKSk7CiAKLSAgICB2YXIgc3RhdGUgPSBAZ2V0QnlJZERp
cmVjdFByaXZhdGUoZ2VuZXJhdG9yLCAiZ2VuZXJhdG9yU3RhdGUiKTsKKyAgICB2YXIgc3RhdGUg
PSBAZ2V0R2VuZXJhdG9ySW50ZXJuYWxGaWVsZChnZW5lcmF0b3IsIEBnZW5lcmF0b3JGaWVsZFN0
YXRlKTsKICAgICB2YXIgdmFsdWUgPSBAdW5kZWZpbmVkOwogCiAgICAgaWYgKHN0YXRlID09PSBA
R2VuZXJhdG9yU3RhdGVDb21wbGV0ZWQgfHwgKHJlc3VtZU1vZGUgIT09IEBHZW5lcmF0b3JSZXN1
bWVNb2RlTm9ybWFsICYmIHJlc3VtZU1vZGUgIT09IEBHZW5lcmF0b3JSZXN1bWVNb2RlVGhyb3cp
KQogICAgICAgICBAdGhyb3dUeXBlRXJyb3IoIkFzeW5jIGZ1bmN0aW9uIGlsbGVnYWxseSByZXN1
bWVkIik7CiAKICAgICB0cnkgewotICAgICAgICBAcHV0QnlJZERpcmVjdFByaXZhdGUoZ2VuZXJh
dG9yLCAiZ2VuZXJhdG9yU3RhdGUiLCBAR2VuZXJhdG9yU3RhdGVFeGVjdXRpbmcpOwotICAgICAg
ICB2YWx1ZSA9IEBnZXRCeUlkRGlyZWN0UHJpdmF0ZShnZW5lcmF0b3IsICJnZW5lcmF0b3JOZXh0
IikuQGNhbGwoQGdldEJ5SWREaXJlY3RQcml2YXRlKGdlbmVyYXRvciwgImdlbmVyYXRvclRoaXMi
KSwgZ2VuZXJhdG9yLCBzdGF0ZSwgc2VudFZhbHVlLCByZXN1bWVNb2RlLCBAZ2V0QnlJZERpcmVj
dFByaXZhdGUoZ2VuZXJhdG9yLCAiZ2VuZXJhdG9yRnJhbWUiKSk7Ci0gICAgICAgIGlmIChAZ2V0
QnlJZERpcmVjdFByaXZhdGUoZ2VuZXJhdG9yLCAiZ2VuZXJhdG9yU3RhdGUiKSA9PT0gQEdlbmVy
YXRvclN0YXRlRXhlY3V0aW5nKSB7Ci0gICAgICAgICAgICBAcHV0QnlJZERpcmVjdFByaXZhdGUo
Z2VuZXJhdG9yLCAiZ2VuZXJhdG9yU3RhdGUiLCBAR2VuZXJhdG9yU3RhdGVDb21wbGV0ZWQpOwor
ICAgICAgICBAcHV0R2VuZXJhdG9ySW50ZXJuYWxGaWVsZChnZW5lcmF0b3IsIEBnZW5lcmF0b3JG
aWVsZFN0YXRlLCBAR2VuZXJhdG9yU3RhdGVFeGVjdXRpbmcpOworICAgICAgICB2YWx1ZSA9IEBn
ZXRHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKGdlbmVyYXRvciwgQGdlbmVyYXRvckZpZWxkTmV4dCku
QGNhbGwoQGdldEdlbmVyYXRvckludGVybmFsRmllbGQoZ2VuZXJhdG9yLCBAZ2VuZXJhdG9yRmll
bGRUaGlzKSwgZ2VuZXJhdG9yLCBzdGF0ZSwgc2VudFZhbHVlLCByZXN1bWVNb2RlLCBAZ2V0R2Vu
ZXJhdG9ySW50ZXJuYWxGaWVsZChnZW5lcmF0b3IsIEBnZW5lcmF0b3JGaWVsZEZyYW1lKSk7Cisg
ICAgICAgIGlmIChAZ2V0R2VuZXJhdG9ySW50ZXJuYWxGaWVsZChnZW5lcmF0b3IsIEBnZW5lcmF0
b3JGaWVsZFN0YXRlKSA9PT0gQEdlbmVyYXRvclN0YXRlRXhlY3V0aW5nKSB7CisgICAgICAgICAg
ICBAcHV0R2VuZXJhdG9ySW50ZXJuYWxGaWVsZChnZW5lcmF0b3IsIEBnZW5lcmF0b3JGaWVsZFN0
YXRlLCBAR2VuZXJhdG9yU3RhdGVDb21wbGV0ZWQpOwogICAgICAgICAgICAgQHJlc29sdmVQcm9t
aXNlV2l0aEZpcnN0UmVzb2x2aW5nRnVuY3Rpb25DYWxsQ2hlY2socHJvbWlzZSwgdmFsdWUpOwog
ICAgICAgICAgICAgcmV0dXJuIHByb21pc2U7CiAgICAgICAgIH0KICAgICB9IGNhdGNoIChlcnJv
cikgewotICAgICAgICBAcHV0QnlJZERpcmVjdFByaXZhdGUoZ2VuZXJhdG9yLCAiZ2VuZXJhdG9y
U3RhdGUiLCBAR2VuZXJhdG9yU3RhdGVDb21wbGV0ZWQpOworICAgICAgICBAcHV0R2VuZXJhdG9y
SW50ZXJuYWxGaWVsZChnZW5lcmF0b3IsIEBnZW5lcmF0b3JGaWVsZFN0YXRlLCBAR2VuZXJhdG9y
U3RhdGVDb21wbGV0ZWQpOwogICAgICAgICBAcmVqZWN0UHJvbWlzZVdpdGhGaXJzdFJlc29sdmlu
Z0Z1bmN0aW9uQ2FsbENoZWNrKHByb21pc2UsIGVycm9yKTsKICAgICAgICAgcmV0dXJuIHByb21p
c2U7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0dl
bmVyYXRvclByb3RvdHlwZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9HZW5l
cmF0b3JQcm90b3R5cGUuanMKaW5kZXggYjI4MDFkZjg4MmI4YThiYzZlMTVlNmUxNGE5ZjI5NmNk
MWM2OTI1ZC4uODM5M2VhMjhhZTg5OTc2OTJjZmViNmVlMjU0YmFmNzk1MjcxYzA4ZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0dlbmVyYXRvclByb3RvdHlwZS5q
cworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvR2VuZXJhdG9yUHJvdG90eXBl
LmpzCkBAIC0zNCwxNCArMzQsMTQgQEAgZnVuY3Rpb24gZ2VuZXJhdG9yUmVzdW1lKGdlbmVyYXRv
ciwgc3RhdGUsIGdlbmVyYXRvclRoaXMsIHNlbnRWYWx1ZSwgdmFsdWUsIHJlc3UKICAgICB2YXIg
ZG9uZSA9IHN0YXRlID09PSBAR2VuZXJhdG9yU3RhdGVDb21wbGV0ZWQ7CiAgICAgaWYgKCFkb25l
KSB7CiAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBAcHV0QnlJZERpcmVjdFByaXZhdGUoZ2Vu
ZXJhdG9yLCAiZ2VuZXJhdG9yU3RhdGUiLCBAR2VuZXJhdG9yU3RhdGVFeGVjdXRpbmcpOwotICAg
ICAgICAgICAgdmFsdWUgPSBAZ2V0QnlJZERpcmVjdFByaXZhdGUoZ2VuZXJhdG9yLCAiZ2VuZXJh
dG9yTmV4dCIpLkBjYWxsKGdlbmVyYXRvclRoaXMsIGdlbmVyYXRvciwgc3RhdGUsIHNlbnRWYWx1
ZSwgcmVzdW1lTW9kZSwgQGdldEJ5SWREaXJlY3RQcml2YXRlKGdlbmVyYXRvciwgImdlbmVyYXRv
ckZyYW1lIikpOwotICAgICAgICAgICAgaWYgKEBnZXRCeUlkRGlyZWN0UHJpdmF0ZShnZW5lcmF0
b3IsICJnZW5lcmF0b3JTdGF0ZSIpID09PSBAR2VuZXJhdG9yU3RhdGVFeGVjdXRpbmcpIHsKLSAg
ICAgICAgICAgICAgICBAcHV0QnlJZERpcmVjdFByaXZhdGUoZ2VuZXJhdG9yLCAiZ2VuZXJhdG9y
U3RhdGUiLCBAR2VuZXJhdG9yU3RhdGVDb21wbGV0ZWQpOworICAgICAgICAgICAgQHB1dEdlbmVy
YXRvckludGVybmFsRmllbGQoZ2VuZXJhdG9yLCBAZ2VuZXJhdG9yRmllbGRTdGF0ZSwgQEdlbmVy
YXRvclN0YXRlRXhlY3V0aW5nKTsKKyAgICAgICAgICAgIHZhbHVlID0gQGdldEdlbmVyYXRvcklu
dGVybmFsRmllbGQoZ2VuZXJhdG9yLCBAZ2VuZXJhdG9yRmllbGROZXh0KS5AY2FsbChnZW5lcmF0
b3JUaGlzLCBnZW5lcmF0b3IsIHN0YXRlLCBzZW50VmFsdWUsIHJlc3VtZU1vZGUsIEBnZXRHZW5l
cmF0b3JJbnRlcm5hbEZpZWxkKGdlbmVyYXRvciwgQGdlbmVyYXRvckZpZWxkRnJhbWUpKTsKKyAg
ICAgICAgICAgIGlmIChAZ2V0R2VuZXJhdG9ySW50ZXJuYWxGaWVsZChnZW5lcmF0b3IsIEBnZW5l
cmF0b3JGaWVsZFN0YXRlKSA9PT0gQEdlbmVyYXRvclN0YXRlRXhlY3V0aW5nKSB7CisgICAgICAg
ICAgICAgICAgQHB1dEdlbmVyYXRvckludGVybmFsRmllbGQoZ2VuZXJhdG9yLCBAZ2VuZXJhdG9y
RmllbGRTdGF0ZSwgQEdlbmVyYXRvclN0YXRlQ29tcGxldGVkKTsKICAgICAgICAgICAgICAgICBk
b25lID0gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHsKLSAg
ICAgICAgICAgIEBwdXRCeUlkRGlyZWN0UHJpdmF0ZShnZW5lcmF0b3IsICJnZW5lcmF0b3JTdGF0
ZSIsIEBHZW5lcmF0b3JTdGF0ZUNvbXBsZXRlZCk7CisgICAgICAgICAgICBAcHV0R2VuZXJhdG9y
SW50ZXJuYWxGaWVsZChnZW5lcmF0b3IsIEBnZW5lcmF0b3JGaWVsZFN0YXRlLCBAR2VuZXJhdG9y
U3RhdGVDb21wbGV0ZWQpOwogICAgICAgICAgICAgdGhyb3cgZXJyb3I7CiAgICAgICAgIH0KICAg
ICB9CkBAIC01Miw0MyArNTIsNDMgQEAgZnVuY3Rpb24gbmV4dCh2YWx1ZSkKIHsKICAgICAidXNl
IHN0cmljdCI7CiAKLSAgICB2YXIgc3RhdGUgPSBAZ2V0QnlJZERpcmVjdFByaXZhdGUodGhpcywg
ImdlbmVyYXRvclN0YXRlIik7Ci0gICAgaWYgKHR5cGVvZiBzdGF0ZSAhPT0gIm51bWJlciIpCisg
ICAgaWYgKCFAaXNHZW5lcmF0b3IodGhpcykpCiAgICAgICAgIEB0aHJvd1R5cGVFcnJvcigifHRo
aXN8IHNob3VsZCBiZSBhIGdlbmVyYXRvciIpOwogCisgICAgdmFyIHN0YXRlID0gQGdldEdlbmVy
YXRvckludGVybmFsRmllbGQodGhpcywgQGdlbmVyYXRvckZpZWxkU3RhdGUpOwogICAgIGlmIChz
dGF0ZSA9PT0gQEdlbmVyYXRvclN0YXRlRXhlY3V0aW5nKQogICAgICAgICBAdGhyb3dUeXBlRXJy
b3IoIkdlbmVyYXRvciBpcyBleGVjdXRpbmciKTsKIAotICAgIHJldHVybiBAZ2VuZXJhdG9yUmVz
dW1lKHRoaXMsIHN0YXRlLCBAZ2V0QnlJZERpcmVjdFByaXZhdGUodGhpcywgImdlbmVyYXRvclRo
aXMiKSwgdmFsdWUsIEB1bmRlZmluZWQsIEBHZW5lcmF0b3JSZXN1bWVNb2RlTm9ybWFsKTsKKyAg
ICByZXR1cm4gQGdlbmVyYXRvclJlc3VtZSh0aGlzLCBzdGF0ZSwgQGdldEdlbmVyYXRvckludGVy
bmFsRmllbGQodGhpcywgQGdlbmVyYXRvckZpZWxkVGhpcyksIHZhbHVlLCBAdW5kZWZpbmVkLCBA
R2VuZXJhdG9yUmVzdW1lTW9kZU5vcm1hbCk7CiB9CiAKIGZ1bmN0aW9uIHJldHVybih2YWx1ZSkK
IHsKICAgICAidXNlIHN0cmljdCI7CiAKLSAgICB2YXIgc3RhdGUgPSBAZ2V0QnlJZERpcmVjdFBy
aXZhdGUodGhpcywgImdlbmVyYXRvclN0YXRlIik7Ci0gICAgaWYgKHR5cGVvZiBzdGF0ZSAhPT0g
Im51bWJlciIpCisgICAgaWYgKCFAaXNHZW5lcmF0b3IodGhpcykpCiAgICAgICAgIEB0aHJvd1R5
cGVFcnJvcigifHRoaXN8IHNob3VsZCBiZSBhIGdlbmVyYXRvciIpOwogCisgICAgdmFyIHN0YXRl
ID0gQGdldEdlbmVyYXRvckludGVybmFsRmllbGQodGhpcywgQGdlbmVyYXRvckZpZWxkU3RhdGUp
OwogICAgIGlmIChzdGF0ZSA9PT0gQEdlbmVyYXRvclN0YXRlRXhlY3V0aW5nKQogICAgICAgICBA
dGhyb3dUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBleGVjdXRpbmciKTsKIAotICAgIHJldHVybiBA
Z2VuZXJhdG9yUmVzdW1lKHRoaXMsIHN0YXRlLCBAZ2V0QnlJZERpcmVjdFByaXZhdGUodGhpcywg
ImdlbmVyYXRvclRoaXMiKSwgdmFsdWUsIHZhbHVlLCBAR2VuZXJhdG9yUmVzdW1lTW9kZVJldHVy
bik7CisgICAgcmV0dXJuIEBnZW5lcmF0b3JSZXN1bWUodGhpcywgc3RhdGUsIEBnZXRHZW5lcmF0
b3JJbnRlcm5hbEZpZWxkKHRoaXMsIEBnZW5lcmF0b3JGaWVsZFRoaXMpLCB2YWx1ZSwgdmFsdWUs
IEBHZW5lcmF0b3JSZXN1bWVNb2RlUmV0dXJuKTsKIH0KIAogZnVuY3Rpb24gdGhyb3coZXhjZXB0
aW9uKQogewogICAgICJ1c2Ugc3RyaWN0IjsKIAotICAgIHZhciBzdGF0ZSA9IEBnZXRCeUlkRGly
ZWN0UHJpdmF0ZSh0aGlzLCAiZ2VuZXJhdG9yU3RhdGUiKTsKLSAgICBpZiAodHlwZW9mIHN0YXRl
ICE9PSAibnVtYmVyIikKKyAgICBpZiAoIUBpc0dlbmVyYXRvcih0aGlzKSkKICAgICAgICAgQHRo
cm93VHlwZUVycm9yKCJ8dGhpc3wgc2hvdWxkIGJlIGEgZ2VuZXJhdG9yIik7CiAKKyAgICB2YXIg
c3RhdGUgPSBAZ2V0R2VuZXJhdG9ySW50ZXJuYWxGaWVsZCh0aGlzLCBAZ2VuZXJhdG9yRmllbGRT
dGF0ZSk7CiAgICAgaWYgKHN0YXRlID09PSBAR2VuZXJhdG9yU3RhdGVFeGVjdXRpbmcpCiAgICAg
ICAgIEB0aHJvd1R5cGVFcnJvcigiR2VuZXJhdG9yIGlzIGV4ZWN1dGluZyIpOwogCiAgICAgaWYg
KHN0YXRlID09PSBAR2VuZXJhdG9yU3RhdGVDb21wbGV0ZWQpCiAgICAgICAgIHRocm93IGV4Y2Vw
dGlvbjsKIAotICAgIHJldHVybiBAZ2VuZXJhdG9yUmVzdW1lKHRoaXMsIHN0YXRlLCBAZ2V0QnlJ
ZERpcmVjdFByaXZhdGUodGhpcywgImdlbmVyYXRvclRoaXMiKSwgZXhjZXB0aW9uLCBAdW5kZWZp
bmVkLCBAR2VuZXJhdG9yUmVzdW1lTW9kZVRocm93KTsKKyAgICByZXR1cm4gQGdlbmVyYXRvclJl
c3VtZSh0aGlzLCBzdGF0ZSwgQGdldEdlbmVyYXRvckludGVybmFsRmllbGQodGhpcywgQGdlbmVy
YXRvckZpZWxkVGhpcyksIGV4Y2VwdGlvbiwgQHVuZGVmaW5lZCwgQEdlbmVyYXRvclJlc3VtZU1v
ZGVUaHJvdyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcAppbmRleCA5NTQ0YmNiNGM4ODY5
YjM0NTg2ZjE2NmM4NzRjYmIwODE1MDNlZmRmLi4yODYwNTFjYzk1ZWE0ZDhmZGE2NmZiMDk5N2Ji
NTkzZWRlN2UzMmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAKQEAgLTM2LDcgKzM2LDcg
QEAKICNpbmNsdWRlICJJbnRlcnByZXRlcklubGluZXMuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKLSNpbmNsdWRlICJKU0dlbmVyYXRv
ckZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJMYWJlbC5o
IgogI2luY2x1ZGUgIlN0cm9uZ0lubGluZXMuaCIKICNpbmNsdWRlICJVbmxpbmtlZENvZGVCbG9j
ay5oIgpAQCAtMjIzLDcgKzIyMyw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb246
OnJ1bigpCiAgICAgewogICAgICAgICBhdXRvIG5leHRUb0VudGVyUG9pbnQgPSBlbnRlclBvaW50
KCkubmV4dCgpOwogICAgICAgICB1bnNpZ25lZCBzd2l0Y2hUYWJsZUluZGV4ID0gbV9jb2RlQmxv
Y2stPm51bWJlck9mU3dpdGNoSnVtcFRhYmxlcygpOwotICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIg
c3RhdGUgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChzdGF0aWNfY2FzdDxpbnQzMl90PihK
U0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JBcmd1bWVudDo6U3RhdGUpKTsKKyAgICAgICAg
VmlydHVhbFJlZ2lzdGVyIHN0YXRlID0gdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoc3RhdGlj
X2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6OkdlbmVyYXRvckFyZ3VtZW50OjpTdGF0ZSkpOwog
ICAgICAgICBhdXRvJiBqdW1wVGFibGUgPSBtX2NvZGVCbG9jay0+YWRkU3dpdGNoSnVtcFRhYmxl
KCk7CiAgICAgICAgIGp1bXBUYWJsZS5taW4gPSAwOwogICAgICAgICBqdW1wVGFibGUuYnJhbmNo
T2Zmc2V0cy5yZXNpemUobV95aWVsZHMuc2l6ZSgpICsgMSk7CkBAIC0yMzgsNyArMjM4LDcgQEAg
dm9pZCBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjo6cnVuKCkKICAgICB9CiAKICAgICBmb3Ig
KGNvbnN0IFlpZWxkRGF0YSYgZGF0YSA6IG1feWllbGRzKSB7Ci0gICAgICAgIFZpcnR1YWxSZWdp
c3RlciBzY29wZSA9IHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KHN0YXRpY19jYXN0PGludDMy
X3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvckFyZ3VtZW50OjpGcmFtZSkpOworICAg
ICAgICBWaXJ0dWFsUmVnaXN0ZXIgc2NvcGUgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChz
dGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9yQXJndW1lbnQ6OkZyYW1l
KSk7CiAKICAgICAgICAgYXV0byBpbnN0cnVjdGlvbiA9IG1faW5zdHJ1Y3Rpb25zLmF0KGRhdGEu
cG9pbnQpOwogICAgICAgICAvLyBFbWl0IHNhdmUgc2VxdWVuY2UuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3Ry
eS5jcHAKaW5kZXggMTk4NDQzZDUzMWZjNmM3OWU3ZWExNTUzOGIyMzAxZmViZmY0NWY2ZC4uM2Fk
MmJhZDQ1MzVmMjIwZmRlNGMzY2FhNzRmM2IwODM1ZjM5YTAwMyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lz
dHJ5LmNwcApAQCAtMzMsNyArMzMsNyBAQAogI2luY2x1ZGUgIkl0ZXJhdGlvbktpbmQuaCIKICNp
bmNsdWRlICJKU0FzeW5jR2VuZXJhdG9yRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVz
LmgiCi0jaW5jbHVkZSAiSlNHZW5lcmF0b3JGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTR2VuZXJh
dG9yLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU01vZHVsZUxv
YWRlci5oIgogI2luY2x1ZGUgIkpTUHJvbWlzZS5oIgpAQCAtNzQsMTEgKzc0LDE1IEBAIEJ5dGVj
b2RlSW50cmluc2ljUmVnaXN0cnk6OkJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkoVk0mIHZtKQog
ICAgIG1fcHJvbWlzZUZsYWdzSXNGaXJzdFJlc29sdmluZ0Z1bmN0aW9uQ2FsbGVkLnNldChtX3Zt
LCBqc051bWJlcihKU1Byb21pc2U6OmlzRmlyc3RSZXNvbHZpbmdGdW5jdGlvbkNhbGxlZEZsYWcp
KTsKICAgICBtX3Byb21pc2VGaWVsZEZsYWdzLnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNQcm9taXNlOjpGaWVsZDo6RmxhZ3MpKSk7CiAgICAgbV9wcm9taXNlRmll
bGRSZWFjdGlvbnNPclJlc3VsdC5zZXQobV92bSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEpTUHJvbWlzZTo6RmllbGQ6OlJlYWN0aW9uc09yUmVzdWx0KSkpOwotICAgIG1fR2VuZXJh
dG9yUmVzdW1lTW9kZU5vcm1hbC5zZXQobV92bSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJf
dD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yUmVzdW1lTW9kZTo6Tm9ybWFsTW9kZSkp
KTsKLSAgICBtX0dlbmVyYXRvclJlc3VtZU1vZGVUaHJvdy5zZXQobV92bSwganNOdW1iZXIoc3Rh
dGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yUmVzdW1lTW9k
ZTo6VGhyb3dNb2RlKSkpOwotICAgIG1fR2VuZXJhdG9yUmVzdW1lTW9kZVJldHVybi5zZXQobV92
bSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2Vu
ZXJhdG9yUmVzdW1lTW9kZTo6UmV0dXJuTW9kZSkpKTsKLSAgICBtX0dlbmVyYXRvclN0YXRlQ29t
cGxldGVkLnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRv
ckZ1bmN0aW9uOjpHZW5lcmF0b3JTdGF0ZTo6Q29tcGxldGVkKSkpOwotICAgIG1fR2VuZXJhdG9y
U3RhdGVFeGVjdXRpbmcuc2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpT
R2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvclN0YXRlOjpFeGVjdXRpbmcpKSk7CisgICAgbV9n
ZW5lcmF0b3JGaWVsZFN0YXRlLnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNHZW5lcmF0b3I6OkZpZWxkOjpTdGF0ZSkpKTsKKyAgICBtX2dlbmVyYXRvckZpZWxkTmV4
dC5zZXQobV92bSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTR2VuZXJhdG9yOjpG
aWVsZDo6TmV4dCkpKTsKKyAgICBtX2dlbmVyYXRvckZpZWxkVGhpcy5zZXQobV92bSwganNOdW1i
ZXIoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTR2VuZXJhdG9yOjpGaWVsZDo6VGhpcykpKTsKKyAg
ICBtX2dlbmVyYXRvckZpZWxkRnJhbWUuc2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0dlbmVyYXRvcjo6RmllbGQ6OkZyYW1lKSkpOworICAgIG1fR2VuZXJhdG9yUmVz
dW1lTW9kZU5vcm1hbC5zZXQobV92bSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNH
ZW5lcmF0b3I6OkdlbmVyYXRvclJlc3VtZU1vZGU6Ok5vcm1hbE1vZGUpKSk7CisgICAgbV9HZW5l
cmF0b3JSZXN1bWVNb2RlVGhyb3cuc2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMy
X3Q+KEpTR2VuZXJhdG9yOjpHZW5lcmF0b3JSZXN1bWVNb2RlOjpUaHJvd01vZGUpKSk7CisgICAg
bV9HZW5lcmF0b3JSZXN1bWVNb2RlUmV0dXJuLnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2Fz
dDxpbnQzMl90PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9yUmVzdW1lTW9kZTo6UmV0dXJuTW9kZSkp
KTsKKyAgICBtX0dlbmVyYXRvclN0YXRlQ29tcGxldGVkLnNldChtX3ZtLCBqc051bWJlcihzdGF0
aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9yU3RhdGU6OkNvbXBsZXRlZCkp
KTsKKyAgICBtX0dlbmVyYXRvclN0YXRlRXhlY3V0aW5nLnNldChtX3ZtLCBqc051bWJlcihzdGF0
aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9yU3RhdGU6OkV4ZWN1dGluZykp
KTsKICAgICBtX0FzeW5jR2VuZXJhdG9yU3RhdGVDb21wbGV0ZWQuc2V0KG1fdm0sIGpzTnVtYmVy
KHN0YXRpY19jYXN0PGludDMyX3Q+KEpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbjo6QXN5bmNHZW5l
cmF0b3JTdGF0ZTo6Q29tcGxldGVkKSkpOwogICAgIG1fQXN5bmNHZW5lcmF0b3JTdGF0ZUV4ZWN1
dGluZy5zZXQobV92bSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNBc3luY0dlbmVy
YXRvckZ1bmN0aW9uOjpBc3luY0dlbmVyYXRvclN0YXRlOjpFeGVjdXRpbmcpKSk7CiAgICAgbV9B
c3luY0dlbmVyYXRvclN0YXRlU3VzcGVuZGVkU3RhcnQuc2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRp
Y19jYXN0PGludDMyX3Q+KEpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbjo6QXN5bmNHZW5lcmF0b3JT
dGF0ZTo6U3VzcGVuZGVkU3RhcnQpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuaAppbmRleCBkNWY2YzNi
MDVlZWI4OTY1OWFjZDk4N2IxNmYyMGM5NDM2YmJhNzUwLi4yODBiN2Y5MDZkNjVlNTBmZmI3Njc1
ZTExZWEyZTI5M2I3ZDU3ZWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmgKQEAgLTQyLDExICs0Miwx
MyBAQCBjbGFzcyBSZWdpc3RlcklEOwogICAgIG1hY3JvKGdldEJ5SWREaXJlY3QpIFwKICAgICBt
YWNybyhnZXRCeUlkRGlyZWN0UHJpdmF0ZSkgXAogICAgIG1hY3JvKGdldFByb21pc2VJbnRlcm5h
bEZpZWxkKSBcCisgICAgbWFjcm8oZ2V0R2VuZXJhdG9ySW50ZXJuYWxGaWVsZCkgXAogICAgIG1h
Y3JvKGlkV2l0aFByb2ZpbGUpIFwKICAgICBtYWNybyhpc09iamVjdCkgXAogICAgIG1hY3JvKGlz
SlNBcnJheSkgXAogICAgIG1hY3JvKGlzUHJveHlPYmplY3QpIFwKICAgICBtYWNybyhpc0Rlcml2
ZWRBcnJheSkgXAorICAgIG1hY3JvKGlzR2VuZXJhdG9yKSBcCiAgICAgbWFjcm8oaXNQcm9taXNl
KSBcCiAgICAgbWFjcm8oaXNSZWdFeHBPYmplY3QpIFwKICAgICBtYWNybyhpc01hcCkgXApAQCAt
NjEsNiArNjMsNyBAQCBjbGFzcyBSZWdpc3RlcklEOwogICAgIG1hY3JvKHB1dEJ5SWREaXJlY3RQ
cml2YXRlKSBcCiAgICAgbWFjcm8ocHV0QnlWYWxEaXJlY3QpIFwKICAgICBtYWNybyhwdXRQcm9t
aXNlSW50ZXJuYWxGaWVsZCkgXAorICAgIG1hY3JvKHB1dEdlbmVyYXRvckludGVybmFsRmllbGQp
IFwKICAgICBtYWNybyh0b051bWJlcikgXAogICAgIG1hY3JvKHRvU3RyaW5nKSBcCiAgICAgbWFj
cm8odG9PYmplY3QpIFwKQEAgLTk4LDYgKzEwMSwxMCBAQCBjbGFzcyBSZWdpc3RlcklEOwogICAg
IG1hY3JvKHByb21pc2VGbGFnc0lzRmlyc3RSZXNvbHZpbmdGdW5jdGlvbkNhbGxlZCkgXAogICAg
IG1hY3JvKHByb21pc2VGaWVsZEZsYWdzKSBcCiAgICAgbWFjcm8ocHJvbWlzZUZpZWxkUmVhY3Rp
b25zT3JSZXN1bHQpIFwKKyAgICBtYWNybyhnZW5lcmF0b3JGaWVsZFN0YXRlKSBcCisgICAgbWFj
cm8oZ2VuZXJhdG9yRmllbGROZXh0KSBcCisgICAgbWFjcm8oZ2VuZXJhdG9yRmllbGRUaGlzKSBc
CisgICAgbWFjcm8oZ2VuZXJhdG9yRmllbGRGcmFtZSkgXAogICAgIG1hY3JvKEdlbmVyYXRvclJl
c3VtZU1vZGVOb3JtYWwpIFwKICAgICBtYWNybyhHZW5lcmF0b3JSZXN1bWVNb2RlVGhyb3cpIFwK
ICAgICBtYWNybyhHZW5lcmF0b3JSZXN1bWVNb2RlUmV0dXJuKSBcCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgppbmRleCAzYjM5OThhYjUwY2Q2MjAz
MDliYWM2ZDY3ZmQ2OTE4ZmY0YTAxYTc1Li4xYmE0MWYxMDZiN2ExMTUxMjU1NzEyZjZhM2Q5MzM3
NzBmMmQ3M2YxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVMaXN0LnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUxpc3QucmIKQEAgLTEzNCw2ICsxMzQsMjAgQEAKICAgICAgICAgaXNJbnRlcm5hbFByb21pc2U6
IGJvb2wsCiAgICAgfQogCitvcCA6Y3JlYXRlX2dlbmVyYXRvciwKKyAgICBhcmdzOiB7CisgICAg
ICAgIGRzdDogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBjYWxsZWU6IFZpcnR1YWxSZWdpc3Rl
ciwKKyAgICB9LAorICAgIG1ldGFkYXRhOiB7CisgICAgICAgIGNhY2hlZENhbGxlZTogV3JpdGVC
YXJyaWVyW0pTQ2VsbF0KKyAgICB9CisKK29wIDpuZXdfZ2VuZXJhdG9yLAorICAgIGFyZ3M6IHsK
KyAgICAgICAgZHN0OiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgfQorCiBvcCA6Z2V0X2FyZ3VtZW50
LAogICAgIGFyZ3M6IHsKICAgICAgICAgZHN0OiBWaXJ0dWFsUmVnaXN0ZXIsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCmluZGV4IGJlMDg1OTY0
MGZiMTA3ZGU4Yjc4MmJjZmE1MDgxYmM3ZDFjNzliYzIuLjQwNzkyNDk5NjVkNTYxOGU5M2Y5ODY3
MjQ3MjRlY2MzNzMyMDE1YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZVVzZURlZi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZVVzZURlZi5oCkBAIC04MCw2ICs4MCw3IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JC
eXRlY29kZU9mZnNldChCbG9jayogY29kZUJsb2NrLCBPcGNvZGVJRCBvcGNvZGVJRCwgY29uc3Qg
SW5zCiAgICAgY2FzZSBvcF9qbXA6CiAgICAgY2FzZSBvcF9uZXdfb2JqZWN0OgogICAgIGNhc2Ug
b3BfbmV3X3Byb21pc2U6CisgICAgY2FzZSBvcF9uZXdfZ2VuZXJhdG9yOgogICAgIGNhc2Ugb3Bf
ZW50ZXI6CiAgICAgY2FzZSBvcF9hcmd1bWVudF9jb3VudDoKICAgICBjYXNlIG9wX2NhdGNoOgpA
QCAtMTk0LDYgKzE5NSw3IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChCbG9j
ayogY29kZUJsb2NrLCBPcGNvZGVJRCBvcGNvZGVJRCwgY29uc3QgSW5zCiAgICAgVVNFUyhPcE5l
d0FycmF5V2l0aFNpemUsIGxlbmd0aCkKICAgICBVU0VTKE9wQ3JlYXRlVGhpcywgY2FsbGVlKQog
ICAgIFVTRVMoT3BDcmVhdGVQcm9taXNlLCBjYWxsZWUpCisgICAgVVNFUyhPcENyZWF0ZUdlbmVy
YXRvciwgY2FsbGVlKQogICAgIFVTRVMoT3BEZWxCeUlkLCBiYXNlKQogICAgIFVTRVMoT3BOZXdG
dW5jLCBzY29wZSkKICAgICBVU0VTKE9wTmV3QXN5bmNHZW5lcmF0b3JGdW5jLCBzY29wZSkKQEAg
LTM4NSw2ICszODcsNyBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sq
IGNvZGVCbG9jaywgT3Bjb2RlSUQgb3Bjb2RlSUQsIGNvbnN0IElucwogICAgIERFRlMoT3BUb1By
aW1pdGl2ZSwgZHN0KQogICAgIERFRlMoT3BDcmVhdGVUaGlzLCBkc3QpCiAgICAgREVGUyhPcENy
ZWF0ZVByb21pc2UsIGRzdCkKKyAgICBERUZTKE9wQ3JlYXRlR2VuZXJhdG9yLCBkc3QpCiAgICAg
REVGUyhPcE5ld0FycmF5LCBkc3QpCiAgICAgREVGUyhPcE5ld0FycmF5V2l0aFNwcmVhZCwgZHN0
KQogICAgIERFRlMoT3BTcHJlYWQsIGRzdCkKQEAgLTQ2NSw2ICs0NjgsNyBAQCB2b2lkIGNvbXB1
dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqIGNvZGVCbG9jaywgT3Bjb2RlSUQgb3Bjb2Rl
SUQsIGNvbnN0IElucwogICAgIERFRlMoT3BNb3YsIGRzdCkKICAgICBERUZTKE9wTmV3T2JqZWN0
LCBkc3QpCiAgICAgREVGUyhPcE5ld1Byb21pc2UsIGRzdCkKKyAgICBERUZTKE9wTmV3R2VuZXJh
dG9yLCBkc3QpCiAgICAgREVGUyhPcFRvVGhpcywgc3JjRHN0KQogICAgIERFRlMoT3BHZXRTY29w
ZSwgZHN0KQogICAgIERFRlMoT3BDcmVhdGVEaXJlY3RBcmd1bWVudHMsIGRzdCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXggMjk0M2IyYjEwMDNj
NWY4ZjFhMzBjZTU2NTI2ODRkNDQzNmU3OGVhMy4uM2E3MTk5NmM1Y2QxNzkwMWM2NzA3YTYyN2Q4
YWU5YWM2OGM4MjY4YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5jcHAKQEAgLTU2OCw2ICs1NjgsNyBAQCBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRp
b24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAg
ICAgICBMSU5LKE9wUHV0QnlJZCkKICAgICAgICAgTElOSyhPcENyZWF0ZVRoaXMpCiAgICAgICAg
IExJTksoT3BDcmVhdGVQcm9taXNlKQorICAgICAgICBMSU5LKE9wQ3JlYXRlR2VuZXJhdG9yKQog
CiAgICAgICAgIExJTksoT3BBZGQpCiAgICAgICAgIExJTksoT3BNdWwpCkBAIC0xMzA3LDYgKzEz
MDgsMTkgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplTExJbnRJbmxpbmVDYWNoZXMoKQogICAg
ICAgICAgICAgY2FjaGVXcml0ZUJhcnJpZXIuY2xlYXIoKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CisgICAgICAgIGNhc2Ugb3BfY3JlYXRlX2dlbmVyYXRvcjogeworICAgICAgICAg
ICAgYXV0byYgbWV0YWRhdGEgPSBjdXJJbnN0cnVjdGlvbi0+YXM8T3BDcmVhdGVHZW5lcmF0b3I+
KCkubWV0YWRhdGEodGhpcyk7CisgICAgICAgICAgICBhdXRvJiBjYWNoZVdyaXRlQmFycmllciA9
IG1ldGFkYXRhLm1fY2FjaGVkQ2FsbGVlOworICAgICAgICAgICAgaWYgKCFjYWNoZVdyaXRlQmFy
cmllciB8fCBjYWNoZVdyaXRlQmFycmllci51bnZhbGlkYXRlZEdldCgpID09IEpTQ2VsbDo6c2Vl
bk11bHRpcGxlQ2FsbGVlT2JqZWN0cygpKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgSlNDZWxsKiBjYWNoZWRGdW5jdGlvbiA9IGNhY2hlV3JpdGVCYXJyaWVyLmdldCgpOwor
ICAgICAgICAgICAgaWYgKHZtLmhlYXAuaXNNYXJrZWQoY2FjaGVkRnVuY3Rpb24pKQorICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkK
KyAgICAgICAgICAgICAgICBkYXRhTG9nRigiQ2xlYXJpbmcgTExJbnQgY3JlYXRlX2dlbmVyYXRv
ciB3aXRoIGNhY2hlZCBjYWxsZWUgJXAuXG4iLCBjYWNoZWRGdW5jdGlvbik7CisgICAgICAgICAg
ICBjYWNoZVdyaXRlQmFycmllci5jbGVhcigpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KICAgICAgICAgY2FzZSBvcF9yZXNvbHZlX3Njb3BlOiB7CiAgICAgICAgICAgICAvLyBSaWdo
dCBub3cgdGhpcyBpc24ndCBzdHJpY3RseSBuZWNlc3NhcnkuIEFueSBzeW1ib2wgdGFibGVzIHRo
YXQgdGhpcyB3aWxsIHJlZmVyIHRvCiAgICAgICAgICAgICAvLyBhcmUgZm9yIG91dGVyIGZ1bmN0
aW9ucywgYW5kIHdlIHJlZmVyIHRvIHRob3NlIGZ1bmN0aW9ucyBzdHJvbmdseSwgYW5kIHRoZXkg
cmVmZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnRlcm5h
bEZ1bmN0aW9uQWxsb2NhdGlvblByb2ZpbGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9JbnRlcm5hbEZ1bmN0aW9uQWxsb2NhdGlvblByb2ZpbGUuaAppbmRleCA5OGY5MjgxYTkz
YTM4NzQ4MzU0MGNlZTA1MDhhOGZjZDZhNTc0MGQzLi5mOTY0NjA5ODQxNTAzOWQ2MzIwZWVmZTI4
OGVmMzJiNmFhMTg1ZWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvSW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25Qcm9maWxlLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0ludGVybmFsRnVuY3Rpb25BbGxvY2F0aW9uUHJvZmlsZS5oCkBA
IC0zMSwzOCArMzEsMzIgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK2NsYXNzIEZ1bmN0aW9uUmFy
ZURhdGE7CisKIGNsYXNzIEludGVybmFsRnVuY3Rpb25BbGxvY2F0aW9uUHJvZmlsZSB7CiBwdWJs
aWM6CiAgICAgc3RhdGljIGlubGluZSBwdHJkaWZmX3Qgb2Zmc2V0T2ZTdHJ1Y3R1cmUoKSB7IHJl
dHVybiBPQkpFQ1RfT0ZGU0VUT0YoSW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25Qcm9maWxlLCBt
X3N0cnVjdHVyZSk7IH0KKyAgICBzdGF0aWMgaW5saW5lIHB0cmRpZmZfdCBvZmZzZXRPZlByb3Rv
dHlwZSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihJbnRlcm5hbEZ1bmN0aW9uQWxsb2NhdGlv
blByb2ZpbGUsIG1fcHJvdG90eXBlKTsgfQogCiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUoKSB7
IHJldHVybiBtX3N0cnVjdHVyZS5nZXQoKTsgfQotICAgIFN0cnVjdHVyZSogY3JlYXRlQWxsb2Nh
dGlvblN0cnVjdHVyZUZyb21CYXNlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIG93bmVy
LCBKU09iamVjdCogcHJvdG90eXBlLCBTdHJ1Y3R1cmUqIGJhc2UpOworICAgIFN0cnVjdHVyZSog
aW5pdGlhbGl6ZUFsbG9jYXRpb25TdHJ1Y3R1cmVGcm9tQmFzZShWTSYsIEpTR2xvYmFsT2JqZWN0
KiwgRnVuY3Rpb25SYXJlRGF0YSogb3duZXIsIEpTRnVuY3Rpb24qIGNvbnN0cnVjdG9yLCBKU09i
amVjdCogcHJvdG90eXBlLCBTdHJ1Y3R1cmUqIGJhc2UsIGJvb2wgY2FuQmVQb2x5UHJvdG8pOwor
CisgICAgSlNPYmplY3QqIHByb3RvdHlwZSgpIHsgcmV0dXJuIG1fcHJvdG90eXBlLmdldCgpOyB9
CiAKLSAgICB2b2lkIGNsZWFyKCkgeyBtX3N0cnVjdHVyZS5jbGVhcigpOyB9Ci0gICAgdm9pZCB2
aXNpdEFnZ3JlZ2F0ZShTbG90VmlzaXRvciYgdmlzaXRvcikgeyB2aXNpdG9yLmFwcGVuZChtX3N0
cnVjdHVyZSk7IH0KKyAgICB2b2lkIGNsZWFyKCkKKyAgICB7CisgICAgICAgIG1fc3RydWN0dXJl
LmNsZWFyKCk7CisgICAgICAgIG1fcHJvdG90eXBlLmNsZWFyKCk7CisgICAgfQorICAgIHZvaWQg
dmlzaXRBZ2dyZWdhdGUoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCisgICAgeworICAgICAgICB2aXNp
dG9yLmFwcGVuZChtX3N0cnVjdHVyZSk7CisgICAgICAgIHZpc2l0b3IuYXBwZW5kKG1fcHJvdG90
eXBlKTsKKyAgICB9CiAKIHByaXZhdGU6CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9z
dHJ1Y3R1cmU7CisgICAgV3JpdGVCYXJyaWVyPEpTT2JqZWN0PiBtX3Byb3RvdHlwZTsKIH07CiAK
LWlubGluZSBTdHJ1Y3R1cmUqIEludGVybmFsRnVuY3Rpb25BbGxvY2F0aW9uUHJvZmlsZTo6Y3Jl
YXRlQWxsb2NhdGlvblN0cnVjdHVyZUZyb21CYXNlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNDZWxsKiBvd25lciwgSlNPYmplY3QqIHByb3RvdHlwZSwgU3RydWN0dXJl
KiBiYXNlU3RydWN0dXJlKQotewotICAgIEFTU0VSVCghbV9zdHJ1Y3R1cmUgfHwgbV9zdHJ1Y3R1
cmUuZ2V0KCktPmNsYXNzSW5mbygpICE9IGJhc2VTdHJ1Y3R1cmUtPmNsYXNzSW5mbygpKTsKLSAg
ICBBU1NFUlQoYmFzZVN0cnVjdHVyZS0+aGFzTW9ub1Byb3RvKCkpOwotCi0gICAgU3RydWN0dXJl
KiBzdHJ1Y3R1cmU7Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudCBwb2x5bW9ycGhpYyBwcm90b3R5
cGVzIGZvciBzdWJjbGFzc2VzIG9mIGJ1aWx0aW4gdHlwZXM6Ci0gICAgLy8gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NzMxOAotICAgIGlmIChwcm90b3R5cGUgPT0g
YmFzZVN0cnVjdHVyZS0+c3RvcmVkUHJvdG90eXBlKCkpCi0gICAgICAgIHN0cnVjdHVyZSA9IGJh
c2VTdHJ1Y3R1cmU7Ci0gICAgZWxzZQotICAgICAgICBzdHJ1Y3R1cmUgPSB2bS5zdHJ1Y3R1cmVD
YWNoZS5lbXB0eVN0cnVjdHVyZUZvclByb3RvdHlwZUZyb21CYXNlU3RydWN0dXJlKGdsb2JhbE9i
amVjdCwgcHJvdG90eXBlLCBiYXNlU3RydWN0dXJlKTsKLQotICAgIC8vIEVuc3VyZSB0aGF0IGlm
IGFub3RoZXIgdGhyZWFkIHNlZXMgdGhlIHN0cnVjdHVyZSwgaXQgd2lsbCBzZWUgaXQgcHJvcGVy
bHkgY3JlYXRlZC4KLSAgICBXVEY6OnN0b3JlU3RvcmVGZW5jZSgpOwotCi0gICAgbV9zdHJ1Y3R1
cmUuc2V0KHZtLCBvd25lciwgc3RydWN0dXJlKTsKLSAgICByZXR1cm4gbV9zdHJ1Y3R1cmUuZ2V0
KCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0ludGVybmFsRnVuY3Rpb25BbGxvY2F0aW9uUHJvZmlsZUlubGluZXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnRlcm5hbEZ1bmN0aW9uQWxsb2Nh
dGlvblByb2ZpbGVJbmxpbmVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTcwNDAzNjE3ODNkODM3ZDlkMzE2NzU4
MDExODlhNzNjNzg1MTBhZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9JbnRlcm5hbEZ1bmN0aW9uQWxsb2NhdGlvblByb2ZpbGVJbmxpbmVzLmgKQEAg
LTAsMCArMSw5NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVk
ZSAiSW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25Qcm9maWxlLmgiCisKK25hbWVzcGFjZSBKU0Mg
eworCitpbmxpbmUgU3RydWN0dXJlKiBJbnRlcm5hbEZ1bmN0aW9uQWxsb2NhdGlvblByb2ZpbGU6
OmluaXRpYWxpemVBbGxvY2F0aW9uU3RydWN0dXJlRnJvbUJhc2UoVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBGdW5jdGlvblJhcmVEYXRhKiBmdW5jdGlvblJhcmVEYXRhLCBK
U0Z1bmN0aW9uKiBjb25zdHJ1Y3RvciwgSlNPYmplY3QqIHByb3RvdHlwZSwgU3RydWN0dXJlKiBi
YXNlU3RydWN0dXJlLCBib29sIGNhbkJlUG9seVByb3RvKQoreworICAgIEFTU0VSVCghbV9zdHJ1
Y3R1cmUgfHwgbV9zdHJ1Y3R1cmUuZ2V0KCktPmNsYXNzSW5mbygpICE9IGJhc2VTdHJ1Y3R1cmUt
PmNsYXNzSW5mbygpKTsKKyAgICBBU1NFUlQoYmFzZVN0cnVjdHVyZS0+aGFzTW9ub1Byb3RvKCkp
OworCisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBudWxscHRyOworICAgIC8vIEZJWE1FOiBJ
bXBsZW1lbnQgcG9seW1vcnBoaWMgcHJvdG90eXBlcyBmb3Igc3ViY2xhc3NlcyBvZiBidWlsdGlu
IHR5cGVzOgorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NzczMTgKKyAgICBpZiAocHJvdG90eXBlID09IGJhc2VTdHJ1Y3R1cmUtPnN0b3JlZFByb3RvdHlw
ZSgpKQorICAgICAgICBzdHJ1Y3R1cmUgPSBiYXNlU3RydWN0dXJlOworICAgIGVsc2UgeworICAg
ICAgICBib29sIGlzUG9seVByb3RvID0gZmFsc2U7CisgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJs
ZSogZXhlY3V0YWJsZSA9IG51bGxwdHI7CisgICAgICAgIGlmIChjYW5CZVBvbHlQcm90byAmJiBj
b25zdHJ1Y3RvcikgeworICAgICAgICAgICAgZXhlY3V0YWJsZSA9IGNvbnN0cnVjdG9yLT5qc0V4
ZWN1dGFibGUoKTsKKyAgICAgICAgICAgIGlmIChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGV4ZWN1
dGFibGUtPmNhY2hlZFBvbHlQcm90b1N0cnVjdHVyZSgpKSB7CisgICAgICAgICAgICAgICAgaWYg
KExJS0VMWShzdHJ1Y3R1cmUgJiYgc3RydWN0dXJlLT5jbGFzc0luZm8oKSA9PSBiYXNlU3RydWN0
dXJlLT5jbGFzc0luZm8oKSAmJiBzdHJ1Y3R1cmUtPmdsb2JhbE9iamVjdCgpID09IGdsb2JhbE9i
amVjdCkpIHsKKyAgICAgICAgICAgICAgICAgICAgbV9zdHJ1Y3R1cmUuc2V0KHZtLCBmdW5jdGlv
blJhcmVEYXRhLCBzdHJ1Y3R1cmUpOworICAgICAgICAgICAgICAgICAgICBtX3Byb3RvdHlwZS5z
ZXQodm0sIGZ1bmN0aW9uUmFyZURhdGEsIHByb3RvdHlwZSk7CisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBzdHJ1Y3R1cmU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBpZiAoT3B0aW9uczo6Zm9yY2VQb2x5UHJvdG8oKSkKKyAgICAgICAgICAgICAg
ICBpc1BvbHlQcm90byA9IHRydWU7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
aXNQb2x5UHJvdG8gPSBleGVjdXRhYmxlLT5lbnN1cmVQb2x5UHJvdG9XYXRjaHBvaW50KCkuaGFz
QmVlbkludmFsaWRhdGVkKCkgJiYgZXhlY3V0YWJsZS0+c2luZ2xldG9uKCkuaGFzQmVlbkludmFs
aWRhdGVkKCk7CisKKyAgICAgICAgICAgIGlmIChpc1BvbHlQcm90bykgeworICAgICAgICAgICAg
ICAgIHN0cnVjdHVyZSA9IHZtLnN0cnVjdHVyZUNhY2hlLmVtcHR5U3RydWN0dXJlRm9yUHJvdG90
eXBlRnJvbUJhc2VTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIGJhc2VTdHJ1Y3R1
cmUsIGlzUG9seVByb3RvKTsKKyAgICAgICAgICAgICAgICBXVEY6OnN0b3JlU3RvcmVGZW5jZSgp
OworCisgICAgICAgICAgICAgICAgbV9zdHJ1Y3R1cmUuc2V0KHZtLCBmdW5jdGlvblJhcmVEYXRh
LCBzdHJ1Y3R1cmUpOworICAgICAgICAgICAgICAgIG1fcHJvdG90eXBlLnNldCh2bSwgZnVuY3Rp
b25SYXJlRGF0YSwgcHJvdG90eXBlKTsKKyAgICAgICAgICAgICAgICBleGVjdXRhYmxlLT5zZXRD
YWNoZWRQb2x5UHJvdG9TdHJ1Y3R1cmUodm0sIHN0cnVjdHVyZSk7CisgICAgICAgICAgICAgICAg
cmV0dXJuIG1fc3RydWN0dXJlLmdldCgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
ICAgIEFTU0VSVChpc1BvbHlQcm90byA9PSBmYWxzZSk7CisgICAgICAgIHN0cnVjdHVyZSA9IHZt
LnN0cnVjdHVyZUNhY2hlLmVtcHR5U3RydWN0dXJlRm9yUHJvdG90eXBlRnJvbUJhc2VTdHJ1Y3R1
cmUoZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIGJhc2VTdHJ1Y3R1cmUsIGlzUG9seVByb3RvKTsK
KworICAgICAgICBpZiAoZXhlY3V0YWJsZSkgeworICAgICAgICAgICAgSW5saW5lV2F0Y2hwb2lu
dFNldCYgcG9seVByb3RvV2F0Y2hwb2ludFNldCA9IGV4ZWN1dGFibGUtPmVuc3VyZVBvbHlQcm90
b1dhdGNocG9pbnQoKTsKKyAgICAgICAgICAgIHN0cnVjdHVyZS0+ZW5zdXJlUmFyZURhdGEodm0p
LT5zZXRTaGFyZWRQb2x5UHJvdG9XYXRjaHBvaW50KGV4ZWN1dGFibGUtPnNoYXJlZFBvbHlQcm90
b1dhdGNocG9pbnQoKSk7CisgICAgICAgICAgICBpZiAocG9seVByb3RvV2F0Y2hwb2ludFNldC5p
c1N0aWxsVmFsaWQoKSAmJiAhZnVuY3Rpb25SYXJlRGF0YS0+aGFzQWxsb2NhdGlvblByb2ZpbGVD
bGVhcmluZ1dhdGNocG9pbnQoKSkgeworICAgICAgICAgICAgICAgIC8vIElmIHdlIGhhcHBlbiB0
byBnbyBwb2x5IHByb3RvIGluIHRoZSBmdXR1cmUsIHdlIHdhbnQgdG8gY2xlYXIgdGhpcyBwYXJ0
aWN1bGFyCisgICAgICAgICAgICAgICAgLy8gb2JqZWN0IGFsbG9jYXRpb24gcHJvZmlsZSBzbyB3
ZSBjYW4gdHJhbnNpdGlvbiB0byBhbGxvY2F0aW5nIHBvbHkgcHJvdG8gb2JqZWN0cy4KKyAgICAg
ICAgICAgICAgICBXYXRjaHBvaW50KiB3YXRjaHBvaW50ID0gZnVuY3Rpb25SYXJlRGF0YS0+Y3Jl
YXRlQWxsb2NhdGlvblByb2ZpbGVDbGVhcmluZ1dhdGNocG9pbnQoKTsKKyAgICAgICAgICAgICAg
ICBwb2x5UHJvdG9XYXRjaHBvaW50U2V0LmFkZCh3YXRjaHBvaW50KTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgIH0KKworICAgIC8vIEVuc3VyZSB0aGF0IGlmIGFub3RoZXIgdGhyZWFk
IHNlZXMgdGhlIHN0cnVjdHVyZSwgaXQgd2lsbCBzZWUgaXQgcHJvcGVybHkgY3JlYXRlZC4KKyAg
ICBXVEY6OnN0b3JlU3RvcmVGZW5jZSgpOworCisgICAgbV9zdHJ1Y3R1cmUuc2V0KHZtLCBmdW5j
dGlvblJhcmVEYXRhLCBzdHJ1Y3R1cmUpOworICAgIG1fcHJvdG90eXBlLnNldCh2bSwgZnVuY3Rp
b25SYXJlRGF0YSwgcHJvdG90eXBlKTsKKyAgICByZXR1cm4gbV9zdHJ1Y3R1cmUuZ2V0KCk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9TcGVjdWxhdGVkVHlwZS5jcHAKaW5kZXggNDJiNjI2YzA1ZWUxZjUxODQ2MDZlYTZkYTk0
MGZmMTlhYTIzMDI3OC4uMzUzZTU2Y2ZjOGViMDk1ZDc5NmZhYWFiZGIxMjU0ZWJiMDNkY2U1YyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUu
Y3BwCkBAIC02MDksOSArNjA5LDggQEAgU3BlY3VsYXRlZFR5cGUgc3BlY3VsYXRpb25Gcm9tSlNU
eXBlKEpTVHlwZSB0eXBlKQogICAgIGNhc2UgRGF0YVZpZXdUeXBlOgogICAgICAgICByZXR1cm4g
U3BlY0RhdGFWaWV3T2JqZWN0OwogICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICByZXR1cm4gU3BlY0NlbGw7CiAgICAgfQotICAgIHJldHVybiBTcGVj
Tm9uZTsKIH0KIAogU3BlY3VsYXRlZFR5cGUgbGVhc3RVcHBlckJvdW5kT2ZTdHJpY3RseUVxdWl2
YWxlbnRTcGVjdWxhdGlvbnMoU3BlY3VsYXRlZFR5cGUgdHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5k
ZXggZWE3YTRhYzQ2MDg3NGY4OWYwOWZjNTY5NDBhNDFiMGIxNjExMjYxNy4uZGVjNWNmMGEwY2Ni
ODM2OTMwYjRhODc1YWEwNjVkYzk3MjY5Y2JhYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTY4Myw3
ICs2ODMsMTcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwg
RnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVubGlua2UKIAogICAgIHN3aXRjaCAocGFyc2VN
b2RlKSB7CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvcldyYXBwZXJGdW5jdGlv
bk1vZGU6Ci0gICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvcldyYXBwZXJNZXRob2RN
b2RlOgorICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JXcmFwcGVyTWV0aG9kTW9k
ZTogeworICAgICAgICBtX2dlbmVyYXRvclJlZ2lzdGVyID0gYWRkVmFyKCk7CisKKyAgICAgICAg
Ly8gRklYTUU6IEVtaXQgdG9fdGhpcyBvbmx5IHdoZW4gR2VuZXJhdG9yIHVzZXMgaXQuCisgICAg
ICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1ODYKKyAg
ICAgICAgZW1pdFRvVGhpcygpOworCisgICAgICAgIGVtaXRDcmVhdGVHZW5lcmF0b3IobV9nZW5l
cmF0b3JSZWdpc3RlciwgJm1fY2FsbGVlUmVnaXN0ZXIpOworICAgICAgICBicmVhazsKKyAgICB9
CisKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNHZW5lcmF0b3JXcmFwcGVyTWV0aG9k
TW9kZToKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNHZW5lcmF0b3JXcmFwcGVyRnVu
Y3Rpb25Nb2RlOiB7CiAgICAgICAgIG1fZ2VuZXJhdG9yUmVnaXN0ZXIgPSBhZGRWYXIoKTsKQEAg
LTcxMSw3ICs3MjEsNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0m
IHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgICAgICAgICAgZW1p
dFRvVGhpcygpOwogICAgICAgICB9CiAKLSAgICAgICAgZW1pdE5ld09iamVjdChtX2dlbmVyYXRv
clJlZ2lzdGVyKTsKKyAgICAgICAgZW1pdE5ld0dlbmVyYXRvcihtX2dlbmVyYXRvclJlZ2lzdGVy
KTsKICAgICAgICAgZW1pdE5ld1Byb21pc2UocHJvbWlzZVJlZ2lzdGVyKCksIG1faXNCdWlsdGlu
RnVuY3Rpb24pOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC04NjYsNyArODc2LDEwIEBAIEJ5
dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSog
ZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAgICAgICAgICAvLyBHZW5lcmF0b3JpZmljYXRpb24g
aW5zZXJ0cyBsZXhpY2FsIGVudmlyb25tZW50IGNyZWF0aW9uIGlmIG5lY2Vzc2FyeS4gT3RoZXJ3
aXNlLCB3ZSBjb252ZXJ0IGl0IHRvIG9wX21vdiBmcmFtZSwgYHVuZGVmaW5lZGAuCiAgICAgICAg
ICAgICBPcENyZWF0ZUdlbmVyYXRvckZyYW1lRW52aXJvbm1lbnQ6OmVtaXQodGhpcywgZ2VuZXJh
dG9yRnJhbWVSZWdpc3RlcigpLCBzY29wZVJlZ2lzdGVyKCksIFZpcnR1YWxSZWdpc3RlciB7IHN5
bWJvbFRhYmxlQ29uc3RhbnRJbmRleCB9LCBhZGRDb25zdGFudFZhbHVlKGpzVW5kZWZpbmVkKCkp
KTsKICAgICAgICAgfQotICAgICAgICBlbWl0UHV0QnlJZChnZW5lcmF0b3JSZWdpc3RlcigpLCBw
cm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSgp
LCBnZW5lcmF0b3JGcmFtZVJlZ2lzdGVyKCkpOworICAgICAgICBpZiAocGFyc2VNb2RlID09IFNv
dXJjZVBhcnNlTW9kZTo6QXN5bmNHZW5lcmF0b3JCb2R5TW9kZSkKKyAgICAgICAgICAgIGVtaXRQ
dXRCeUlkKGdlbmVyYXRvclJlZ2lzdGVyKCksIHByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMo
KS5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lKCksIGdlbmVyYXRvckZyYW1lUmVnaXN0ZXIoKSk7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGVtaXRQdXRJbnRlcm5hbEZpZWxkKGdlbmVyYXRv
clJlZ2lzdGVyKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0dlbmVyYXRvcjo6RmllbGQ6OkZy
YW1lKSwgZ2VuZXJhdG9yRnJhbWVSZWdpc3RlcigpKTsKICAgICB9CiAKICAgICBib29sIHNob3Vs
ZEluaXRpYWxpemVCbG9ja1Njb3BlZEZ1bmN0aW9ucyA9IGZhbHNlOyAvLyBXZSBnZW5lcmF0ZSB0
b3AtbGV2ZWwgZnVuY3Rpb24gZGVjbGFyYXRpb25zIGluIDo6Z2VuZXJhdGUoKS4KQEAgLTI3MDYs
MjAgKzI3MTksMTIgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dFNldHRlckJ5VmFs
KFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnQKIAogdm9pZCBCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdFB1dEdlbmVyYXRvckZpZWxkcyhSZWdpc3RlcklEKiBuZXh0RnVuY3Rpb24p
CiB7Ci0gICAgLy8gRklYTUU6IEN1cnJlbnRseSwgd2UganVzdCBjcmVhdGUgYW4gb2JqZWN0IGFu
ZCBzdG9yZSBnZW5lcmF0b3IgcmVsYXRlZCBmaWVsZHMgYXMgaXRzIHByb3BlcnRpZXMgZm9yIGVh
c2UuCi0gICAgLy8gQnV0IHRvIG1ha2UgaXQgZWZmaWNpZW50LCB3ZSB3aWxsIGludHJvZHVjZSBK
U0dlbmVyYXRvciBjbGFzcywgYWRkIG9wY29kZSBuZXdfZ2VuZXJhdG9yIGFuZCB1c2UgaXRzIEMr
KyBmaWVsZHMgaW5zdGVhZCBvZiB0aGVzZSBwcml2YXRlIHByb3BlcnRpZXMuCi0gICAgLy8gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTU0NQotCi0gICAgZW1pdERp
cmVjdFB1dEJ5SWQobV9nZW5lcmF0b3JSZWdpc3RlciwgcHJvcGVydHlOYW1lcygpLmJ1aWx0aW5O
YW1lcygpLmdlbmVyYXRvck5leHRQcml2YXRlTmFtZSgpLCBuZXh0RnVuY3Rpb24sIFByb3BlcnR5
Tm9kZTo6S25vd25EaXJlY3QpOworICAgIGVtaXRQdXRJbnRlcm5hbEZpZWxkKG1fZ2VuZXJhdG9y
UmVnaXN0ZXIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0dlbmVyYXRvcjo6RmllbGQ6Ok5leHQp
LCBuZXh0RnVuY3Rpb24pOwogCiAgICAgLy8gV2UgZG8gbm90IHN0b3JlICd0aGlzJyBpbiBhcnJv
dyBmdW5jdGlvbiB3aXRoaW4gY29uc3RydWN0b3IsCiAgICAgLy8gYmVjYXVzZSBpdCBtaWdodCBi
ZSBub3QgaW5pdGlhbGl6ZWQsIGlmIHN1cGVyIGlzIGNhbGxlZCBsYXRlci4KICAgICBpZiAoIShp
c0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoKSAmJiBtX2NvZGVCbG9jay0+cGFyc2VNb2RlKCkg
PT0gU291cmNlUGFyc2VNb2RlOjpBc3luY0Fycm93RnVuY3Rpb25Nb2RlKSkKLSAgICAgICAgZW1p
dERpcmVjdFB1dEJ5SWQobV9nZW5lcmF0b3JSZWdpc3RlciwgcHJvcGVydHlOYW1lcygpLmJ1aWx0
aW5OYW1lcygpLmdlbmVyYXRvclRoaXNQcml2YXRlTmFtZSgpLCAmbV90aGlzUmVnaXN0ZXIsIFBy
b3BlcnR5Tm9kZTo6S25vd25EaXJlY3QpOwotCi0gICAgZW1pdERpcmVjdFB1dEJ5SWQobV9nZW5l
cmF0b3JSZWdpc3RlciwgcHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclN0
YXRlUHJpdmF0ZU5hbWUoKSwgZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoMCkpLCBQcm9wZXJ0
eU5vZGU6Oktub3duRGlyZWN0KTsKLQotICAgIGVtaXREaXJlY3RQdXRCeUlkKG1fZ2VuZXJhdG9y
UmVnaXN0ZXIsIHByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JGcmFtZVBy
aXZhdGVOYW1lKCksIGVtaXRMb2FkKG51bGxwdHIsIGpzTnVsbCgpKSwgUHJvcGVydHlOb2RlOjpL
bm93bkRpcmVjdCk7CisgICAgICAgIGVtaXRQdXRJbnRlcm5hbEZpZWxkKG1fZ2VuZXJhdG9yUmVn
aXN0ZXIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0dlbmVyYXRvcjo6RmllbGQ6OlRoaXMpLCAm
bV90aGlzUmVnaXN0ZXIpOwogfQogCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0QXN5
bmNHZW5lcmF0b3JGaWVsZHMoUmVnaXN0ZXJJRCogbmV4dEZ1bmN0aW9uKQpAQCAtMjg2OCw2ICsy
ODczLDE4IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3UHJvbWlzZShS
ZWdpc3RlcklEKiBkc3QsIGJvb2wgaXNJbnRlcm5hbFByCiAgICAgcmV0dXJuIGRzdDsKIH0KIAor
UmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDcmVhdGVHZW5lcmF0b3IoUmVnaXN0
ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBuZXdUYXJnZXQpCit7CisgICAgT3BDcmVhdGVHZW5lcmF0
b3I6OmVtaXQodGhpcywgZHN0LCBuZXdUYXJnZXQpOworICAgIHJldHVybiBkc3Q7Cit9CisKK1Jl
Z2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3R2VuZXJhdG9yKFJlZ2lzdGVySUQq
IGRzdCkKK3sKKyAgICBPcE5ld0dlbmVyYXRvcjo6ZW1pdCh0aGlzLCBkc3QpOworICAgIHJldHVy
biBkc3Q7Cit9CisKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRURFpDaGVjayhSZWdpc3Rl
cklEKiB0YXJnZXQpCiB7CiAgICAgT3BDaGVja1Rkejo6ZW1pdCh0aGlzLCB0YXJnZXQpOwpAQCAt
NDU1NCwxMSArNDU3MSwxMSBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFlp
ZWxkKFJlZ2lzdGVySUQqIGFyZ3VtZW50LCBKU0FzeW5jR2VuZXJhdG9yRgogCiAgICAgUmVmPExh
YmVsPiBub3JtYWxMYWJlbCA9IG5ld0xhYmVsKCk7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGNv
bmRpdGlvbiA9IG5ld1RlbXBvcmFyeSgpOwotICAgIGVtaXRFcXVhbGl0eU9wPE9wU3RyaWN0ZXE+
KGNvbmRpdGlvbi5nZXQoKSwgZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCksIGVtaXRMb2Fk
KG51bGxwdHIsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rp
b246OkdlbmVyYXRvclJlc3VtZU1vZGU6Ok5vcm1hbE1vZGUpKSkpOworICAgIGVtaXRFcXVhbGl0
eU9wPE9wU3RyaWN0ZXE+KGNvbmRpdGlvbi5nZXQoKSwgZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lz
dGVyKCksIGVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpT
R2VuZXJhdG9yOjpHZW5lcmF0b3JSZXN1bWVNb2RlOjpOb3JtYWxNb2RlKSkpKTsKICAgICBlbWl0
SnVtcElmVHJ1ZShjb25kaXRpb24uZ2V0KCksIG5vcm1hbExhYmVsLmdldCgpKTsKIAogICAgIFJl
ZjxMYWJlbD4gdGhyb3dMYWJlbCA9IG5ld0xhYmVsKCk7Ci0gICAgZW1pdEVxdWFsaXR5T3A8T3BT
dHJpY3RlcT4oY29uZGl0aW9uLmdldCgpLCBnZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSwg
ZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0
b3JGdW5jdGlvbjo6R2VuZXJhdG9yUmVzdW1lTW9kZTo6VGhyb3dNb2RlKSkpKTsKKyAgICBlbWl0
RXF1YWxpdHlPcDxPcFN0cmljdGVxPihjb25kaXRpb24uZ2V0KCksIGdlbmVyYXRvclJlc3VtZU1v
ZGVSZWdpc3RlcigpLCBlbWl0TG9hZChudWxscHRyLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQz
Ml90PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9yUmVzdW1lTW9kZTo6VGhyb3dNb2RlKSkpKTsKICAg
ICBlbWl0SnVtcElmVHJ1ZShjb25kaXRpb24uZ2V0KCksIHRocm93TGFiZWwuZ2V0KCkpOwogICAg
IC8vIFJldHVybi4KICAgICB7CkBAIC00NjY2LDEwICs0NjgzLDEwIEBAIFJlZ2lzdGVySUQqIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0RGVsZWdhdGVZaWVsZChSZWdpc3RlcklEKiBhcmd1bWVudCwg
VGhyb3dhYmxlCiAgICAgICAgICAgICAgICAgUmVmPExhYmVsPiByZXR1cm5MYWJlbCA9IG5ld0xh
YmVsKCk7CiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gY29uZGl0aW9uID0gbmV3VGVtcG9yYXJ5KCk7Ci0gICAgICAgICAgICAgICAgICAg
IGVtaXRFcXVhbGl0eU9wPE9wU3RyaWN0ZXE+KGNvbmRpdGlvbi5nZXQoKSwgZ2VuZXJhdG9yUmVz
dW1lTW9kZVJlZ2lzdGVyKCksIGVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0YXRpY19jYXN0
PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvclJlc3VtZU1vZGU6Ok5vcm1h
bE1vZGUpKSkpOworICAgICAgICAgICAgICAgICAgICBlbWl0RXF1YWxpdHlPcDxPcFN0cmljdGVx
Pihjb25kaXRpb24uZ2V0KCksIGdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3RlcigpLCBlbWl0TG9h
ZChudWxscHRyLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6R2Vu
ZXJhdG9yUmVzdW1lTW9kZTo6Tm9ybWFsTW9kZSkpKSk7CiAgICAgICAgICAgICAgICAgICAgIGVt
aXRKdW1wSWZUcnVlKGNvbmRpdGlvbi5nZXQoKSwgbm9ybWFsTGFiZWwuZ2V0KCkpOwogCi0gICAg
ICAgICAgICAgICAgICAgIGVtaXRFcXVhbGl0eU9wPE9wU3RyaWN0ZXE+KGNvbmRpdGlvbi5nZXQo
KSwgZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCksIGVtaXRMb2FkKG51bGxwdHIsIGpzTnVt
YmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvclJl
c3VtZU1vZGU6OlJldHVybk1vZGUpKSkpOworICAgICAgICAgICAgICAgICAgICBlbWl0RXF1YWxp
dHlPcDxPcFN0cmljdGVxPihjb25kaXRpb24uZ2V0KCksIGdlbmVyYXRvclJlc3VtZU1vZGVSZWdp
c3RlcigpLCBlbWl0TG9hZChudWxscHRyLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihK
U0dlbmVyYXRvcjo6R2VuZXJhdG9yUmVzdW1lTW9kZTo6UmV0dXJuTW9kZSkpKSk7CiAgICAgICAg
ICAgICAgICAgICAgIGVtaXRKdW1wSWZUcnVlKGNvbmRpdGlvbi5nZXQoKSwgcmV0dXJuTGFiZWwu
Z2V0KCkpOwogCiAgICAgICAgICAgICAgICAgICAgIC8vIEZhbGx0aHJvdWdoIHRvIFRocm93TW9k
ZS4KQEAgLTQ3NzEsNyArNDc4OCwxMCBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdERlbGVnYXRlWWllbGQoUmVnaXN0ZXJJRCogYXJndW1lbnQsIFRocm93YWJsZQogdm9pZCBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdlbmVyYXRvclN0YXRlQ2hhbmdlKGludDMyX3Qgc3RhdGUp
CiB7CiAgICAgUmVnaXN0ZXJJRCogY29tcGxldGVkU3RhdGUgPSBlbWl0TG9hZChudWxscHRyLCBq
c051bWJlcihzdGF0ZSkpOwotICAgIGVtaXRQdXRCeUlkKGdlbmVyYXRvclJlZ2lzdGVyKCksIHBy
b3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JTdGF0ZVByaXZhdGVOYW1lKCks
IGNvbXBsZXRlZFN0YXRlKTsKKyAgICBpZiAobV9jb2RlQmxvY2stPnBhcnNlTW9kZSgpID09IFNv
dXJjZVBhcnNlTW9kZTo6QXN5bmNHZW5lcmF0b3JCb2R5TW9kZSkKKyAgICAgICAgZW1pdFB1dEJ5
SWQoZ2VuZXJhdG9yUmVnaXN0ZXIoKSwgcHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmdl
bmVyYXRvclN0YXRlUHJpdmF0ZU5hbWUoKSwgY29tcGxldGVkU3RhdGUpOworICAgIGVsc2UKKyAg
ICAgICAgZW1pdFB1dEludGVybmFsRmllbGQoZ2VuZXJhdG9yUmVnaXN0ZXIoKSwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTR2VuZXJhdG9yOjpGaWVsZDo6U3RhdGUpLCBjb21wbGV0ZWRTdGF0ZSk7
CiB9CiAKIGJvb2wgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRKdW1wVmlhRmluYWxseUlmTmVlZGVk
KGludCB0YXJnZXRMYWJlbFNjb3BlRGVwdGgsIExhYmVsJiBqdW1wVGFyZ2V0KQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5o
CmluZGV4IDk0ZWViMTMyNjEwNmZmNmRkY2Q3NDkzMWRlYTBhYjI5MTk0ZGRjYzcuLjdhNWYxZDRk
ZThlMWZjMTI4OTdiMzdmMzQ2N2ZkNTNkM2QzN2RiOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTM1LDcg
KzM1LDcgQEAKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpTQXN5bmNHZW5l
cmF0b3JGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQmlnSW50LmgiCi0jaW5jbHVkZSAiSlNHZW5l
cmF0b3JGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNU
ZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuaCIKICNpbmNsdWRlICJMYWJlbC5oIgogI2luY2x1ZGUg
IkxhYmVsU2NvcGUuaCIKQEAgLTcyNCwxMiArNzI0LDE0IEBAIG5hbWVzcGFjZSBKU0MgewogCiAg
ICAgICAgIFJlZ2lzdGVySUQqIGVtaXRDcmVhdGVUaGlzKFJlZ2lzdGVySUQqIGRzdCk7CiAgICAg
ICAgIFJlZ2lzdGVySUQqIGVtaXRDcmVhdGVQcm9taXNlKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0
ZXJJRCogbmV3VGFyZ2V0LCBib29sIGlzSW50ZXJuYWxQcm9taXNlKTsKKyAgICAgICAgUmVnaXN0
ZXJJRCogZW1pdENyZWF0ZUdlbmVyYXRvcihSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIG5l
d1RhcmdldCk7CiAgICAgICAgIHZvaWQgZW1pdFREWkNoZWNrKFJlZ2lzdGVySUQqIHRhcmdldCk7
CiAgICAgICAgIGJvb2wgbmVlZHNURFpDaGVjayhjb25zdCBWYXJpYWJsZSYpOwogICAgICAgICB2
b2lkIGVtaXRURFpDaGVja0lmTmVjZXNzYXJ5KGNvbnN0IFZhcmlhYmxlJiwgUmVnaXN0ZXJJRCog
dGFyZ2V0LCBSZWdpc3RlcklEKiBzY29wZSk7CiAgICAgICAgIHZvaWQgbGlmdFREWkNoZWNrSWZQ
b3NzaWJsZShjb25zdCBWYXJpYWJsZSYpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3T2Jq
ZWN0KFJlZ2lzdGVySUQqIGRzdCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdQcm9taXNl
KFJlZ2lzdGVySUQqIGRzdCwgYm9vbCBpc0ludGVybmFsUHJvbWlzZSk7CisgICAgICAgIFJlZ2lz
dGVySUQqIGVtaXROZXdHZW5lcmF0b3IoUmVnaXN0ZXJJRCogZHN0KTsKICAgICAgICAgUmVnaXN0
ZXJJRCogZW1pdE5ld0FycmF5KFJlZ2lzdGVySUQqIGRzdCwgRWxlbWVudE5vZGUqLCB1bnNpZ25l
ZCBsZW5ndGgsIEluZGV4aW5nVHlwZSByZWNvbW1lbmRlZEluZGV4aW5nVHlwZSk7IC8vIHN0b3Bz
IGF0IGZpcnN0IGVsaXNpb24KICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld0FycmF5QnVmZmVy
KFJlZ2lzdGVySUQqIGRzdCwgSlNJbW11dGFibGVCdXR0ZXJmbHkqLCBJbmRleGluZ1R5cGUgcmVj
b21tZW5kZWRJbmRleGluZ1R5cGUpOwogICAgICAgICAvLyBGSVhNRTogbmV3X2FycmF5X3dpdGhf
c3ByZWFkIHNob3VsZCB1c2UgYW4gYXJyYXkgYWxsb2NhdGlvbiBwcm9maWxlIGFuZCB0YWtlIGEg
cmVjb21tZW5kZWRJbmRleGluZ1R5cGUKQEAgLTg2Niw2ICs4NjgsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFRvSW5kZXhTdHJpbmcoUmVnaXN0ZXJJRCogZHN0
LCBSZWdpc3RlcklEKiBpbmRleCk7CiAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdElzQ2VsbFdp
dGhUeXBlKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjLCBKU1R5cGUpOworICAgICAg
ICBSZWdpc3RlcklEKiBlbWl0SXNHZW5lcmF0b3IoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklE
KiBzcmMpIHsgcmV0dXJuIGVtaXRJc0NlbGxXaXRoVHlwZShkc3QsIHNyYywgSlNHZW5lcmF0b3JU
eXBlKTsgfQogICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXNKU0FycmF5KFJlZ2lzdGVySUQqIGRz
dCwgUmVnaXN0ZXJJRCogc3JjKSB7IHJldHVybiBlbWl0SXNDZWxsV2l0aFR5cGUoZHN0LCBzcmMs
IEFycmF5VHlwZSk7IH0KICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdElzUHJvbWlzZShSZWdpc3Rl
cklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYykgeyByZXR1cm4gZW1pdElzQ2VsbFdpdGhUeXBlKGRz
dCwgc3JjLCBKU1Byb21pc2VUeXBlKTsgfQogICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXNQcm94
eU9iamVjdChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYykgeyByZXR1cm4gZW1pdElz
Q2VsbFdpdGhUeXBlKGRzdCwgc3JjLCBQcm94eU9iamVjdFR5cGUpOyB9CkBAIC05ODgsMTAgKzk5
MSwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0R2VuZXJhdG9yU3RhdGVD
aGFuZ2UoaW50MzJfdCBzdGF0ZSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRZaWVsZChSZWdp
c3RlcklEKiBhcmd1bWVudCwgSlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uOjpBc3luY0dlbmVyYXRv
clN1c3BlbmRSZWFzb24gPSBKU0FzeW5jR2VuZXJhdG9yRnVuY3Rpb246OkFzeW5jR2VuZXJhdG9y
U3VzcGVuZFJlYXNvbjo6WWllbGQpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0RGVsZWdhdGVZ
aWVsZChSZWdpc3RlcklEKiBhcmd1bWVudCwgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqKTsKLSAg
ICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yU3RhdGVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3Bh
cmFtZXRlcnNbc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJh
dG9yQXJndW1lbnQ6OlN0YXRlKV07IH0KLSAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yVmFs
dWVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbc3RhdGljX2Nhc3Q8aW50MzJfdD4o
SlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yQXJndW1lbnQ6OlZhbHVlKV07IH0KLSAgICAg
ICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1f
cGFyYW1ldGVyc1tzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5l
cmF0b3JBcmd1bWVudDo6UmVzdW1lTW9kZSldOyB9Ci0gICAgICAgIFJlZ2lzdGVySUQqIGdlbmVy
YXRvckZyYW1lUmVnaXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJzW3N0YXRpY19jYXN0PGlu
dDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvckFyZ3VtZW50OjpGcmFtZSldOyB9
CisgICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRvclN0YXRlUmVnaXN0ZXIoKSB7IHJldHVybiAm
bV9wYXJhbWV0ZXJzW3N0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpHZW5lcmF0b3JB
cmd1bWVudDo6U3RhdGUpXTsgfQorICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JWYWx1ZVJl
Z2lzdGVyKCkgeyByZXR1cm4gJm1fcGFyYW1ldGVyc1tzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dl
bmVyYXRvcjo6R2VuZXJhdG9yQXJndW1lbnQ6OlZhbHVlKV07IH0KKyAgICAgICAgUmVnaXN0ZXJJ
RCogZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1fcGFyYW1ldGVyc1tz
dGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9yQXJndW1lbnQ6OlJlc3Vt
ZU1vZGUpXTsgfQorICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JGcmFtZVJlZ2lzdGVyKCkg
eyByZXR1cm4gJm1fcGFyYW1ldGVyc1tzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6
R2VuZXJhdG9yQXJndW1lbnQ6OkZyYW1lKV07IH0KIAogICAgICAgICBDb2RlVHlwZSBjb2RlVHlw
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZVR5cGU7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCmluZGV4IDQ4OTA5ZWY5YjA0
ZDE1YWRjNGEwMmQyNmM3NWY4Y2M1YzljMTUzYjEuLjg3NzhmYjY2NDY5NTk5Y2UyNWIwYjY4OWQw
ZDM5MGVhMzA5YTZkYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKQEAgLTM0LDcgKzM0LDcgQEAKICNpbmNsdWRlICJKSVQu
aCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgotI2lu
Y2x1ZGUgIkpTR2VuZXJhdG9yRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0dlbmVyYXRvci5oIgog
I2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNJbW11dGFibGVCdXR0ZXJm
bHkuaCIKICNpbmNsdWRlICJMYWJlbFNjb3BlLmgiCkBAIC0xMDIwLDYgKzEwMjAsMjAgQEAgc3Rh
dGljIEpTUHJvbWlzZTo6RmllbGQgcHJvbWlzZUludGVybmFsRmllbGRJbmRleChCeXRlY29kZUlu
dHJpbnNpY05vZGUqIG5vZGUpCiAgICAgcmV0dXJuIEpTUHJvbWlzZTo6RmllbGQ6OkZsYWdzOwog
fQogCitzdGF0aWMgSlNHZW5lcmF0b3I6OkZpZWxkIGdlbmVyYXRvckludGVybmFsRmllbGRJbmRl
eChCeXRlY29kZUludHJpbnNpY05vZGUqIG5vZGUpCit7CisgICAgaWYgKG5vZGUtPmVtaXR0ZXIo
KSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19nZW5lcmF0b3JGaWVs
ZFN0YXRlKQorICAgICAgICByZXR1cm4gSlNHZW5lcmF0b3I6OkZpZWxkOjpTdGF0ZTsKKyAgICBp
ZiAobm9kZS0+ZW1pdHRlcigpID09ICZCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmlu
c2ljX2dlbmVyYXRvckZpZWxkTmV4dCkKKyAgICAgICAgcmV0dXJuIEpTR2VuZXJhdG9yOjpGaWVs
ZDo6TmV4dDsKKyAgICBpZiAobm9kZS0+ZW1pdHRlcigpID09ICZCeXRlY29kZUludHJpbnNpY05v
ZGU6OmVtaXRfaW50cmluc2ljX2dlbmVyYXRvckZpZWxkVGhpcykKKyAgICAgICAgcmV0dXJuIEpT
R2VuZXJhdG9yOjpGaWVsZDo6VGhpczsKKyAgICBpZiAobm9kZS0+ZW1pdHRlcigpID09ICZCeXRl
Y29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dlbmVyYXRvckZpZWxkRnJhbWUpCisg
ICAgICAgIHJldHVybiBKU0dlbmVyYXRvcjo6RmllbGQ6OkZyYW1lOworICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIEpTR2VuZXJhdG9yOjpGaWVsZDo6U3RhdGU7
Cit9CisKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNf
Z2V0UHJvbWlzZUludGVybmFsRmllbGQoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVn
aXN0ZXJJRCogZHN0KQogewogICAgIEFyZ3VtZW50TGlzdE5vZGUqIG5vZGUgPSBtX2FyZ3MtPm1f
bGlzdE5vZGU7CkBAIC0xMDMzLDYgKzEwNDcsMTkgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVJbnRy
aW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19nZXRQcm9taXNlSW50ZXJuYWxGaWVsZChCeXRlY28K
ICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRHZXRJbnRlcm5hbEZpZWxkKGdlbmVyYXRvci5maW5h
bERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCksIGluZGV4KTsKIH0KIAorUmVnaXN0ZXJJRCog
Qnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19nZXRHZW5lcmF0b3JJbnRlcm5h
bEZpZWxkKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK3sK
KyAgICBBcmd1bWVudExpc3ROb2RlKiBub2RlID0gbV9hcmdzLT5tX2xpc3ROb2RlOworICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gZ2VuZXJhdG9yLmVtaXROb2RlKG5vZGUpOworICAgIG5v
ZGUgPSBub2RlLT5tX25leHQ7CisgICAgUkVMRUFTRV9BU1NFUlQobm9kZS0+bV9leHByLT5pc0J5
dGVjb2RlSW50cmluc2ljTm9kZSgpKTsKKyAgICB1bnNpZ25lZCBpbmRleCA9IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihnZW5lcmF0b3JJbnRlcm5hbEZpZWxkSW5kZXgoc3RhdGljX2Nhc3Q8Qnl0ZWNv
ZGVJbnRyaW5zaWNOb2RlKj4obm9kZS0+bV9leHByKSkpOworICAgIEFTU0VSVChpbmRleCA8IEpT
R2VuZXJhdG9yOjpudW1iZXJPZkludGVybmFsRmllbGRzKTsKKyAgICBBU1NFUlQoIW5vZGUtPm1f
bmV4dCk7CisKKyAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRHZXRJbnRlcm5hbEZpZWxkKGdlbmVy
YXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCksIGluZGV4KTsKK30KKwogUmVn
aXN0ZXJJRCogQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19hcmd1bWVudChC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7CiAgICAgQXJn
dW1lbnRMaXN0Tm9kZSogbm9kZSA9IG1fYXJncy0+bV9saXN0Tm9kZTsKQEAgLTExMTgsNiArMTE0
NSwyMiBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2lj
X3B1dFByb21pc2VJbnRlcm5hbEZpZWxkKEJ5dGVjbwogICAgIHJldHVybiBnZW5lcmF0b3IubW92
ZShkc3QsIGdlbmVyYXRvci5lbWl0UHV0SW50ZXJuYWxGaWVsZChiYXNlLmdldCgpLCBpbmRleCwg
dmFsdWUuZ2V0KCkpKTsKIH0KIAorUmVnaXN0ZXJJRCogQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjpl
bWl0X2ludHJpbnNpY19wdXRHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK3sKKyAgICBBcmd1bWVudExpc3ROb2RlKiBu
b2RlID0gbV9hcmdzLT5tX2xpc3ROb2RlOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBiYXNlID0g
Z2VuZXJhdG9yLmVtaXROb2RlKG5vZGUpOworICAgIG5vZGUgPSBub2RlLT5tX25leHQ7CisgICAg
UkVMRUFTRV9BU1NFUlQobm9kZS0+bV9leHByLT5pc0J5dGVjb2RlSW50cmluc2ljTm9kZSgpKTsK
KyAgICB1bnNpZ25lZCBpbmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihnZW5lcmF0b3JJbnRl
cm5hbEZpZWxkSW5kZXgoc3RhdGljX2Nhc3Q8Qnl0ZWNvZGVJbnRyaW5zaWNOb2RlKj4obm9kZS0+
bV9leHByKSkpOworICAgIEFTU0VSVChpbmRleCA8IEpTR2VuZXJhdG9yOjpudW1iZXJPZkludGVy
bmFsRmllbGRzKTsKKyAgICBub2RlID0gbm9kZS0+bV9uZXh0OworICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShub2RlKTsKKworICAgIEFTU0VSVCghbm9k
ZS0+bV9uZXh0KTsKKworICAgIHJldHVybiBnZW5lcmF0b3IubW92ZShkc3QsIGdlbmVyYXRvci5l
bWl0UHV0SW50ZXJuYWxGaWVsZChiYXNlLmdldCgpLCBpbmRleCwgdmFsdWUuZ2V0KCkpKTsKK30K
KwogUmVnaXN0ZXJJRCogQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY190YWls
Q2FsbEZvcndhcmRBcmd1bWVudHMoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0
ZXJJRCogZHN0KQogewogICAgIEFyZ3VtZW50TGlzdE5vZGUqIG5vZGUgPSBtX2FyZ3MtPm1fbGlz
dE5vZGU7CkBAIC0xMjMxLDYgKzEyNzQsMTUgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVJbnRyaW5z
aWNOb2RlOjplbWl0X2ludHJpbnNpY19pZFdpdGhQcm9maWxlKEJ5dGVjb2RlR2VuZXJhdG8KIAog
ICAgIHJldHVybiBnZW5lcmF0b3IubW92ZShkc3QsIGdlbmVyYXRvci5lbWl0SWRXaXRoUHJvZmls
ZShpZFZhbHVlLmdldCgpLCBzcGVjdWxhdGlvbikpOwogfQorCitSZWdpc3RlcklEKiBCeXRlY29k
ZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2lzR2VuZXJhdG9yKEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3ImIGdlbmVyYXRvciwgSlNDOjpSZWdpc3RlcklEKiBkc3QpCit7CisgICAgQXJndW1l
bnRMaXN0Tm9kZSogbm9kZSA9IG1fYXJncy0+bV9saXN0Tm9kZTsKKyAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gc3JjID0gZ2VuZXJhdG9yLmVtaXROb2RlKG5vZGUpOworICAgIEFTU0VSVCghbm9kZS0+
bV9uZXh0KTsKKworICAgIHJldHVybiBnZW5lcmF0b3IubW92ZShkc3QsIGdlbmVyYXRvci5lbWl0
SXNHZW5lcmF0b3IoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBzcmMuZ2V0KCkpKTsK
K30KICAgICAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5z
aWNfaXNKU0FycmF5KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgSlNDOjpSZWdp
c3RlcklEKiBkc3QpCiB7CkBAIC0zOTkzLDcgKzQwNDUsNyBAQCB2b2lkIEZ1bmN0aW9uTm9kZTo6
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqKQog
ICAgICAgICBnZW5lcmF0b3IubW92ZShhcmdzLmFyZ3VtZW50UmVnaXN0ZXIoYXJndW1lbnRDb3Vu
dCsrKSwgZ2VuZXJhdG9yLmdlbmVyYXRvclJlZ2lzdGVyKCkpOwogICAgICAgICBnZW5lcmF0b3Iu
bW92ZShhcmdzLmFyZ3VtZW50UmVnaXN0ZXIoYXJndW1lbnRDb3VudCsrKSwgZ2VuZXJhdG9yLnBy
b21pc2VSZWdpc3RlcigpKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGFyZ3MuYXJndW1l
bnRSZWdpc3Rlcihhcmd1bWVudENvdW50KyspLCBqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRMb2FkKGFyZ3MuYXJndW1lbnRSZWdpc3Rlcihhcmd1bWVudENvdW50KyspLCBq
c051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0
b3JSZXN1bWVNb2RlOjpOb3JtYWxNb2RlKSkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdExvYWQo
YXJncy5hcmd1bWVudFJlZ2lzdGVyKGFyZ3VtZW50Q291bnQrKyksIGpzTnVtYmVyKHN0YXRpY19j
YXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpHZW5lcmF0b3JSZXN1bWVNb2RlOjpOb3JtYWxNb2Rl
KSkpOwogICAgICAgICAvLyBKU1RleHRQb3NpdGlvbihpbnQgX2xpbmUsIGludCBfb2Zmc2V0LCBp
bnQgX2xpbmVTdGFydE9mZnNldCkKICAgICAgICAgSlNUZXh0UG9zaXRpb24gZGl2b3QoZmlyc3RM
aW5lKCksIHN0YXJ0T2Zmc2V0KCksIGxpbmVTdGFydE9mZnNldCgpKTsKIApAQCAtNDAxMCwxMSAr
NDA2MiwxMSBAQCB2b2lkIEZ1bmN0aW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqKQogICAgICAgICBSZWY8TGFiZWw+IGdlbmVyYXRv
ckJvZHlMYWJlbCA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOwogICAgICAgICB7CiAgICAgICAgICAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gY29uZGl0aW9uID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgp
OwotICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRFcXVhbGl0eU9wPE9wU3RyaWN0ZXE+KGNvbmRp
dGlvbi5nZXQoKSwgZ2VuZXJhdG9yLmdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3RlcigpLCBnZW5l
cmF0b3IuZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNH
ZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yUmVzdW1lTW9kZTo6Tm9ybWFsTW9kZSkpKSk7Cisg
ICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEVxdWFsaXR5T3A8T3BTdHJpY3RlcT4oY29uZGl0aW9u
LmdldCgpLCBnZW5lcmF0b3IuZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCksIGdlbmVyYXRv
ci5lbWl0TG9hZChudWxscHRyLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVy
YXRvcjo6R2VuZXJhdG9yUmVzdW1lTW9kZTo6Tm9ybWFsTW9kZSkpKSk7CiAgICAgICAgICAgICBn
ZW5lcmF0b3IuZW1pdEp1bXBJZlRydWUoY29uZGl0aW9uLmdldCgpLCBnZW5lcmF0b3JCb2R5TGFi
ZWwuZ2V0KCkpOwogCiAgICAgICAgICAgICBSZWY8TGFiZWw+IHRocm93TGFiZWwgPSBnZW5lcmF0
b3IubmV3TGFiZWwoKTsKLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0RXF1YWxpdHlPcDxPcFN0
cmljdGVxPihjb25kaXRpb24uZ2V0KCksIGdlbmVyYXRvci5nZW5lcmF0b3JSZXN1bWVNb2RlUmVn
aXN0ZXIoKSwgZ2VuZXJhdG9yLmVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0YXRpY19jYXN0
PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvclJlc3VtZU1vZGU6OlRocm93
TW9kZSkpKSk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEVxdWFsaXR5T3A8T3BTdHJpY3Rl
cT4oY29uZGl0aW9uLmdldCgpLCBnZW5lcmF0b3IuZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVy
KCksIGdlbmVyYXRvci5lbWl0TG9hZChudWxscHRyLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQz
Ml90PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9yUmVzdW1lTW9kZTo6VGhyb3dNb2RlKSkpKTsKICAg
ICAgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcElmVHJ1ZShjb25kaXRpb24uZ2V0KCksIHRocm93
TGFiZWwuZ2V0KCkpOwogCiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFJldHVybihnZW5lcmF0
b3IuZ2VuZXJhdG9yVmFsdWVSZWdpc3RlcigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAppbmRleCA5YjZi
ZjAzNTk3ODc5N2EzZTMzYTRjODQ5NTE0MDMxNDBjNTMxZDEzLi5lMzA3MWM1YmYzMmVkMTFmOTVm
ZTExN2UzZjM2MDhkMWFiNGQ3ODFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCkBAIC0zNyw2ICszNyw3
IEBACiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSGFzaE1hcEltcGwuaCIK
ICNpbmNsdWRlICJKSVRPcGVyYXRpb25zLmgiCisjaW5jbHVkZSAiSlNHZW5lcmF0b3IuaCIKICNp
bmNsdWRlICJKU0ltbXV0YWJsZUJ1dHRlcmZseS5oIgogI2luY2x1ZGUgIkpTSW50ZXJuYWxQcm9t
aXNlLmgiCiAjaW5jbHVkZSAiSlNJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5oIgpAQCAtMTU2
NSw2ICsxNTY2LDEzIEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlw
ZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgICAgICBicmVh
azsKIAogICAgICAgICBjYXNlIElzQ2VsbFdpdGhUeXBlOgorICAgICAgICAgICAgaWYgKG5vZGUt
PnNwZWN1bGF0ZWRUeXBlRm9yUXVlcnkoKSA9PSBTcGVjQ2VsbCkgeworICAgICAgICAgICAgICAg
IGlmICghKGNoaWxkLm1fdHlwZSAmIFNwZWNDZWxsKSkgeworICAgICAgICAgICAgICAgICAgICBz
ZXRDb25zdGFudChub2RlLCBqc0Jvb2xlYW4oZmFsc2UpKTsKKyAgICAgICAgICAgICAgICAgICAg
Y29uc3RhbnRXYXNTZXQgPSB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICghKGNoaWxkLm1fdHlwZSAm
IH5ub2RlLT5zcGVjdWxhdGVkVHlwZUZvclF1ZXJ5KCkpKSB7CiAgICAgICAgICAgICAgICAgc2V0
Q29uc3RhbnQobm9kZSwganNCb29sZWFuKHRydWUpKTsKICAgICAgICAgICAgICAgICBjb25zdGFu
dFdhc1NldCA9IHRydWU7CkBAIC0yNjc1LDEwICsyNjgzLDQyIEBAIGJvb2wgQWJzdHJhY3RJbnRl
cnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2Ji
ZXJMaW1pCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgQ3JlYXRlR2VuZXJhdG9y
OiB7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICBpZiAoSlNWYWx1ZSBi
YXNlID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV92YWx1ZSkgeworICAgICAgICAgICAgaWYg
KGF1dG8qIGZ1bmN0aW9uID0ganNEeW5hbWljQ2FzdDxKU0Z1bmN0aW9uKj4obV9ncmFwaC5tX3Zt
LCBiYXNlKSkgeworICAgICAgICAgICAgICAgIGlmIChGdW5jdGlvblJhcmVEYXRhKiByYXJlRGF0
YSA9IGZ1bmN0aW9uLT5yYXJlRGF0YSgpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChyYXJl
RGF0YS0+YWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50U2V0KCkuaXNTdGlsbFZhbGlkKCkpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gcmFyZURhdGEt
PmludGVybmFsRnVuY3Rpb25BbGxvY2F0aW9uU3RydWN0dXJlKCk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoc3RydWN0dXJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgc3Ry
dWN0dXJlLT5jbGFzc0luZm8oKSA9PSBKU0dlbmVyYXRvcjo6aW5mbygpCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJiYgc3RydWN0dXJlLT5nbG9iYWxPYmplY3QoKSA9PSBnbG9iYWxPYmpl
Y3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiByYXJlRGF0YS0+YWxsb2NhdGlvblBy
b2ZpbGVXYXRjaHBvaW50U2V0KCkuaXNTdGlsbFZhbGlkKCkpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtX2dyYXBoLmZyZWV6ZShyYXJlRGF0YSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbV9ncmFwaC53YXRjaHBvaW50cygpLmFkZExhemlseShyYXJlRGF0YS0+YWxsb2Nh
dGlvblByb2ZpbGVXYXRjaHBvaW50U2V0KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1fc3RhdGUuc2V0Rm91bmRDb25zdGFudHModHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZGlkRm9sZENsb2JiZXJXb3JsZCgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNldEZvck5vZGUobm9kZSwgc3RydWN0dXJlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBj
bG9iYmVyV29ybGQoKTsKKyAgICAgICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY09iamVjdE90
aGVyKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBOZXdQcm9taXNlOgogICAg
ICAgICBBU1NFUlQoISFub2RlLT5zdHJ1Y3R1cmUoKS5nZXQoKSk7CiAgICAgICAgIHNldEZvck5v
ZGUobm9kZSwgbm9kZS0+c3RydWN0dXJlKCkpOwogICAgICAgICBicmVhazsKKworICAgIGNhc2Ug
TmV3R2VuZXJhdG9yOgorICAgICAgICBBU1NFUlQoISFub2RlLT5zdHJ1Y3R1cmUoKS5nZXQoKSk7
CisgICAgICAgIHNldEZvck5vZGUobm9kZSwgbm9kZS0+c3RydWN0dXJlKCkpOworICAgICAgICBi
cmVhazsKICAgICAgICAgCiAgICAgY2FzZSBOZXdPYmplY3Q6CiAgICAgICAgIEFTU0VSVCghIW5v
ZGUtPnN0cnVjdHVyZSgpLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdCeXRlQ29kZVBhcnNlci5jcHAKaW5kZXggMmM4MmIxZTkzYmQxZmQ1MmNlZDU1MDRhNDFiYWVj
OWE1ZDliOTM5Mi4uZjk0ZDE1NDg0YTc3YzQ2ZTVkNmIyMmY0NjlmMjBlMGFkN2UwM2VlMCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAg
LTQ5MzksNiArNDkzOSw2MiBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2ln
bmVkIGxpbWl0KQogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfY3JlYXRlX3Byb21pc2UpOwog
ICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBvcF9jcmVhdGVfZ2VuZXJhdG9yOiB7CisgICAgICAg
ICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3IoY3VycmVudE5vZGVPcmlnaW4oKS5zZW1hbnRpYyk7CisgICAgICAgICAgICBhdXRvIGJ5dGVj
b2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcENyZWF0ZUdlbmVyYXRvcj4oKTsKKyAgICAg
ICAgICAgIE5vZGUqIGNhbGxlZSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9jYWxs
ZWUpKTsKKworICAgICAgICAgICAgYm9vbCBhbHJlYWR5RW1pdHRlZCA9IGZhbHNlOworCisgICAg
ICAgICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGNhbGxlZS0+ZHluYW1pY0Nhc3RDb25zdGFu
dDxKU0Z1bmN0aW9uKj4oKm1fdm0pOworICAgICAgICAgICAgaWYgKCFmdW5jdGlvbikgeworICAg
ICAgICAgICAgICAgIEpTQ2VsbCogY2FjaGVkRnVuY3Rpb24gPSBieXRlY29kZS5tZXRhZGF0YShj
b2RlQmxvY2spLm1fY2FjaGVkQ2FsbGVlLnVudmFsaWRhdGVkR2V0KCk7CisgICAgICAgICAgICAg
ICAgaWYgKGNhY2hlZEZ1bmN0aW9uCisgICAgICAgICAgICAgICAgICAgICYmIGNhY2hlZEZ1bmN0
aW9uICE9IEpTQ2VsbDo6c2Vlbk11bHRpcGxlQ2FsbGVlT2JqZWN0cygpCisgICAgICAgICAgICAg
ICAgICAgICYmICFtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1f
Y3VycmVudEluZGV4LCBCYWRDZWxsKSkgeworICAgICAgICAgICAgICAgICAgICBBU1NFUlQoY2Fj
aGVkRnVuY3Rpb24tPmluaGVyaXRzPEpTRnVuY3Rpb24+KCptX3ZtKSk7CisKKyAgICAgICAgICAg
ICAgICAgICAgRnJvemVuVmFsdWUqIGZyb3plbiA9IG1fZ3JhcGguZnJlZXplKGNhY2hlZEZ1bmN0
aW9uKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChDaGVja0NlbGwsIE9wSW5mbyhm
cm96ZW4pLCBjYWxsZWUpOworCisgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uID0gc3RhdGlj
X2Nhc3Q8SlNGdW5jdGlvbio+KGNhY2hlZEZ1bmN0aW9uKTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChmdW5jdGlvbikgeworICAgICAgICAgICAg
ICAgIGlmIChGdW5jdGlvblJhcmVEYXRhKiByYXJlRGF0YSA9IGZ1bmN0aW9uLT5yYXJlRGF0YSgp
KSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChyYXJlRGF0YS0+YWxsb2NhdGlvblByb2ZpbGVX
YXRjaHBvaW50U2V0KCkuaXNTdGlsbFZhbGlkKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IFN0cnVjdHVyZSogc3RydWN0dXJlID0gcmFyZURhdGEtPmludGVybmFsRnVuY3Rpb25BbGxvY2F0
aW9uU3RydWN0dXJlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBKU09iamVjdCogcHJvdG90
eXBlID0gcmFyZURhdGEtPmludGVybmFsRnVuY3Rpb25BbGxvY2F0aW9uUHJvdG90eXBlKCk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RydWN0dXJlCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJiYgc3RydWN0dXJlLT5jbGFzc0luZm8oKSA9PSBKU0dlbmVyYXRvcjo6aW5mbygp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgc3RydWN0dXJlLT5nbG9iYWxPYmplY3Qo
KSA9PSBnbG9iYWxPYmplY3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAoc3RydWN0
dXJlLT5oYXNNb25vUHJvdG8oKSB8fCBwcm90b3R5cGUpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJiYgcmFyZURhdGEtPmFsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludFNldCgpLmlzU3Rp
bGxWYWxpZCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5mcmVlemUo
cmFyZURhdGEpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgud2F0Y2hwb2lu
dHMoKS5hZGRMYXppbHkocmFyZURhdGEtPmFsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludFNldCgp
KTsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBjYWxsZWUgaXMgc3RpbGwg
bGl2ZSB1cCB0byB0aGlzIHBvaW50LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZFRv
R3JhcGgoUGhhbnRvbSwgY2FsbGVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb2Rl
KiBnZW5lcmF0b3IgPSBhZGRUb0dyYXBoKE5ld0dlbmVyYXRvciwgT3BJbmZvKG1fZ3JhcGgucmVn
aXN0ZXJTdHJ1Y3R1cmUoc3RydWN0dXJlKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChzdHJ1Y3R1cmUtPmhhc1BvbHlQcm90bygpKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFN0b3JhZ2VBY2Nlc3NEYXRhKiBkYXRhID0gbV9ncmFwaC5tX3N0b3JhZ2VBY2Nl
c3NEYXRhLmFkZCgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLT5vZmZz
ZXQgPSBrbm93blBvbHlQcm90b09mZnNldDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZGF0YS0+aWRlbnRpZmllck51bWJlciA9IG1fZ3JhcGguaWRlbnRpZmllcnMoKS5lbnN1cmUo
bV9ncmFwaC5tX3ZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnBvbHlQcm90b05hbWUo
KS5pbXBsKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQoaXNJbmxp
bmVPZmZzZXQoa25vd25Qb2x5UHJvdG9PZmZzZXQpKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYWRkVG9HcmFwaChQdXRCeU9mZnNldCwgT3BJbmZvKGRhdGEpLCBnZW5lcmF0b3Is
IGdlbmVyYXRvciwgd2Vha0pTQ29uc3RhbnQocHJvdG90eXBlKSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldChWaXJ0dWFsUmVn
aXN0ZXIoYnl0ZWNvZGUubV9kc3QpLCBnZW5lcmF0b3IpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGFscmVhZHlFbWl0dGVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGlmICghYWxyZWFkeUVtaXR0ZWQpCisgICAgICAgICAgICAgICAgc2V0KFZp
cnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2RzdCksIGFkZFRvR3JhcGgoQ3JlYXRlR2VuZXJhdG9y
LCBjYWxsZWUpKTsKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2NyZWF0ZV9nZW5lcmF0b3Ip
OworICAgICAgICB9CisKICAgICAgICAgY2FzZSBvcF9uZXdfb2JqZWN0OiB7CiAgICAgICAgICAg
ICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcE5ld09iamVjdD4oKTsK
ICAgICAgICAgICAgIHNldChieXRlY29kZS5tX2RzdCwKQEAgLTQ5NTMsNiArNTAwOSwxMyBAQCB2
b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAg
ICAgc2V0KGJ5dGVjb2RlLm1fZHN0LCBhZGRUb0dyYXBoKE5ld1Byb21pc2UsIE9wSW5mbyhtX2dy
YXBoLnJlZ2lzdGVyU3RydWN0dXJlKGJ5dGVjb2RlLm1faXNJbnRlcm5hbFByb21pc2UgPyBnbG9i
YWxPYmplY3QtPmludGVybmFsUHJvbWlzZVN0cnVjdHVyZSgpIDogZ2xvYmFsT2JqZWN0LT5wcm9t
aXNlU3RydWN0dXJlKCkpKSwgT3BJbmZvKGJ5dGVjb2RlLm1faXNJbnRlcm5hbFByb21pc2UpKSk7
CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9uZXdfcHJvbWlzZSk7CiAgICAgICAgIH0KKwor
ICAgICAgICBjYXNlIG9wX25ld19nZW5lcmF0b3I6IHsKKyAgICAgICAgICAgIGF1dG8gYnl0ZWNv
ZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wTmV3R2VuZXJhdG9yPigpOworICAgICAgICAg
ICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KGN1cnJlbnROb2RlT3JpZ2luKCkuc2VtYW50aWMpOworICAgICAgICAgICAgc2V0KGJ5dGVjb2Rl
Lm1fZHN0LCBhZGRUb0dyYXBoKE5ld0dlbmVyYXRvciwgT3BJbmZvKG1fZ3JhcGgucmVnaXN0ZXJT
dHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5nZW5lcmF0b3JTdHJ1Y3R1cmUoKSkpKSk7CisgICAgICAg
ICAgICBORVhUX09QQ09ERShvcF9uZXdfZ2VuZXJhdG9yKTsKKyAgICAgICAgfQogICAgICAgICAg
ICAgCiAgICAgICAgIGNhc2Ugb3BfbmV3X2FycmF5OiB7CiAgICAgICAgICAgICBhdXRvIGJ5dGVj
b2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcE5ld0FycmF5PigpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCmluZGV4IGMwZWU5OGFlYTgzOGQ3
MjU2ZTZiNzU0YjU0NTc0YmI4ZDZlOWY5ZmEuLjcxZWM3ZjE2Mjg0OTVlYjJjODQwNDU5NTE3ODU3
MTAyZjFkOGU0MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2Fw
YWJpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxp
dGllcy5jcHAKQEAgLTExNyw2ICsxMTcsNyBAQCBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxl
dmVsKE9wY29kZUlEIG9wY29kZUlELCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgSQogICAg
IGNhc2Ugb3BfY2hlY2tfdGR6OgogICAgIGNhc2Ugb3BfY3JlYXRlX3RoaXM6CiAgICAgY2FzZSBv
cF9jcmVhdGVfcHJvbWlzZToKKyAgICBjYXNlIG9wX2NyZWF0ZV9nZW5lcmF0b3I6CiAgICAgY2Fz
ZSBvcF9iaXRub3Q6CiAgICAgY2FzZSBvcF9iaXRhbmQ6CiAgICAgY2FzZSBvcF9iaXRvcjoKQEAg
LTIxMiw2ICsyMTMsNyBAQCBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsKE9wY29kZUlE
IG9wY29kZUlELCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgSQogICAgIGNhc2Ugb3BfZW5k
OgogICAgIGNhc2Ugb3BfbmV3X29iamVjdDoKICAgICBjYXNlIG9wX25ld19wcm9taXNlOgorICAg
IGNhc2Ugb3BfbmV3X2dlbmVyYXRvcjoKICAgICBjYXNlIG9wX25ld19hcnJheToKICAgICBjYXNl
IG9wX25ld19hcnJheV93aXRoX3NpemU6CiAgICAgY2FzZSBvcF9uZXdfYXJyYXlfYnVmZmVyOgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAppbmRleCBjMWI3YTBiYzIy
MWNmNDg0MWM2ZDQzMWFjNGU1Y2U1YWRhMWY3MWEwLi5iOGMxNzFkM2E3NmNkYzMzODMyOWQ4OTFh
ZWI1YmUwNzZiMjRkZjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Nsb2JiZXJpemUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJp
emUuaApAQCAtNjY3LDYgKzY2Nyw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5v
ZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgY2Fz
ZSBOdW1iZXJUb1N0cmluZ1dpdGhSYWRpeDoKICAgICBjYXNlIENyZWF0ZVRoaXM6CiAgICAgY2Fz
ZSBDcmVhdGVQcm9taXNlOgorICAgIGNhc2UgQ3JlYXRlR2VuZXJhdG9yOgogICAgIGNhc2UgSW5z
dGFuY2VPZjoKICAgICBjYXNlIFN0cmluZ1ZhbHVlT2Y6CiAgICAgY2FzZSBPYmplY3RLZXlzOgpA
QCAtMTU2NSw2ICsxNTY2LDcgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSog
bm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKIAogICAgIGNhc2Ug
TmV3T2JqZWN0OgogICAgIGNhc2UgTmV3UHJvbWlzZToKKyAgICBjYXNlIE5ld0dlbmVyYXRvcjoK
ICAgICBjYXNlIE5ld1JlZ2V4cDoKICAgICBjYXNlIE5ld1N5bWJvbDoKICAgICBjYXNlIE5ld1N0
cmluZ09iamVjdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xv
YmJlcnNFeGl0U3RhdGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVy
c0V4aXRTdGF0ZS5jcHAKaW5kZXggMzcwZmQxZGMyYzVjMTQ3NmM3YjVhNTNjZmRjMmRiN2MxZjRl
MDFjNC4uZDJmN2JhNDc4ZDhlYzgzNGNkMjUwOGQ1M2JkOWZhMTRkMjgwMDkwZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHAKQEAg
LTU4LDYgKzU4LDcgQEAgYm9vbCBjbG9iYmVyc0V4aXRTdGF0ZShHcmFwaCYgZ3JhcGgsIE5vZGUq
IG5vZGUpCiAgICAgY2FzZSBBcnJheWlmeToKICAgICBjYXNlIE5ld09iamVjdDoKICAgICBjYXNl
IE5ld1Byb21pc2U6CisgICAgY2FzZSBOZXdHZW5lcmF0b3I6CiAgICAgY2FzZSBOZXdSZWdleHA6
CiAgICAgY2FzZSBOZXdTeW1ib2w6CiAgICAgY2FzZSBOZXdTdHJpbmdPYmplY3Q6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3Bw
CmluZGV4IDk5ZDg3NWU2NmE2YjcwZmJlNTI4ODFlMDAxMTdhNzA4YmVhNDNiZDAuLjliYWZkZmJi
YzFmOTk1NThhOTI3NjE2MjA1MmUxOGFmOGIzZTExZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCkBAIC03NzgsNiAr
Nzc4LDQ3IEBAIGNsYXNzIENvbnN0YW50Rm9sZGluZ1BoYXNlIDogcHVibGljIFBoYXNlIHsKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KIAorICAgICAgICAgICAgY2FzZSBD
cmVhdGVHZW5lcmF0b3I6IHsKKyAgICAgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsK
KyAgICAgICAgICAgICAgICBpZiAoSlNWYWx1ZSBiYXNlID0gbV9zdGF0ZS5mb3JOb2RlKG5vZGUt
PmNoaWxkMSgpKS5tX3ZhbHVlKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChhdXRvKiBmdW5j
dGlvbiA9IGpzRHluYW1pY0Nhc3Q8SlNGdW5jdGlvbio+KG1fZ3JhcGgubV92bSwgYmFzZSkpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChGdW5jdGlvblJhcmVEYXRhKiByYXJlRGF0YSA9
IGZ1bmN0aW9uLT5yYXJlRGF0YSgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KHJhcmVEYXRhLT5hbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnRTZXQoKS5pc1N0aWxsVmFsaWQo
KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSA9IHJhcmVEYXRhLT5pbnRlcm5hbEZ1bmN0aW9uQWxsb2NhdGlvblN0cnVjdHVyZSgpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKU09iamVjdCogcHJvdG90eXBlID0gcmFyZURh
dGEtPmludGVybmFsRnVuY3Rpb25BbGxvY2F0aW9uUHJvdG90eXBlKCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChzdHJ1Y3R1cmUKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICYmIHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCkgPT0gSlNHZW5lcmF0b3I6Omlu
Zm8oKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgc3RydWN0dXJlLT5n
bG9iYWxPYmplY3QoKSA9PSBnbG9iYWxPYmplY3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICYmIChzdHJ1Y3R1cmUtPmhhc01vbm9Qcm90bygpIHx8IHByb3RvdHlwZSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIHJhcmVEYXRhLT5hbGxvY2F0aW9u
UHJvZmlsZVdhdGNocG9pbnRTZXQoKS5pc1N0aWxsVmFsaWQoKSkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5mcmVlemUocmFyZURhdGEpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC53YXRjaHBvaW50cygpLmFkZExhemls
eShyYXJlRGF0YS0+YWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50U2V0KCkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvTmV3R2VuZXJhdG9yKG1f
Z3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUoc3RydWN0dXJlKSk7CisKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChzdHJ1Y3R1cmUtPmhhc1BvbHlQcm90bygpKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RvcmFnZUFjY2Vzc0RhdGEqIGRh
dGEgPSBtX2dyYXBoLm1fc3RvcmFnZUFjY2Vzc0RhdGEuYWRkKCk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS0+b2Zmc2V0ID0ga25vd25Qb2x5UHJvdG9PZmZz
ZXQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS0+aWRlbnRp
Zmllck51bWJlciA9IG1fZ3JhcGguaWRlbnRpZmllcnMoKS5lbnN1cmUobV9ncmFwaC5tX3ZtLnBy
b3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnBvbHlQcm90b05hbWUoKS5pbXBsKCkpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vZGVPcmlnaW4gb3JpZ2luID0g
bm9kZS0+b3JpZ2luLndpdGhJbnZhbGlkRXhpdCgpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIE5vZGUqIHByb3RvdHlwZU5vZGUgPSBtX2luc2VydGlvblNldC5pbnNl
cnRDb25zdGFudCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW5kZXhJbkJsb2NrICsgMSwgb3JpZ2luLCBtX2dyYXBoLmZyZWV6ZShwcm90b3R5cGUpKTsKKwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChpc0lubGluZU9m
ZnNldChrbm93blBvbHlQcm90b09mZnNldCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4SW5CbG9jayArIDEsIFNwZWNOb25lLCBQ
dXRCeU9mZnNldCwgb3JpZ2luLCBPcEluZm8oZGF0YSksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEVkZ2Uobm9kZSwgS25vd25DZWxsVXNlKSwgRWRnZShub2Rl
LCBLbm93bkNlbGxVc2UpLCBFZGdlKHByb3RvdHlwZU5vZGUsIFVudHlwZWRVc2UpKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgY2FzZSBPYmplY3RDcmVhdGU6IHsK
ICAgICAgICAgICAgICAgICBpZiAoSlNWYWx1ZSBiYXNlID0gbV9zdGF0ZS5mb3JOb2RlKG5vZGUt
PmNoaWxkMSgpKS5tX3ZhbHVlKSB7CiAgICAgICAgICAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0Mu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCmluZGV4IGZiMzEy
MmI3YzI2NWQzYjhlZDFhNmEwMDZiMmRjODI0YTVlNThkNzUuLmJlYTFlMTY2ZTQ5ZTZmZGJhMDM1
Nzc1OGYwNWNlMzU4MWVmY2JhZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRG9lc0dDLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNH
Qy5jcHAKQEAgLTMzMiw2ICszMzIsNyBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUq
IG5vZGUpCiAgICAgY2FzZSBUcnlHZXRCeUlkOgogICAgIGNhc2UgQ3JlYXRlVGhpczoKICAgICBj
YXNlIENyZWF0ZVByb21pc2U6CisgICAgY2FzZSBDcmVhdGVHZW5lcmF0b3I6CiAgICAgY2FzZSBP
YmplY3RDcmVhdGU6CiAgICAgY2FzZSBPYmplY3RLZXlzOgogICAgIGNhc2UgQWxsb2NhdGVQcm9w
ZXJ0eVN0b3JhZ2U6CkBAIC0zNDAsNiArMzQxLDcgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBo
LCBOb2RlKiBub2RlKQogICAgIGNhc2UgQXJyYXlpZnlUb1N0cnVjdHVyZToKICAgICBjYXNlIE5l
d09iamVjdDoKICAgICBjYXNlIE5ld1Byb21pc2U6CisgICAgY2FzZSBOZXdHZW5lcmF0b3I6CiAg
ICAgY2FzZSBOZXdBcnJheToKICAgICBjYXNlIE5ld0FycmF5V2l0aFNwcmVhZDoKICAgICBjYXNl
IFNwcmVhZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQ
aGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmlu
ZGV4IGU0NWFjNWMxZTY0YzczZmUyNjg5YzRlMzhlNGVlMmIxMjVkYzM3MWQuLmE1MDFjZGQ4NDNl
MTBjNGVmMjg4OWM0MDU3MGUwMDBkYjIxNjQ5NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdGaXh1cFBoYXNlLmNwcApAQCAtMTY0Niw2ICsxNjQ2LDcgQEAgY2xhc3MgRml4dXBQ
aGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgIGNhc2UgQ2hlY2tDZWxsOgogICAgICAgICBj
YXNlIENyZWF0ZVRoaXM6CiAgICAgICAgIGNhc2UgQ3JlYXRlUHJvbWlzZToKKyAgICAgICAgY2Fz
ZSBDcmVhdGVHZW5lcmF0b3I6CiAgICAgICAgIGNhc2UgR2V0QnV0dGVyZmx5OiB7CiAgICAgICAg
ICAgICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIGJyZWFr
OwpAQCAtMjQwOCw2ICsyNDA5LDcgQEAgY2xhc3MgRml4dXBQaGFzZSA6IHB1YmxpYyBQaGFzZSB7
CiAgICAgICAgIGNhc2UgUHJvZmlsZUNvbnRyb2xGbG93OgogICAgICAgICBjYXNlIE5ld09iamVj
dDoKICAgICAgICAgY2FzZSBOZXdQcm9taXNlOgorICAgICAgICBjYXNlIE5ld0dlbmVyYXRvcjoK
ICAgICAgICAgY2FzZSBOZXdSZWdleHA6CiAgICAgICAgIGNhc2UgRGVsZXRlQnlJZDoKICAgICAg
ICAgY2FzZSBEZWxldGVCeVZhbDoKQEAgLTI2MzMsNiArMjYzNSw5IEBAIGNsYXNzIEZpeHVwUGhh
c2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgU3BlY0NlbGw6CisgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hv
dWxkU3BlY3VsYXRlQ2VsbCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR05vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCmluZGV4
IDY5ZjA4YzE4NmQ0OGNlYmY2Yzc2Yjg5YTRkNWQ0ODQ0MDdkYjNkMGUuLjkyMmNlMWVjY2YyMGFj
MmQzNzY0MjFiZjA4NDM5Yzc2ZTI4Zjk4MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTm9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZS5oCkBAIC03NjcsNiArNzY3LDE1IEBAIHN0cnVjdCBOb2RlIHsKICAgICAgICAgbV9vcEluZm8y
ID0gaW50ZXJuYWw7CiAgICAgfQogCisgICAgdm9pZCBjb252ZXJ0VG9OZXdHZW5lcmF0b3IoUmVn
aXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUpCisgICAgeworICAgICAgICBBU1NFUlQobV9vcCA9
PSBDcmVhdGVHZW5lcmF0b3IpOworICAgICAgICBzZXRPcEFuZERlZmF1bHRGbGFncyhOZXdHZW5l
cmF0b3IpOworICAgICAgICBjaGlsZHJlbi5yZXNldCgpOworICAgICAgICBtX29wSW5mbyA9IHN0
cnVjdHVyZTsKKyAgICAgICAgbV9vcEluZm8yID0gT3BJbmZvV3JhcHBlcigpOworICAgIH0KKwog
ICAgIHZvaWQgY29udmVydFRvTmV3QXJyYXlCdWZmZXIoRnJvemVuVmFsdWUqIGltbXV0YWJsZUJ1
dHRlcmZseSk7CiAgICAgCiAgICAgdm9pZCBjb252ZXJ0VG9EaXJlY3RDYWxsKEZyb3plblZhbHVl
Kik7CkBAIC0xOTA5LDYgKzE5MTgsNyBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgICAgIGNhc2UgQXJy
YXlpZnlUb1N0cnVjdHVyZToKICAgICAgICAgY2FzZSBOZXdPYmplY3Q6CiAgICAgICAgIGNhc2Ug
TmV3UHJvbWlzZToKKyAgICAgICAgY2FzZSBOZXdHZW5lcmF0b3I6CiAgICAgICAgIGNhc2UgTmV3
U3RyaW5nT2JqZWN0OgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGRlZmF1bHQ6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKaW5kZXggNGQ3MTU4MmUxN2E2
OTFhMDU4YTgzNDcyMjg0ZjYwMTlmOTdkODAzOS4uMDYyY2RjMDg0OTMwZDc0YTAyYTcyYTMwYmU5
NjBmNmYxODUwM2RmMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaApA
QCAtNTQsNiArNTQsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFj
cm8oVG9UaGlzLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhDcmVhdGVUaGlzLCBOb2RlUmVz
dWx0SlMpIC8qIE5vdGUgdGhpcyBpcyBub3QgTXVzdEdlbmVyYXRlIHNpbmNlIHdlJ3JlIHJldHVy
bmluZyBpdCBhbnl3YXkuICovIFwKICAgICBtYWNybyhDcmVhdGVQcm9taXNlLCBOb2RlUmVzdWx0
SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oQ3JlYXRlR2VuZXJhdG9yLCBOb2Rl
UmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oR2V0Q2FsbGVlLCBOb2Rl
UmVzdWx0SlMpIFwKICAgICBtYWNybyhTZXRDYWxsZWUsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAg
ICBtYWNybyhHZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgTm9kZVJlc3VsdEludDMyKSBc
CkBAIC0zNDAsNiArMzQxLDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAg
IC8qIEFsbG9jYXRpb25zLiAqL1wKICAgICBtYWNybyhOZXdPYmplY3QsIE5vZGVSZXN1bHRKUykg
XAogICAgIG1hY3JvKE5ld1Byb21pc2UsIE5vZGVSZXN1bHRKUykgXAorICAgIG1hY3JvKE5ld0dl
bmVyYXRvciwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oTmV3QXJyYXksIE5vZGVSZXN1bHRK
UyB8IE5vZGVIYXNWYXJBcmdzKSBcCiAgICAgbWFjcm8oTmV3QXJyYXlXaXRoU3ByZWFkLCBOb2Rl
UmVzdWx0SlMgfCBOb2RlSGFzVmFyQXJncykgXAogICAgIG1hY3JvKE5ld0FycmF5V2l0aFNpemUs
IE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCmluZGV4IGFmYTI4MjIwZGNmMzAyNDQxNDQxNTkzZTM1
NzNkODllM2FkNTAzM2QuLjZkMzkxNTNmZDljZDRhMzRlMGZlNmVkNzcxN2ZmMDY1NGRhNTBlM2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcApAQCAtNDUs
NiArNDUsNyBAQAogI2luY2x1ZGUgIkZyYW1lVHJhY2Vycy5oIgogI2luY2x1ZGUgIkhhc093blBy
b3BlcnR5Q2FjaGUuaCIKICNpbmNsdWRlICJIb3N0Q2FsbFJldHVyblZhbHVlLmgiCisjaW5jbHVk
ZSAiSW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25Qcm9maWxlSW5saW5lcy5oIgogI2luY2x1ZGUg
IkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSklURXhjZXB0aW9u
cy5oIgpAQCAtMzk4LDYgKzM5OSw0MSBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
Q3JlYXRlSW50ZXJuYWxQcm9taXNlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqCiAgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU0ludGVybmFsUHJvbWlzZTo6Y3JlYXRlKHZtLCBzdHJ1
Y3R1cmUpKTsKIH0KIAorSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZUdlbmVy
YXRvcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBjb25zdHJ1Y3RvckFzT2JqZWN0LCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFN0cnVjdHVyZSogYmFzZVN0cnVjdHVy
ZSA9IGdsb2JhbE9iamVjdC0+Z2VuZXJhdG9yU3RydWN0dXJlKCk7CisgICAgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUgPSBiYXNlU3RydWN0dXJlOworICAgIEpTRnVuY3Rpb24qIGNvbnN0cnVjdG9yID0g
anNEeW5hbWljQ2FzdDxKU0Z1bmN0aW9uKj4odm0sIGNvbnN0cnVjdG9yQXNPYmplY3QpOworICAg
IGlmIChjb25zdHJ1Y3RvciAmJiBqc0Nhc3Q8SlNGdW5jdGlvbio+KGNvbnN0cnVjdG9yKS0+Y2Fu
VXNlQWxsb2NhdGlvblByb2ZpbGUoKSkgeworICAgICAgICBzdHJ1Y3R1cmUgPSBjb25zdHJ1Y3Rv
ci0+cmFyZURhdGEodm0pLT5pbnRlcm5hbEZ1bmN0aW9uQWxsb2NhdGlvblN0cnVjdHVyZSgpOwor
ICAgICAgICBpZiAoTElLRUxZKHN0cnVjdHVyZSAmJiBzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpID09
IGJhc2VTdHJ1Y3R1cmUtPmNsYXNzSW5mbygpICYmIHN0cnVjdHVyZS0+Z2xvYmFsT2JqZWN0KCkg
PT0gZ2xvYmFsT2JqZWN0KSkKKyAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwg
SlNHZW5lcmF0b3I6OmNyZWF0ZSh2bSwgc3RydWN0dXJlKSk7CisKKyAgICAgICAgSlNWYWx1ZSBw
cm90b3R5cGVWYWx1ZSA9IGNvbnN0cnVjdG9yLT5nZXQoZXhlYywgdm0ucHJvcGVydHlOYW1lcy0+
cHJvdG90eXBlKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7
CisgICAgICAgIGlmIChKU09iamVjdCogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxKU09iamVj
dCo+KHZtLCBwcm90b3R5cGVWYWx1ZSkpIHsKKyAgICAgICAgICAgIGJvb2wgY2FuQmVQb2x5UHJv
dG8gPSB0cnVlOworICAgICAgICAgICAgc3RydWN0dXJlID0gY29uc3RydWN0b3ItPnJhcmVEYXRh
KHZtKS0+aW5pdGlhbGl6ZUludGVybmFsRnVuY3Rpb25BbGxvY2F0aW9uU3RydWN0dXJlRnJvbUJh
c2Uodm0sIGdsb2JhbE9iamVjdCwgY29uc3RydWN0b3IsIHByb3RvdHlwZSwgYmFzZVN0cnVjdHVy
ZSwgY2FuQmVQb2x5UHJvdG8pOworICAgICAgICAgICAgaWYgKHN0cnVjdHVyZS0+aGFzUG9seVBy
b3RvKCkpIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQocHJvdG90eXBlID09IGNvbnN0cnVjdG9y
LT5wcm90b3R5cGVGb3JDb25zdHJ1Y3Rpb24odm0sIGV4ZWMpKTsKKyAgICAgICAgICAgICAgICBK
U0dlbmVyYXRvciogcmVzdWx0ID0gSlNHZW5lcmF0b3I6OmNyZWF0ZSh2bSwgc3RydWN0dXJlKTsK
KyAgICAgICAgICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwga25vd25Qb2x5UHJvdG9PZmZz
ZXQsIHByb3RvdHlwZSk7CisgICAgICAgICAgICAgICAgcHJvdG90eXBlLT5kaWRCZWNvbWVQcm90
b3R5cGUoKTsKKyAgICAgICAgICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFoYXNJbmRleGVk
UHJvcGVydGllcyhyZXN1bHQtPmluZGV4aW5nVHlwZSgpKSwgIldlIHJlbHkgb24gSlNHZW5lcmF0
b3Igbm90IHN0YXJ0aW5nIG91dCB3aXRoIGFuIGluZGV4aW5nIHR5cGUgb3RoZXJ3aXNlIHdlIHdv
dWxkIHBvdGVudGlhbGx5IG5lZWQgdG8gY29udmVydCB0byBzbG93IHB1dCBzdG9yYWdlIik7Cisg
ICAgICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCByZXN1bHQpOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgc3RydWN0dXJlID0gSW50
ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoZXhlYywgbnVsbHB0ciwgY29u
c3RydWN0b3JBc09iamVjdCwgZ2xvYmFsT2JqZWN0LT5nZW5lcmF0b3JTdHJ1Y3R1cmUoKSk7Cisg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOworICAgIH0KKworICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNHZW5lcmF0b3I6OmNyZWF0ZSh2bSwgc3RydWN0
dXJlKSk7Cit9CisKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25DYWxsT2JqZWN0Q29u
c3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVGFyZ2V0KQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCmluZGV4IGI5OGU2MjE3
NWM2NmYzNmUzNjRkNThlOWRjODA2YWQwNTJkYzY1MmIuLjc0NGE1MGRiZmVmODI3NWUyOWFmNzI5
NjljNjg2NGEzNjYyYzU3MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0
aW9ucy5oCkBAIC01MCw2ICs1MCw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25P
YmplY3RDcmVhdGVPYmplY3QoRXhlY1N0YXRlKiwgSlNPYmplY3QqKSBXVEZfSU5UCiBKU0NlbGwq
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlVGhpcyhFeGVjU3RhdGUqLCBKU09iamVjdCog
Y29uc3RydWN0b3IsIHVpbnQzMl90IGlubGluZUNhcGFjaXR5KSBXVEZfSU5URVJOQUw7CiBKU0Nl
bGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlUHJvbWlzZShFeGVjU3RhdGUqLCBKU09i
amVjdCogY29uc3RydWN0b3IsIEpTR2xvYmFsT2JqZWN0KikgV1RGX0lOVEVSTkFMOwogSlNDZWxs
KiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZUludGVybmFsUHJvbWlzZShFeGVjU3RhdGUq
LCBKU09iamVjdCogY29uc3RydWN0b3IsIEpTR2xvYmFsT2JqZWN0KikgV1RGX0lOVEVSTkFMOwor
SlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZUdlbmVyYXRvcihFeGVjU3RhdGUq
LCBKU09iamVjdCogY29uc3RydWN0b3IsIEpTR2xvYmFsT2JqZWN0KikgV1RGX0lOVEVSTkFMOwog
RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Ub1RoaXMoRXhlY1N0YXRlKiwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSkgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25Ub1RoaXNTdHJpY3QoRXhlY1N0YXRlKiwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZE9wMSkgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25WYWx1ZU1vZChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
T3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKSBXVEZfSU5URVJOQUw7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9u
UGhhc2UuY3BwCmluZGV4IDQ4YTQxYjMwNzJiNzY3NjM2MTkxMDQ1M2E0ZGU0ZjVhYWViNTRiYWIu
LmYyMDljNGE2Zjc0NzFiZGFlMmU4ZmRiM2E3ODcwNzJlMTQwYzg3ZDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9u
UGhhc2UuY3BwCkBAIC0xMDE0LDYgKzEwMTQsMTEgQEAgY2xhc3MgUHJlZGljdGlvblByb3BhZ2F0
aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICBjYXNlIE5ld1Byb21pc2U6CiAgICAg
ICAgICAgICBzZXRQcmVkaWN0aW9uKFNwZWNQcm9taXNlT2JqZWN0KTsKICAgICAgICAgICAgIGJy
ZWFrOworCisgICAgICAgIGNhc2UgQ3JlYXRlR2VuZXJhdG9yOgorICAgICAgICBjYXNlIE5ld0dl
bmVyYXRvcjoKKyAgICAgICAgICAgIHNldFByZWRpY3Rpb24oU3BlY09iamVjdE90aGVyKTsKKyAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgQXJyYXlTbGljZToK
ICAgICAgICAgY2FzZSBOZXdBcnJheVdpdGhTcHJlYWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCmluZGV4IGNhOGFlYTMwYTM1MjY2YzY3NTQ1OWI5YjVl
ZjU0NTJjNTMxNzZkNWQuLjA5NWUxNWFkOWQzNjczZThmYzg5Njc5MjRiZWE4NGUyODg4MDM5YjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCkBAIC0x
NzksNiArMTc5LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0
ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBib29sIGlnbm8KICAgICBjYXNlIFRvVGhpczoK
ICAgICBjYXNlIENyZWF0ZVRoaXM6CiAgICAgY2FzZSBDcmVhdGVQcm9taXNlOgorICAgIGNhc2Ug
Q3JlYXRlR2VuZXJhdG9yOgogICAgIGNhc2UgT2JqZWN0Q3JlYXRlOgogICAgIGNhc2UgT2JqZWN0
S2V5czoKICAgICBjYXNlIEdldENhbGxlZToKQEAgLTMyMSw2ICszMjIsNyBAQCBib29sIHNhZmVU
b0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5v
ZGUsIGJvb2wgaWdubwogICAgIGNhc2UgQ29uc3RydWN0Rm9yd2FyZFZhcmFyZ3M6CiAgICAgY2Fz
ZSBOZXdPYmplY3Q6CiAgICAgY2FzZSBOZXdQcm9taXNlOgorICAgIGNhc2UgTmV3R2VuZXJhdG9y
OgogICAgIGNhc2UgTmV3QXJyYXk6CiAgICAgY2FzZSBOZXdBcnJheVdpdGhTaXplOgogICAgIGNh
c2UgTmV3QXJyYXlCdWZmZXI6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwCmluZGV4IDI3Y2MxYjQ1N2E4OWYzZDQzNTMwMmVhMDczMTI1ZmYxM2Yz
OGVjZmMuLmE1YjEwN2UwODA4MjNlMDE3NjhhY2M3ODdhNWQyMmVjZGFlODIyZDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC03MjI2
LDYgKzcyMjYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3RnVuY3Rpb25Db21t
b24oR1BSUmVnIHJlc3VsdEdQUiwgUmVnaXN0ZXJlZFN0cnVjdAogICAgICAgICBtX2ppdC5zdG9y
ZVB0cihUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCBKSVRDb21waWxlcjo6QWRkcmVzcyhzY3JhdGNo
MUdQUiwgb2JqZWN0QWxsb2NhdGlvblByb2ZpbGVPZmZzZXQgKyBPYmplY3RBbGxvY2F0aW9uUHJv
ZmlsZVdpdGhQcm90b3R5cGU6Om9mZnNldE9mUHJvdG90eXBlKCkpKTsKICAgICAgICAgbV9qaXQu
c3RvcmVQdHIoVHJ1c3RlZEltbVB0cigweDEpLCBKSVRDb21waWxlcjo6QWRkcmVzcyhzY3JhdGNo
MUdQUiwgRnVuY3Rpb25SYXJlRGF0YTo6b2Zmc2V0T2ZBbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9p
bnRTZXQoKSkpOwogICAgICAgICBtX2ppdC5zdG9yZVB0cihUcnVzdGVkSW1tUHRyKG51bGxwdHIp
LCBKSVRDb21waWxlcjo6QWRkcmVzcyhzY3JhdGNoMUdQUiwgRnVuY3Rpb25SYXJlRGF0YTo6b2Zm
c2V0T2ZJbnRlcm5hbEZ1bmN0aW9uQWxsb2NhdGlvblByb2ZpbGUoKSArIEludGVybmFsRnVuY3Rp
b25BbGxvY2F0aW9uUHJvZmlsZTo6b2Zmc2V0T2ZTdHJ1Y3R1cmUoKSkpOworICAgICAgICBtX2pp
dC5zdG9yZVB0cihUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCBKSVRDb21waWxlcjo6QWRkcmVzcyhz
Y3JhdGNoMUdQUiwgRnVuY3Rpb25SYXJlRGF0YTo6b2Zmc2V0T2ZJbnRlcm5hbEZ1bmN0aW9uQWxs
b2NhdGlvblByb2ZpbGUoKSArIEludGVybmFsRnVuY3Rpb25BbGxvY2F0aW9uUHJvZmlsZTo6b2Zm
c2V0T2ZQcm90b3R5cGUoKSkpOwogICAgICAgICBtX2ppdC5zdG9yZVB0cihUcnVzdGVkSW1tUHRy
KG51bGxwdHIpLCBKSVRDb21waWxlcjo6QWRkcmVzcyhzY3JhdGNoMUdQUiwgRnVuY3Rpb25SYXJl
RGF0YTo6b2Zmc2V0T2ZCb3VuZEZ1bmN0aW9uU3RydWN0dXJlKCkpKTsKICAgICAgICAgbV9qaXQu
c3RvcmVQdHIoVHJ1c3RlZEltbVB0cihudWxscHRyKSwgSklUQ29tcGlsZXI6OkFkZHJlc3Moc2Ny
YXRjaDFHUFIsIEZ1bmN0aW9uUmFyZURhdGE6Om9mZnNldE9mQWxsb2NhdGlvblByb2ZpbGVDbGVh
cmluZ1dhdGNocG9pbnQoKSkpOwogICAgICAgICBtX2ppdC5zdG9yZTgoVHJ1c3RlZEltbTMyKDAp
LCBKSVRDb21waWxlcjo6QWRkcmVzcyhzY3JhdGNoMUdQUiwgRnVuY3Rpb25SYXJlRGF0YTo6b2Zm
c2V0T2ZIYXNSZWlmaWVkTGVuZ3RoKCkpKTsKQEAgLTEyNzY2LDYgKzEyNzY3LDUwIEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVQcm9taXNlKE5vZGUqIG5vZGUpCiAgICAgY2Vs
bFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogfQogCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlQ3JlYXRlR2VuZXJhdG9yKE5vZGUqIG5vZGUpCit7CisgICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCA9IG1faml0Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
OworCisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgY2FsbGVlKHRoaXMsIG5vZGUtPmNoaWxkMSgp
KTsKKyAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworICAgIEdQUlRlbXBvcmFyeSBzdHJ1
Y3R1cmUodGhpcyk7CisgICAgR1BSVGVtcG9yYXJ5IHJhcmVEYXRhKHRoaXMpOworICAgIEdQUlRl
bXBvcmFyeSBzY3JhdGNoMSh0aGlzKTsKKyAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDIodGhpcyk7
CisKKyAgICBHUFJSZWcgY2FsbGVlR1BSID0gY2FsbGVlLmdwcigpOworICAgIEdQUlJlZyByZXN1
bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisgICAgR1BSUmVnIHN0cnVjdHVyZUdQUiA9IHN0cnVjdHVy
ZS5ncHIoKTsKKyAgICBHUFJSZWcgc2NyYXRjaDFHUFIgPSBzY3JhdGNoMS5ncHIoKTsKKyAgICBH
UFJSZWcgc2NyYXRjaDJHUFIgPSBzY3JhdGNoMi5ncHIoKTsKKyAgICBHUFJSZWcgcmFyZURhdGFH
UFIgPSByYXJlRGF0YS5ncHIoKTsKKworICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBzbG93
Q2FzZXM7CisKKyAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaElmTm90RnVuY3Rpb24o
Y2FsbGVlR1BSKSk7CisgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhjYWxs
ZWVHUFIsIEpTRnVuY3Rpb246Om9mZnNldE9mUmFyZURhdGEoKSksIHJhcmVEYXRhR1BSKTsKKyAg
ICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Olpl
cm8sIHJhcmVEYXRhR1BSKSk7CisgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVz
cyhyYXJlRGF0YUdQUiwgRnVuY3Rpb25SYXJlRGF0YTo6b2Zmc2V0T2ZJbnRlcm5hbEZ1bmN0aW9u
QWxsb2NhdGlvblByb2ZpbGUoKSArIEludGVybmFsRnVuY3Rpb25BbGxvY2F0aW9uUHJvZmlsZTo6
b2Zmc2V0T2ZTdHJ1Y3R1cmUoKSksIHN0cnVjdHVyZUdQUik7CisgICAgbV9qaXQubW92ZShUcnVz
dGVkSW1tUHRyKEpTR2VuZXJhdG9yOjppbmZvKCkpLCBzY3JhdGNoMUdQUik7CisgICAgc2xvd0Nh
c2VzLmFwcGVuZChtX2ppdC5icmFuY2hQdHIoQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwgc2NyYXRj
aDFHUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHJ1Y3R1cmVHUFIsIFN0cnVjdHVyZTo6Y2xh
c3NJbmZvT2Zmc2V0KCkpKSk7CisgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyOjp3ZWFrUG9p
bnRlcihtX2ppdC5ncmFwaCgpLCBnbG9iYWxPYmplY3QpLCBzY3JhdGNoMUdQUik7CisgICAgc2xv
d0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hQdHIoQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwgc2Ny
YXRjaDFHUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHJ1Y3R1cmVHUFIsIFN0cnVjdHVyZTo6
Z2xvYmFsT2JqZWN0T2Zmc2V0KCkpKSk7CisKKyAgICBhdXRvIGJ1dHRlcmZseSA9IFRydXN0ZWRJ
bW1QdHIobnVsbHB0cik7CisgICAgZW1pdEFsbG9jYXRlSlNPYmplY3RXaXRoS25vd25TaXplPEpT
R2VuZXJhdG9yPihyZXN1bHRHUFIsIHN0cnVjdHVyZUdQUiwgYnV0dGVyZmx5LCBzY3JhdGNoMUdQ
Uiwgc2NyYXRjaDJHUFIsIHNsb3dDYXNlcywgc2l6ZW9mKEpTR2VuZXJhdG9yKSk7CisgICAgbV9q
aXQubG9hZFZhbHVlKENDYWxsSGVscGVyczo6QWRkcmVzcyhyYXJlRGF0YUdQUiwgRnVuY3Rpb25S
YXJlRGF0YTo6b2Zmc2V0T2ZJbnRlcm5hbEZ1bmN0aW9uQWxsb2NhdGlvblByb2ZpbGUoKSArIElu
dGVybmFsRnVuY3Rpb25BbGxvY2F0aW9uUHJvZmlsZTo6b2Zmc2V0T2ZQcm90b3R5cGUoKSksIEpT
VmFsdWVSZWdzIHsgc2NyYXRjaDFHUFIgfSk7CisgICAgbV9qaXQuc3RvcmVWYWx1ZShKU1ZhbHVl
UmVncyB7IHNjcmF0Y2gxR1BSIH0sIENDYWxsSGVscGVyczo6QWRkcmVzcyhyZXN1bHRHUFIsIEpT
SW50ZXJuYWxGaWVsZE9iamVjdEltcGw8Pjo6b2Zmc2V0T2ZJbnRlcm5hbEZpZWxkKHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0dlbmVyYXRvcjo6RmllbGQ6OlBvbHlQcm90bykpKSk7CisgICAgbV9q
aXQuc3RvcmVUcnVzdGVkVmFsdWUoanNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5l
cmF0b3I6OkdlbmVyYXRvclN0YXRlOjpJbml0KSksIENDYWxsSGVscGVyczo6QWRkcmVzcyhyZXN1
bHRHUFIsIEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGw8Pjo6b2Zmc2V0T2ZJbnRlcm5hbEZpZWxk
KHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0dlbmVyYXRvcjo6RmllbGQ6OlN0YXRlKSkpKTsKKyAg
ICBtX2ppdC5zdG9yZVRydXN0ZWRWYWx1ZShqc1VuZGVmaW5lZCgpLCBDQ2FsbEhlbHBlcnM6OkFk
ZHJlc3MocmVzdWx0R1BSLCBKU0ludGVybmFsRmllbGRPYmplY3RJbXBsPD46Om9mZnNldE9mSW50
ZXJuYWxGaWVsZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNHZW5lcmF0b3I6OkZpZWxkOjpOZXh0
KSkpKTsKKyAgICBtX2ppdC5zdG9yZVRydXN0ZWRWYWx1ZShqc1VuZGVmaW5lZCgpLCBDQ2FsbEhl
bHBlcnM6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0ludGVybmFsRmllbGRPYmplY3RJbXBsPD46Om9m
ZnNldE9mSW50ZXJuYWxGaWVsZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNHZW5lcmF0b3I6OkZp
ZWxkOjpUaGlzKSkpKTsKKyAgICBtX2ppdC5zdG9yZVRydXN0ZWRWYWx1ZShqc1VuZGVmaW5lZCgp
LCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0ludGVybmFsRmllbGRPYmplY3RJ
bXBsPD46Om9mZnNldE9mSW50ZXJuYWxGaWVsZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNHZW5l
cmF0b3I6OkZpZWxkOjpGcmFtZSkpKSk7CisgICAgbV9qaXQubXV0YXRvckZlbmNlKG1faml0LnZt
KCkpOworCisgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dDYXNlcywg
dGhpcywgb3BlcmF0aW9uQ3JlYXRlR2VuZXJhdG9yLCByZXN1bHRHUFIsIGNhbGxlZUdQUiwgVHJ1
c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9qaXQuZ3JhcGgoKSwgZ2xvYmFsT2JqZWN0KSkpOwor
CisgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOworfQorCiB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlTmV3T2JqZWN0KE5vZGUqIG5vZGUpCiB7CiAgICAgR1BSVGVtcG9yYXJ5IHJl
c3VsdCh0aGlzKTsKQEAgLTEyODIyLDYgKzEyODY3LDMzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVOZXdQcm9taXNlKE5vZGUqIG5vZGUpCiAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIs
IG5vZGUpOwogfQogCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3R2VuZXJhdG9yKE5v
ZGUqIG5vZGUpCit7CisgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICBHUFJUZW1w
b3Jhcnkgc2NyYXRjaDEodGhpcyk7CisgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2gyKHRoaXMpOwor
CisgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAgICBHUFJSZWcgc2NyYXRj
aDFHUFIgPSBzY3JhdGNoMS5ncHIoKTsKKyAgICBHUFJSZWcgc2NyYXRjaDJHUFIgPSBzY3JhdGNo
Mi5ncHIoKTsKKworICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7CisKKyAg
ICBGcm96ZW5WYWx1ZSogc3RydWN0dXJlID0gbV9ncmFwaC5mcmVlemVTdHJvbmcobm9kZS0+c3Ry
dWN0dXJlKCkuZ2V0KCkpOworICAgIGF1dG8gYnV0dGVyZmx5ID0gVHJ1c3RlZEltbVB0cihudWxs
cHRyKTsKKyAgICBlbWl0QWxsb2NhdGVKU09iamVjdFdpdGhLbm93blNpemU8SlNHZW5lcmF0b3I+
KHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCBidXR0ZXJmbHksIHNjcmF0Y2gx
R1BSLCBzY3JhdGNoMkdQUiwgc2xvd0Nhc2VzLCBzaXplb2YoSlNHZW5lcmF0b3IpKTsKKyAgICBt
X2ppdC5zdG9yZVRydXN0ZWRWYWx1ZShKU1ZhbHVlKCksIENDYWxsSGVscGVyczo6QWRkcmVzcyhy
ZXN1bHRHUFIsIEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGw8Pjo6b2Zmc2V0T2ZJbnRlcm5hbEZp
ZWxkKHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0dlbmVyYXRvcjo6RmllbGQ6OlBvbHlQcm90bykp
KSk7CisgICAgbV9qaXQuc3RvcmVUcnVzdGVkVmFsdWUoanNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50
MzJfdD4oSlNHZW5lcmF0b3I6OkdlbmVyYXRvclN0YXRlOjpJbml0KSksIENDYWxsSGVscGVyczo6
QWRkcmVzcyhyZXN1bHRHUFIsIEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGw8Pjo6b2Zmc2V0T2ZJ
bnRlcm5hbEZpZWxkKHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0dlbmVyYXRvcjo6RmllbGQ6OlN0
YXRlKSkpKTsKKyAgICBtX2ppdC5zdG9yZVRydXN0ZWRWYWx1ZShqc1VuZGVmaW5lZCgpLCBDQ2Fs
bEhlbHBlcnM6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0ludGVybmFsRmllbGRPYmplY3RJbXBsPD46
Om9mZnNldE9mSW50ZXJuYWxGaWVsZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNHZW5lcmF0b3I6
OkZpZWxkOjpOZXh0KSkpKTsKKyAgICBtX2ppdC5zdG9yZVRydXN0ZWRWYWx1ZShqc1VuZGVmaW5l
ZCgpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0ludGVybmFsRmllbGRPYmpl
Y3RJbXBsPD46Om9mZnNldE9mSW50ZXJuYWxGaWVsZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNH
ZW5lcmF0b3I6OkZpZWxkOjpUaGlzKSkpKTsKKyAgICBtX2ppdC5zdG9yZVRydXN0ZWRWYWx1ZShq
c1VuZGVmaW5lZCgpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0ludGVybmFs
RmllbGRPYmplY3RJbXBsPD46Om9mZnNldE9mSW50ZXJuYWxGaWVsZChzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNHZW5lcmF0b3I6OkZpZWxkOjpGcmFtZSkpKSk7CisgICAgbV9qaXQubXV0YXRvckZl
bmNlKG1faml0LnZtKCkpOworCisgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxs
KHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uTmV3R2VuZXJhdG9yLCByZXN1bHRHUFIsIFRydXN0
ZWRJbW1QdHIoc3RydWN0dXJlKSkpOworCisgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUp
OworfQorCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9QcmltaXRpdmUoTm9kZSogbm9k
ZSkKIHsKICAgICBERkdfQVNTRVJUKG1faml0LmdyYXBoKCksIG5vZGUsIG5vZGUtPmNoaWxkMSgp
LnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlLCBub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCmluZGV4IGY5OTFk
ZDIwMTYyNGU2MDNiMjFlZDczZGQwM2M1M2MzYjczMWFkZTIuLjBmMmY1ZTU4OTA4MzJkOTU3OGU4
YTRlMGZjNzFmYTliODY3YTlkMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmgKQEAgLTE0ODQsOCArMTQ4NCwxMCBAQCBjbGFzcyBTcGVjdWxhdGl2
ZUpJVCB7CiAgICAgdm9pZCBjb21waWxlT2JqZWN0Q3JlYXRlKE5vZGUqKTsKICAgICB2b2lkIGNv
bXBpbGVDcmVhdGVUaGlzKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVDcmVhdGVQcm9taXNlKE5v
ZGUqKTsKKyAgICB2b2lkIGNvbXBpbGVDcmVhdGVHZW5lcmF0b3IoTm9kZSopOwogICAgIHZvaWQg
Y29tcGlsZU5ld09iamVjdChOb2RlKik7CiAgICAgdm9pZCBjb21waWxlTmV3UHJvbWlzZShOb2Rl
Kik7CisgICAgdm9pZCBjb21waWxlTmV3R2VuZXJhdG9yKE5vZGUqKTsKICAgICB2b2lkIGNvbXBp
bGVUb1ByaW1pdGl2ZShOb2RlKik7CiAgICAgdm9pZCBjb21waWxlTG9nU2hhZG93Q2hpY2tlblBy
b2xvZ3VlKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVMb2dTaGFkb3dDaGlja2VuVGFpbChOb2Rl
Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDMyXzY0LmNwcAppbmRleCAwOWNmMDk4NDY5OGI5Zjc5Mzc2ZjA1NjQxN2U1NzE2MDM5YWU1NmRi
Li4yOTdhNDA5MjZiZjZkZTUwZTEzM2U5ZTgyZWIwODkzOTJhYWQ3ODNiIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKQEAg
LTMyMDIsNiArMzIwMiwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5v
ZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgQ3JlYXRlR2VuZXJhdG9yOiB7
CisgICAgICAgIGNvbXBpbGVDcmVhdGVHZW5lcmF0b3Iobm9kZSk7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KKwogICAgIGNhc2UgTmV3T2JqZWN0OiB7CiAgICAgICAgIGNvbXBpbGVOZXdPYmplY3Qo
bm9kZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtMzIxMiw2ICszMjE3LDExIEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisg
ICAgY2FzZSBOZXdHZW5lcmF0b3I6IHsKKyAgICAgICAgY29tcGlsZU5ld0dlbmVyYXRvcihub2Rl
KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBHZXRDYWxsZWU6IHsKICAgICAg
ICAgY29tcGlsZUdldENhbGxlZShub2RlKTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAppbmRleCBmMWYwNGMz
Yzk4NzVhNjMxNjVhNjI4ZmY5ZjFjZWRiNWZjNzA2YjM2Li42YjZmZDUyZjNkYTZhM2YzODg4NmE1
MWZlMzU0NmFmMjgzYTI3YzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTM0NzgsNiArMzQ3OCwxMSBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGNvbXBpbGVDcmVhdGVQcm9t
aXNlKG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9CisKKyAgICBjYXNlIENyZWF0ZUdlbmVy
YXRvcjogeworICAgICAgICBjb21waWxlQ3JlYXRlR2VuZXJhdG9yKG5vZGUpOworICAgICAgICBi
cmVhazsKKyAgICB9CiAgICAgICAgIAogICAgIGNhc2UgTmV3T2JqZWN0OiB7CiAgICAgICAgIGNv
bXBpbGVOZXdPYmplY3Qobm9kZSk7CkBAIC0zNDg5LDYgKzM0OTQsMTEgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAg
ICBjYXNlIE5ld0dlbmVyYXRvcjogeworICAgICAgICBjb21waWxlTmV3R2VuZXJhdG9yKG5vZGUp
OworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIEdldENhbGxlZTogewogICAgICAg
ICBjb21waWxlR2V0Q2FsbGVlKG5vZGUpOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFz
ZS5jcHAKaW5kZXggMjRiNTVlNzg4ZDlkZTliNTA2OTk2NzU1NzUzNzczOGIzMzJiZTM1Ny4uMGQ1
OTAxODZkODNiZGI0NzQ1ZWY3YzdjMTU2NzQxMDI0NTIzOWVjNiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFz
ZS5jcHAKQEAgLTMyMiw2ICszMjIsNyBAQCBjbGFzcyBTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFz
ZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICBzd2l0Y2ggKG1fbm9kZS0+b3AoKSkgewog
ICAgICAgICAgICAgY2FzZSBOZXdPYmplY3Q6CiAgICAgICAgICAgICBjYXNlIE5ld1Byb21pc2U6
CisgICAgICAgICAgICBjYXNlIE5ld0dlbmVyYXRvcjoKICAgICAgICAgICAgIGNhc2UgTmV3QXJy
YXk6CiAgICAgICAgICAgICBjYXNlIE5ld0FycmF5V2l0aFNpemU6CiAgICAgICAgICAgICBjYXNl
IE5ld0FycmF5QnVmZmVyOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAppbmRleCA3YjBjODlhOTRjYTMyOGVlOTZlZWUwZjRi
OTZmZTIyN2NkN2QxZGM4Li44MTM1N2ZkNGU4MTljNzFjYWRlODA5MmI5MGI4YjJmMzhjN2ZkZWJh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJl
cG9zaXRvcnkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVh
cFJlcG9zaXRvcnkuaApAQCAtNjIsNiArNjIsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IEZUTCB7CiAgICAgbWFjcm8oRnVuY3Rpb25SYXJlRGF0YV9wcm90b3R5cGUsIEZ1bmN0aW9uUmFy
ZURhdGE6Om9mZnNldE9mT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUoKSArIE9iamVjdEFsbG9jYXRp
b25Qcm9maWxlV2l0aFByb3RvdHlwZTo6b2Zmc2V0T2ZQcm90b3R5cGUoKSkgXAogICAgIG1hY3Jv
KEZ1bmN0aW9uUmFyZURhdGFfYWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50U2V0LCBGdW5jdGlv
blJhcmVEYXRhOjpvZmZzZXRPZkFsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludFNldCgpKSBcCiAg
ICAgbWFjcm8oRnVuY3Rpb25SYXJlRGF0YV9pbnRlcm5hbEZ1bmN0aW9uQWxsb2NhdGlvblByb2Zp
bGVfc3RydWN0dXJlLCBGdW5jdGlvblJhcmVEYXRhOjpvZmZzZXRPZkludGVybmFsRnVuY3Rpb25B
bGxvY2F0aW9uUHJvZmlsZSgpICsgSW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25Qcm9maWxlOjpv
ZmZzZXRPZlN0cnVjdHVyZSgpKSBcCisgICAgbWFjcm8oRnVuY3Rpb25SYXJlRGF0YV9pbnRlcm5h
bEZ1bmN0aW9uQWxsb2NhdGlvblByb2ZpbGVfcHJvdG90eXBlLCBGdW5jdGlvblJhcmVEYXRhOjpv
ZmZzZXRPZkludGVybmFsRnVuY3Rpb25BbGxvY2F0aW9uUHJvZmlsZSgpICsgSW50ZXJuYWxGdW5j
dGlvbkFsbG9jYXRpb25Qcm9maWxlOjpvZmZzZXRPZlByb3RvdHlwZSgpKSBcCiAgICAgbWFjcm8o
RnVuY3Rpb25SYXJlRGF0YV9ib3VuZEZ1bmN0aW9uU3RydWN0dXJlLCBGdW5jdGlvblJhcmVEYXRh
OjpvZmZzZXRPZkJvdW5kRnVuY3Rpb25TdHJ1Y3R1cmUoKSkgXAogICAgIG1hY3JvKEZ1bmN0aW9u
UmFyZURhdGFfYWxsb2NhdGlvblByb2ZpbGVDbGVhcmluZ1dhdGNocG9pbnQsIEZ1bmN0aW9uUmFy
ZURhdGE6Om9mZnNldE9mQWxsb2NhdGlvblByb2ZpbGVDbGVhcmluZ1dhdGNocG9pbnQoKSkgXAog
ICAgIG1hY3JvKEZ1bmN0aW9uUmFyZURhdGFfaGFzUmVpZmllZExlbmd0aCwgRnVuY3Rpb25SYXJl
RGF0YTo6b2Zmc2V0T2ZIYXNSZWlmaWVkTGVuZ3RoKCkpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAppbmRleCA4NDVjNDE3ZWNkYjE0YmY1MGE0NWY1
ZThlMDllM2FlMjM5OWY5ZDgwLi5lYTg0MmMwNjEyYzZjY2I5YzUwOGVhNTEzNjAwODYwZGM3N2Zj
MzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGll
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3Bw
CkBAIC03NSw2ICs3NSw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2Rl
KiBub2RlKQogICAgIGNhc2UgR2V0QnV0dGVyZmx5OgogICAgIGNhc2UgTmV3T2JqZWN0OgogICAg
IGNhc2UgTmV3UHJvbWlzZToKKyAgICBjYXNlIE5ld0dlbmVyYXRvcjoKICAgICBjYXNlIE5ld1N0
cmluZ09iamVjdDoKICAgICBjYXNlIE5ld1N5bWJvbDoKICAgICBjYXNlIE5ld0FycmF5OgpAQCAt
Mzc5LDYgKzM4MCw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBu
b2RlKQogICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgogICAgIGNhc2UgQ3JlYXRlVGhpczoK
ICAgICBjYXNlIENyZWF0ZVByb21pc2U6CisgICAgY2FzZSBDcmVhdGVHZW5lcmF0b3I6CiAgICAg
Y2FzZSBEYXRhVmlld0dldEludDoKICAgICBjYXNlIERhdGFWaWV3R2V0RmxvYXQ6CiAgICAgY2Fz
ZSBEYXRhVmlld1NldDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdU
b0IzLmNwcAppbmRleCA4YzA5MWM2NjQ1MWMwMTU1MzAwYjUyZjQ5YTJhODJlNTAyNTI0NDI1Li44
NzhiNGUzOTM5ZmNjNGU2ZjRiZmY2Mjc2M2Y2NTk5NjNmYzllM2Q2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC03OCw2ICs3OCw3IEBACiAj
aW5jbHVkZSAiSlNBc3luY0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNBc3luY0dlbmVyYXRvckZ1
bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTR2VuZXJhdG9y
LmgiCiAjaW5jbHVkZSAiSlNHZW5lcmF0b3JGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTSW1tdXRh
YmxlQnV0dGVyZmx5LmgiCiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKQEAgLTEw
NDgsNiArMTA0OSw5IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIGNhc2UgTmV3UHJv
bWlzZToKICAgICAgICAgICAgIGNvbXBpbGVOZXdQcm9taXNlKCk7CiAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBOZXdHZW5lcmF0b3I6CisgICAgICAgICAgICBjb21waWxlTmV3R2Vu
ZXJhdG9yKCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBOZXdTdHJpbmdPYmpl
Y3Q6CiAgICAgICAgICAgICBjb21waWxlTmV3U3RyaW5nT2JqZWN0KCk7CiAgICAgICAgICAgICBi
cmVhazsKQEAgLTEwNjYsNiArMTA3MCw5IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAg
IGNhc2UgQ3JlYXRlUHJvbWlzZToKICAgICAgICAgICAgIGNvbXBpbGVDcmVhdGVQcm9taXNlKCk7
CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDcmVhdGVHZW5lcmF0b3I6CisgICAg
ICAgICAgICBjb21waWxlQ3JlYXRlR2VuZXJhdG9yKCk7CisgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBTcHJlYWQ6CiAgICAgICAgICAgICBjb21waWxlU3ByZWFkKCk7CiAgICAgICAg
ICAgICBicmVhazsKQEAgLTU1ODYsNiArNTU5Myw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAg
ICAgICAgICAgICBtX291dC5zdG9yZVB0cihtX291dC5pbnRQdHJaZXJvLCByYXJlRGF0YSwgbV9o
ZWFwcy5GdW5jdGlvblJhcmVEYXRhX3Byb3RvdHlwZSk7CiAgICAgICAgICAgICBtX291dC5zdG9y
ZVB0cihtX291dC5pbnRQdHJPbmUsIHJhcmVEYXRhLCBtX2hlYXBzLkZ1bmN0aW9uUmFyZURhdGFf
YWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50U2V0KTsKICAgICAgICAgICAgIG1fb3V0LnN0b3Jl
UHRyKG1fb3V0LmludFB0clplcm8sIHJhcmVEYXRhLCBtX2hlYXBzLkZ1bmN0aW9uUmFyZURhdGFf
aW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25Qcm9maWxlX3N0cnVjdHVyZSk7CisgICAgICAgICAg
ICBtX291dC5zdG9yZVB0cihtX291dC5pbnRQdHJaZXJvLCByYXJlRGF0YSwgbV9oZWFwcy5GdW5j
dGlvblJhcmVEYXRhX2ludGVybmFsRnVuY3Rpb25BbGxvY2F0aW9uUHJvZmlsZV9wcm90b3R5cGUp
OwogICAgICAgICAgICAgbV9vdXQuc3RvcmVQdHIobV9vdXQuaW50UHRyWmVybywgcmFyZURhdGEs
IG1faGVhcHMuRnVuY3Rpb25SYXJlRGF0YV9ib3VuZEZ1bmN0aW9uU3RydWN0dXJlKTsKICAgICAg
ICAgICAgIG1fb3V0LnN0b3JlUHRyKG1fb3V0LmludFB0clplcm8sIHJhcmVEYXRhLCBtX2hlYXBz
LkZ1bmN0aW9uUmFyZURhdGFfYWxsb2NhdGlvblByb2ZpbGVDbGVhcmluZ1dhdGNocG9pbnQpOwog
ICAgICAgICAgICAgbV9vdXQuc3RvcmUzMkFzOChtX291dC5pbnQzMk9uZSwgcmFyZURhdGEsIG1f
aGVhcHMuRnVuY3Rpb25SYXJlRGF0YV9oYXNSZWlmaWVkTmFtZSk7CkBAIC01OTI2LDYgKzU5MzQs
MzEgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgc2V0SlNWYWx1ZShtX291dC5waGko
cG9pbnRlclR5cGUoKSwgZmFzdFJlc3VsdCwgc2xvd1Jlc3VsdCkpOwogICAgIH0KIAorICAgIHZv
aWQgY29tcGlsZU5ld0dlbmVyYXRvcigpCisgICAgeworICAgICAgICBMQmFzaWNCbG9jayBzbG93
Q2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlv
biA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisKKyAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBt
X291dC5pbnNlcnROZXdCbG9ja3NCZWZvcmUoc2xvd0Nhc2UpOworCisgICAgICAgIExWYWx1ZSBn
ZW5lcmF0b3IgPSBhbGxvY2F0ZU9iamVjdDxKU0dlbmVyYXRvcj4obV9ub2RlLT5zdHJ1Y3R1cmUo
KSwgbV9vdXQuaW50UHRyWmVybywgc2xvd0Nhc2UpOworICAgICAgICBtX291dC5zdG9yZTY0KG1f
b3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSkpLCBnZW5lcmF0b3IsIG1f
aGVhcHMuSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbF9pbnRlcm5hbEZpZWxkc1tzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNHZW5lcmF0b3I6OkZpZWxkOjpQb2x5UHJvdG8pXSk7CisgICAgICAgIG1f
b3V0LnN0b3JlNjQobV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoc3Rh
dGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6OkdlbmVyYXRvclN0YXRlOjpJbml0KSkpKSwg
Z2VuZXJhdG9yLCBtX2hlYXBzLkpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGxfaW50ZXJuYWxGaWVs
ZHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTR2VuZXJhdG9yOjpGaWVsZDo6U3RhdGUpXSk7Cisg
ICAgICAgIG1fb3V0LnN0b3JlNjQobV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSkpLCBnZW5lcmF0b3IsIG1faGVhcHMuSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1w
bF9pbnRlcm5hbEZpZWxkc1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNHZW5lcmF0b3I6OkZpZWxk
OjpOZXh0KV0pOworICAgICAgICBtX291dC5zdG9yZTY0KG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpKSwgZ2VuZXJhdG9yLCBtX2hlYXBzLkpTSW50ZXJuYWxG
aWVsZE9iamVjdEltcGxfaW50ZXJuYWxGaWVsZHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTR2Vu
ZXJhdG9yOjpGaWVsZDo6VGhpcyldKTsKKyAgICAgICAgbV9vdXQuc3RvcmU2NChtX291dC5jb25z
dEludDY0KEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKSksIGdlbmVyYXRvciwgbV9oZWFw
cy5KU0ludGVybmFsRmllbGRPYmplY3RJbXBsX2ludGVybmFsRmllbGRzW3N0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0dlbmVyYXRvcjo6RmllbGQ6OkZyYW1lKV0pOworICAgICAgICBtdXRhdG9yRmVu
Y2UoKTsKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgZmFzdFJlc3VsdCA9IG1fb3V0LmFuY2hvcihn
ZW5lcmF0b3IpOworICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAg
bV9vdXQuYXBwZW5kVG8oc2xvd0Nhc2UsIGNvbnRpbnVhdGlvbik7CisgICAgICAgIFZhbHVlRnJv
bUJsb2NrIHNsb3dSZXN1bHQgPSBtX291dC5hbmNob3Iodm1DYWxsKHBvaW50ZXJUeXBlKCksIG1f
b3V0Lm9wZXJhdGlvbihvcGVyYXRpb25OZXdHZW5lcmF0b3IpLCBtX2NhbGxGcmFtZSwgZnJvemVu
UG9pbnRlcihtX2dyYXBoLmZyZWV6ZVN0cm9uZyhtX25vZGUtPnN0cnVjdHVyZSgpLmdldCgpKSkp
KTsKKyAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworCisgICAgICAgIG1fb3V0LmFw
cGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOworICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0
LnBoaShwb2ludGVyVHlwZSgpLCBmYXN0UmVzdWx0LCBzbG93UmVzdWx0KSk7CisgICAgfQorCiAg
ICAgdm9pZCBjb21waWxlTmV3U3RyaW5nT2JqZWN0KCkKICAgICB7CiAgICAgICAgIFJlZ2lzdGVy
ZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0gbV9ub2RlLT5zdHJ1Y3R1cmUoKTsKQEAgLTYzMzgsNiAr
NjM3MSw1MyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBzZXRKU1ZhbHVlKHJlc3Vs
dCk7CiAgICAgfQogCisgICAgdm9pZCBjb21waWxlQ3JlYXRlR2VuZXJhdG9yKCkKKyAgICB7Cisg
ICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisKKyAgICAgICAgTFZhbHVlIGNhbGxlZSA9
IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSk7CisKKyAgICAgICAgTEJhc2ljQmxvY2sgaXNGdW5j
dGlvbkJsb2NrID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgaGFzUmFy
ZURhdGEgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9jayBjaGVja0dsb2Jh
bE9iamVjdENhc2UgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9jayBmYXN0
QWxsb2NhdGlvbkNhc2UgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9jayBz
bG93Q2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVh
dGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisKKyAgICAgICAgbV9vdXQuYnJhbmNoKGlzRnVuY3Rp
b24oY2FsbGVlLCBwcm92ZW5UeXBlKG1fbm9kZS0+Y2hpbGQxKCkpKSwgdXN1YWxseShpc0Z1bmN0
aW9uQmxvY2spLCByYXJlbHkoc2xvd0Nhc2UpKTsKKworICAgICAgICBMQmFzaWNCbG9jayBsYXN0
TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGlzRnVuY3Rpb25CbG9jaywgaGFzUmFyZURhdGEpOworICAg
ICAgICBMVmFsdWUgcmFyZURhdGEgPSBtX291dC5sb2FkUHRyKGNhbGxlZSwgbV9oZWFwcy5KU0Z1
bmN0aW9uX3JhcmVEYXRhKTsKKyAgICAgICAgbV9vdXQuYnJhbmNoKG1fb3V0LmlzWmVybzY0KHJh
cmVEYXRhKSwgcmFyZWx5KHNsb3dDYXNlKSwgdXN1YWxseShoYXNSYXJlRGF0YSkpOworCisgICAg
ICAgIG1fb3V0LmFwcGVuZFRvKGhhc1JhcmVEYXRhLCBmYXN0QWxsb2NhdGlvbkNhc2UpOworICAg
ICAgICBMVmFsdWUgc3RydWN0dXJlID0gbV9vdXQubG9hZFB0cihyYXJlRGF0YSwgbV9oZWFwcy5G
dW5jdGlvblJhcmVEYXRhX2ludGVybmFsRnVuY3Rpb25BbGxvY2F0aW9uUHJvZmlsZV9zdHJ1Y3R1
cmUpOworICAgICAgICBtX291dC5icmFuY2gobV9vdXQuZXF1YWwobV9vdXQubG9hZFB0cihzdHJ1
Y3R1cmUsIG1faGVhcHMuU3RydWN0dXJlX2NsYXNzSW5mbyksIG1fb3V0LmNvbnN0SW50UHRyKEpT
R2VuZXJhdG9yOjppbmZvKCkpKSwgdXN1YWxseShjaGVja0dsb2JhbE9iamVjdENhc2UpLCByYXJl
bHkoc2xvd0Nhc2UpKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhjaGVja0dsb2JhbE9iamVj
dENhc2UsIGZhc3RBbGxvY2F0aW9uQ2FzZSk7CisgICAgICAgIG1fb3V0LmJyYW5jaChtX291dC5l
cXVhbChtX291dC5sb2FkUHRyKHN0cnVjdHVyZSwgbV9oZWFwcy5TdHJ1Y3R1cmVfZ2xvYmFsT2Jq
ZWN0KSwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSksIHVzdWFsbHkoZmFzdEFsbG9jYXRpb25D
YXNlKSwgcmFyZWx5KHNsb3dDYXNlKSk7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oZmFzdEFs
bG9jYXRpb25DYXNlLCBzbG93Q2FzZSk7CisgICAgICAgIExWYWx1ZSBnZW5lcmF0b3IgPSBhbGxv
Y2F0ZU9iamVjdDxKU0dlbmVyYXRvcj4oc3RydWN0dXJlLCBtX291dC5pbnRQdHJaZXJvLCBzbG93
Q2FzZSk7CisgICAgICAgIG1fb3V0LnN0b3JlNjQobV9vdXQubG9hZDY0KHJhcmVEYXRhLCBtX2hl
YXBzLkZ1bmN0aW9uUmFyZURhdGFfaW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25Qcm9maWxlX3By
b3RvdHlwZSksIGdlbmVyYXRvciwgbV9oZWFwcy5KU0ludGVybmFsRmllbGRPYmplY3RJbXBsX2lu
dGVybmFsRmllbGRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihKU0dlbmVyYXRvcjo6RmllbGQ6OlBv
bHlQcm90byldKTsKKyAgICAgICAgbV9vdXQuc3RvcmU2NChtX291dC5jb25zdEludDY0KEpTVmFs
dWU6OmVuY29kZShqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6R2Vu
ZXJhdG9yU3RhdGU6OkluaXQpKSkpLCBnZW5lcmF0b3IsIG1faGVhcHMuSlNJbnRlcm5hbEZpZWxk
T2JqZWN0SW1wbF9pbnRlcm5hbEZpZWxkc1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNHZW5lcmF0
b3I6OkZpZWxkOjpTdGF0ZSldKTsKKyAgICAgICAgbV9vdXQuc3RvcmU2NChtX291dC5jb25zdElu
dDY0KEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKSksIGdlbmVyYXRvciwgbV9oZWFwcy5K
U0ludGVybmFsRmllbGRPYmplY3RJbXBsX2ludGVybmFsRmllbGRzW3N0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0dlbmVyYXRvcjo6RmllbGQ6Ok5leHQpXSk7CisgICAgICAgIG1fb3V0LnN0b3JlNjQo
bV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSkpLCBnZW5lcmF0
b3IsIG1faGVhcHMuSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbF9pbnRlcm5hbEZpZWxkc1tzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNHZW5lcmF0b3I6OkZpZWxkOjpUaGlzKV0pOworICAgICAgICBt
X291dC5zdG9yZTY0KG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpKSwgZ2VuZXJhdG9yLCBtX2hlYXBzLkpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGxfaW50ZXJu
YWxGaWVsZHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTR2VuZXJhdG9yOjpGaWVsZDo6RnJhbWUp
XSk7CisgICAgICAgIG11dGF0b3JGZW5jZSgpOworICAgICAgICBWYWx1ZUZyb21CbG9jayBmYXN0
UmVzdWx0ID0gbV9vdXQuYW5jaG9yKGdlbmVyYXRvcik7CisgICAgICAgIG1fb3V0Lmp1bXAoY29u
dGludWF0aW9uKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhzbG93Q2FzZSwgY29udGludWF0
aW9uKTsKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xvd1Jlc3VsdCA9IG1fb3V0LmFuY2hvcih2
bUNhbGwoSW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25DcmVhdGVHZW5lcmF0b3IpLCBt
X2NhbGxGcmFtZSwgY2FsbGVlLCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpKSk7CisgICAgICAg
IG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhjb250
aW51YXRpb24sIGxhc3ROZXh0KTsKKyAgICAgICAgTFZhbHVlIHJlc3VsdCA9IG1fb3V0LnBoaShJ
bnQ2NCwgZmFzdFJlc3VsdCwgc2xvd1Jlc3VsdCk7CisKKyAgICAgICAgc2V0SlNWYWx1ZShyZXN1
bHQpOworICAgIH0KKwogICAgIHZvaWQgY29tcGlsZVNwcmVhZCgpCiAgICAgewogICAgICAgICBp
ZiAobV9ub2RlLT5jaGlsZDEoKS0+b3AoKSA9PSBQaGFudG9tTmV3QXJyYXlCdWZmZXIpIHsKQEAg
LTE2MDU5LDggKzE2MTM5LDEwIEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAKICAgICBMVmFsdWUg
aXNDZWxsV2l0aFR5cGUoTFZhbHVlIGNlbGwsIEpTVHlwZSBxdWVyaWVkVHlwZSwgU3BlY3VsYXRl
ZFR5cGUgc3BlY3VsYXRlZFR5cGVGb3JRdWVyeSwgU3BlY3VsYXRlZFR5cGUgdHlwZSA9IFNwZWNG
dWxsVG9wKQogICAgIHsKLSAgICAgICAgaWYgKExWYWx1ZSBwcm92ZW4gPSBpc1Byb3ZlblZhbHVl
KHR5cGUgJiBTcGVjQ2VsbCwgc3BlY3VsYXRlZFR5cGVGb3JRdWVyeSkpCi0gICAgICAgICAgICBy
ZXR1cm4gcHJvdmVuOworICAgICAgICBpZiAoc3BlY3VsYXRlZFR5cGVGb3JRdWVyeSAhPSBTcGVj
Q2VsbCkgeworICAgICAgICAgICAgaWYgKExWYWx1ZSBwcm92ZW4gPSBpc1Byb3ZlblZhbHVlKHR5
cGUgJiBTcGVjQ2VsbCwgc3BlY3VsYXRlZFR5cGVGb3JRdWVyeSkpCisgICAgICAgICAgICAgICAg
cmV0dXJuIHByb3ZlbjsKKyAgICAgICAgfQogICAgICAgICByZXR1cm4gbV9vdXQuZXF1YWwoCiAg
ICAgICAgICAgICBtX291dC5sb2FkOFplcm9FeHQzMihjZWxsLCBtX2hlYXBzLkpTQ2VsbF90eXBl
SW5mb1R5cGUpLAogICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQzMihxdWVyaWVkVHlwZSkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IDM2ZGU1M2EwYmMzYTcyZjU1NThkMTllZGE2
NDc2YWYwNDk0NmVjNmMuLjgyNTQ2MzgxMmZiZTUzNmQwOTRjMTc5YjdlZmIyNjI4NWMxNDAyZjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTMxMiw2ICszMTIsOCBAQCB2b2lkIEpJ
VDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9TTE9XX09QKGNyZWF0
ZV9yZXN0KQogICAgICAgICBERUZJTkVfU0xPV19PUChjcmVhdGVfcHJvbWlzZSkKICAgICAgICAg
REVGSU5FX1NMT1dfT1AobmV3X3Byb21pc2UpCisgICAgICAgIERFRklORV9TTE9XX09QKGNyZWF0
ZV9nZW5lcmF0b3IpCisgICAgICAgIERFRklORV9TTE9XX09QKG5ld19nZW5lcmF0b3IpCiAgICAg
ICAgIERFRklORV9TTE9XX09QKHBvdykKIAogICAgICAgICBERUZJTkVfT1Aob3BfYWRkKQpAQCAt
NTgwLDYgKzU4Miw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAgICAg
ICAgIERFRklORV9TTE9XQ0FTRV9TTE9XX09QKGRpdikKICAgICAgICAgREVGSU5FX1NMT1dDQVNF
X1NMT1dfT1AoY3JlYXRlX3RoaXMpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9TTE9XX09QKGNy
ZWF0ZV9wcm9taXNlKQorICAgICAgICBERUZJTkVfU0xPV0NBU0VfU0xPV19PUChjcmVhdGVfZ2Vu
ZXJhdG9yKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfU0xPV19PUCh0b190aGlzKQogICAgICAg
ICBERUZJTkVfU0xPV0NBU0VfU0xPV19PUCh0b19wcmltaXRpdmUpCiAgICAgICAgIERFRklORV9T
TE9XQ0FTRV9TTE9XX09QKHRvX251bWJlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wZXJhdGlvbnMuY3BwCmluZGV4IDdhZjRlZTMyNmNmMWU4OWU5YTUzZjlhMjc3YmQ1YzQwNTI2
MzA4MDguLmVmYTI1NGNiMmFmMDEyNTdlYWQ2MGNkMjI1ODk3YTYxYjcxMDkxNDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtMTM5NCw2ICsxMzk0
LDE0IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdJbnRlcm5hbFByb21pc2Uo
RXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0CiAgICAgcmV0dXJuIEpTSW50ZXJuYWxQcm9t
aXNlOjpjcmVhdGUodm0sIHN0cnVjdHVyZSk7CiB9CiAKK0pTQ2VsbCogSklUX09QRVJBVElPTiBv
cGVyYXRpb25OZXdHZW5lcmF0b3IoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkKK3sKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGV4ZWMpOworCisgICAgcmV0dXJuIEpTR2VuZXJhdG9yOjpjcmVhdGUodm0s
IHN0cnVjdHVyZSk7Cit9CisKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdSZWdl
eHAoRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIHJlZ2V4cFB0cikKIHsKICAgICBTdXBlclNhbXBs
ZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3BlcmF0aW9ucy5oCmluZGV4IDFjM2MyNzJjYmJhOGRkMzU2MmQ0ZDE1Y2YwOTUwZTZj
OTI0Mjg3NjIuLjFiNzQ5YjIzMGY4MDJkM2ZjNDJmY2ZhMTYwNDZiYTg5ZjMwYzhjNWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCkBAIC00MjEsNiArNDIxLDcg
QEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblNldEZ1bmN0aW9uTmFtZShFeGVjU3RhdGUq
LCBKU0NlbGwqLCBFbmNvZGVkSlNWYWx1ZSkKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRp
b25OZXdPYmplY3QoRXhlY1N0YXRlKiwgU3RydWN0dXJlKikgV1RGX0lOVEVSTkFMOwogSlNDZWxs
KiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld1Byb21pc2UoRXhlY1N0YXRlKiwgU3RydWN0dXJl
KikgV1RGX0lOVEVSTkFMOwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0ludGVy
bmFsUHJvbWlzZShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqKSBXVEZfSU5URVJOQUw7CitKU0NlbGwq
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3R2VuZXJhdG9yKEV4ZWNTdGF0ZSosIFN0cnVjdHVy
ZSopIFdURl9JTlRFUk5BTDsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdSZWdl
eHAoRXhlY1N0YXRlKiwgSlNDZWxsKikgV1RGX0lOVEVSTkFMOwogVW51c2VkUHRyIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uSGFuZGxlVHJhcHMoRXhlY1N0YXRlKikgV1RGX0lOVEVSTkFMOwogdm9p
ZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRocm93KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVl
KSBXVEZfSU5URVJOQUw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFByb3BlcnR5QWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVy
dHlBY2Nlc3MuY3BwCmluZGV4IDQwNzU4ZTdmMzBhY2M0ZDcyODJlYjg1MzVjYjRkMzFiYzhjMGU3
NDIuLjM2OWNiMTBiMjI1YzA5YTE0MmFmZTYyM2JlOTNkNWIwNGFmODBkYWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCkBAIC0xMjQzLDcg
KzEyNDMsNiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfaW50ZXJuYWxfZmllbGQoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBpbnQgZHN0ID0gYnl0ZWNvZGUubV9k
c3Qub2Zmc2V0KCk7CiAgICAgaW50IGJhc2UgPSBieXRlY29kZS5tX2Jhc2Uub2Zmc2V0KCk7CiAg
ICAgdW5zaWduZWQgaW5kZXggPSBieXRlY29kZS5tX2luZGV4OwotICAgIEFTU0VSVChpbmRleCA8
IEpTUHJvbWlzZTo6bnVtYmVyT2ZJbnRlcm5hbEZpZWxkcyk7CiAKICAgICBlbWl0R2V0VmlydHVh
bFJlZ2lzdGVyKGJhc2UsIHJlZ1QxKTsKICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDEsIEpTSW50
ZXJuYWxGaWVsZE9iamVjdEltcGw8Pjo6b2Zmc2V0T2ZJbnRlcm5hbEZpZWxkKGluZGV4KSksIHJl
Z1QwKTsKQEAgLTEyNTgsNyArMTI1Nyw2IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9pbnRlcm5h
bF9maWVsZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGludCBi
YXNlID0gYnl0ZWNvZGUubV9iYXNlLm9mZnNldCgpOwogICAgIGludCB2YWx1ZSA9IGJ5dGVjb2Rl
Lm1fdmFsdWUub2Zmc2V0KCk7CiAgICAgdW5zaWduZWQgaW5kZXggPSBieXRlY29kZS5tX2luZGV4
OwotICAgIEFTU0VSVChpbmRleCA8IEpTUHJvbWlzZTo6bnVtYmVyT2ZJbnRlcm5hbEZpZWxkcyk7
CiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIHJlZ1QwKTsKICAgICBlbWl0R2V0
VmlydHVhbFJlZ2lzdGVyKHZhbHVlLCByZWdUMSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggZDIwNGI0MDdjMmRlNDhl
NWRjYjJjYTEzMWE0YWIxNGUzZDg5YjFjYy4uMjU3NmVmNDllMTE4MzEyNmNmZjhmMWUzNWVlYWVk
YmZlMDQ2ZGVjZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyLmFzbQpAQCAtMTQ5NSw2ICsxNDk1LDcgQEAgc2xvd1BhdGhPcChjcmVh
dGVfcmVzdCkKIHNsb3dQYXRoT3AoY3JlYXRlX3Njb3BlZF9hcmd1bWVudHMpCiBzbG93UGF0aE9w
KGNyZWF0ZV90aGlzKQogc2xvd1BhdGhPcChjcmVhdGVfcHJvbWlzZSkKK3Nsb3dQYXRoT3AoY3Jl
YXRlX2dlbmVyYXRvcikKIHNsb3dQYXRoT3AoZGVmaW5lX2FjY2Vzc29yX3Byb3BlcnR5KQogc2xv
d1BhdGhPcChkZWZpbmVfZGF0YV9wcm9wZXJ0eSkKIHNsb3dQYXRoT3AoZW51bWVyYXRvcl9nZW5l
cmljX3BuYW1lKQpAQCAtMTUzMCw2ICsxNTMxLDcgQEAgc2xvd1BhdGhPcCh0b19pbmRleF9zdHJp
bmcpCiBzbG93UGF0aE9wKHR5cGVvZikKIHNsb3dQYXRoT3AodW5yZWFjaGFibGUpCiBzbG93UGF0
aE9wKG5ld19wcm9taXNlKQorc2xvd1BhdGhPcChuZXdfZ2VuZXJhdG9yKQogCiBtYWNybyBsbGlu
dFNsb3dQYXRoT3Aob3Bjb2RlTmFtZSkKICAgICBsbGludE9wKG9wXyVvcGNvZGVOYW1lJSwgdW51
c2VkLCBtYWNybyAodW51c2VkLCB1bnVzZWQsIGRpc3BhdGNoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKaW5kZXggNjU4NjU3OTgyMzM0
NDQ5OTcwMmJiYmRjNWQzNWNiMjc1NDRlM2NlZi4uNjFmY2EzMzBjOWUyMDlhNmQ3NjNmYzQxNGUx
ZDcxYjI1MGFmMmQ2ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uU2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25TbG93UGF0aHMuY3BwCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiR2V0dGVyU2V0
dGVyLmgiCiAjaW5jbHVkZSAiSG9zdENhbGxSZXR1cm5WYWx1ZS5oIgogI2luY2x1ZGUgIklDU3Rh
dHMuaCIKKyNpbmNsdWRlICJJbnRlcm5hbEZ1bmN0aW9uQWxsb2NhdGlvblByb2ZpbGVJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJJdGVyYXRvck9wZXJhdGlv
bnMuaCIKICNpbmNsdWRlICJKSVQuaCIKQEAgLTMwOSw2ICszMTAsNTkgQEAgU0xPV19QQVRIX0RF
Q0woc2xvd19wYXRoX25ld19wcm9taXNlKQogICAgIFJFVFVSTihyZXN1bHQpOwogfQogCitTTE9X
X1BBVEhfREVDTChzbG93X3BhdGhfY3JlYXRlX2dlbmVyYXRvcikKK3sKKyAgICBCRUdJTigpOwor
ICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BDcmVhdGVHZW5lcmF0b3I+KCk7CisgICAgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsK
KyAgICBKU09iamVjdCogY29uc3RydWN0b3JBc09iamVjdCA9IGFzT2JqZWN0KEdFVChieXRlY29k
ZS5tX2NhbGxlZSkuanNWYWx1ZSgpKTsKKworICAgIFN0cnVjdHVyZSogYmFzZVN0cnVjdHVyZSA9
IGdsb2JhbE9iamVjdC0+Z2VuZXJhdG9yU3RydWN0dXJlKCk7CisgICAgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUgPSBiYXNlU3RydWN0dXJlOworICAgIEpTRnVuY3Rpb24qIGNvbnN0cnVjdG9yID0ganNE
eW5hbWljQ2FzdDxKU0Z1bmN0aW9uKj4odm0sIGNvbnN0cnVjdG9yQXNPYmplY3QpOworICAgIGlm
IChjb25zdHJ1Y3RvciAmJiBjb25zdHJ1Y3Rvci0+Y2FuVXNlQWxsb2NhdGlvblByb2ZpbGUoKSkg
eworICAgICAgICBXcml0ZUJhcnJpZXI8SlNDZWxsPiYgY2FjaGVkQ2FsbGVlID0gYnl0ZWNvZGUu
bWV0YWRhdGEoZXhlYykubV9jYWNoZWRDYWxsZWU7CisgICAgICAgIGlmICghY2FjaGVkQ2FsbGVl
KQorICAgICAgICAgICAgY2FjaGVkQ2FsbGVlLnNldCh2bSwgZXhlYy0+Y29kZUJsb2NrKCksIGNv
bnN0cnVjdG9yKTsKKyAgICAgICAgZWxzZSBpZiAoY2FjaGVkQ2FsbGVlLnVudmFsaWRhdGVkR2V0
KCkgIT0gSlNDZWxsOjpzZWVuTXVsdGlwbGVDYWxsZWVPYmplY3RzKCkgJiYgY2FjaGVkQ2FsbGVl
LmdldCgpICE9IGNvbnN0cnVjdG9yKQorICAgICAgICAgICAgY2FjaGVkQ2FsbGVlLnNldFdpdGhv
dXRXcml0ZUJhcnJpZXIoSlNDZWxsOjpzZWVuTXVsdGlwbGVDYWxsZWVPYmplY3RzKCkpOworCisg
ICAgICAgIHN0cnVjdHVyZSA9IGNvbnN0cnVjdG9yLT5yYXJlRGF0YSh2bSktPmludGVybmFsRnVu
Y3Rpb25BbGxvY2F0aW9uU3RydWN0dXJlKCk7CisgICAgICAgIGlmIChMSUtFTFkoc3RydWN0dXJl
ICYmIHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCkgPT0gYmFzZVN0cnVjdHVyZS0+Y2xhc3NJbmZvKCkg
JiYgc3RydWN0dXJlLT5nbG9iYWxPYmplY3QoKSA9PSBnbG9iYWxPYmplY3QpKSB7CisgICAgICAg
ICAgICBKU0dlbmVyYXRvciogcmVzdWx0ID0gSlNHZW5lcmF0b3I6OmNyZWF0ZSh2bSwgc3RydWN0
dXJlKTsKKyAgICAgICAgICAgIFJFVFVSTihyZXN1bHQpOworICAgICAgICB9CisKKyAgICAgICAg
SlNWYWx1ZSBwcm90b3R5cGVWYWx1ZSA9IGNvbnN0cnVjdG9yLT5nZXQoZXhlYywgdm0ucHJvcGVy
dHlOYW1lcy0+cHJvdG90eXBlKTsKKyAgICAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgICAg
IGlmIChKU09iamVjdCogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxKU09iamVjdCo+KHZtLCBw
cm90b3R5cGVWYWx1ZSkpIHsKKyAgICAgICAgICAgIGJvb2wgY2FuQmVQb2x5UHJvdG8gPSB0cnVl
OworICAgICAgICAgICAgc3RydWN0dXJlID0gY29uc3RydWN0b3ItPnJhcmVEYXRhKHZtKS0+aW5p
dGlhbGl6ZUludGVybmFsRnVuY3Rpb25BbGxvY2F0aW9uU3RydWN0dXJlRnJvbUJhc2Uodm0sIGds
b2JhbE9iamVjdCwgY29uc3RydWN0b3IsIHByb3RvdHlwZSwgYmFzZVN0cnVjdHVyZSwgY2FuQmVQ
b2x5UHJvdG8pOworICAgICAgICAgICAgaWYgKHN0cnVjdHVyZS0+aGFzUG9seVByb3RvKCkpIHsK
KyAgICAgICAgICAgICAgICBBU1NFUlQocHJvdG90eXBlID09IGNvbnN0cnVjdG9yLT5wcm90b3R5
cGVGb3JDb25zdHJ1Y3Rpb24odm0sIGV4ZWMpKTsKKyAgICAgICAgICAgICAgICBKU0dlbmVyYXRv
ciogcmVzdWx0ID0gSlNHZW5lcmF0b3I6OmNyZWF0ZSh2bSwgc3RydWN0dXJlKTsKKyAgICAgICAg
ICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwga25vd25Qb2x5UHJvdG9PZmZzZXQsIHByb3Rv
dHlwZSk7CisgICAgICAgICAgICAgICAgcHJvdG90eXBlLT5kaWRCZWNvbWVQcm90b3R5cGUoKTsK
KyAgICAgICAgICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFoYXNJbmRleGVkUHJvcGVydGll
cyhyZXN1bHQtPmluZGV4aW5nVHlwZSgpKSwgIldlIHJlbHkgb24gSlNHZW5lcmF0b3Igbm90IHN0
YXJ0aW5nIG91dCB3aXRoIGFuIGluZGV4aW5nIHR5cGUgb3RoZXJ3aXNlIHdlIHdvdWxkIHBvdGVu
dGlhbGx5IG5lZWQgdG8gY29udmVydCB0byBzbG93IHB1dCBzdG9yYWdlIik7CisgICAgICAgICAg
ICAgICAgUkVUVVJOKHJlc3VsdCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9IGVs
c2UgeworICAgICAgICBzdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFz
c1N0cnVjdHVyZShleGVjLCBudWxscHRyLCBjb25zdHJ1Y3RvckFzT2JqZWN0LCBnbG9iYWxPYmpl
Y3QtPmdlbmVyYXRvclN0cnVjdHVyZSgpKTsKKyAgICAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Cisg
ICAgfQorICAgIEpTR2VuZXJhdG9yKiByZXN1bHQgPSBKU0dlbmVyYXRvcjo6Y3JlYXRlKHZtLCBz
dHJ1Y3R1cmUpOworICAgIFJFVFVSTihyZXN1bHQpOworfQorCitTTE9XX1BBVEhfREVDTChzbG93
X3BhdGhfbmV3X2dlbmVyYXRvcikKK3sKKyAgICBCRUdJTigpOworICAgIGF1dG8gYnl0ZWNvZGUg
PSBwYy0+YXM8T3BOZXdHZW5lcmF0b3I+KCk7CisgICAgSlNHZW5lcmF0b3IqIHJlc3VsdCA9IEpT
R2VuZXJhdG9yOjpjcmVhdGUodm0sIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+Z2VuZXJh
dG9yU3RydWN0dXJlKCkpOworICAgIFJFVFVSTihyZXN1bHQpOworfQorCiBTTE9XX1BBVEhfREVD
TChzbG93X3BhdGhfdG9fdGhpcykKIHsKICAgICBCRUdJTigpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAppbmRleCAyZmU3NWU2YzM2NTIzZWZj
OWJhODJhNDYxNjU1MGRmZjc2MjNhMTg4Li43ZjkwYjE0MGI4OTc5MGZlMTRjNDMwN2YxYTIwZjc0
ZmQ5ZDNmYmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25TbG93UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25T
bG93UGF0aHMuaApAQCAtMzg0LDYgKzM4NCw3IEBAIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93
X3BhdGhfcmVzb2x2ZV9zY29wZSk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2lz
X3Zhcl9zY29wZSk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3Jlc29sdmVfc2Nv
cGVfZm9yX2hvaXN0aW5nX2Z1bmNfZGVjbF9pbl9ldmFsKTsKIFNMT1dfUEFUSF9ISURERU5fREVD
TChzbG93X3BhdGhfY3JlYXRlX3Byb21pc2UpOworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3df
cGF0aF9jcmVhdGVfZ2VuZXJhdG9yKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhf
Y3JlYXRlX3Jlc3QpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9nZXRfYnlfaWRf
d2l0aF90aGlzKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZ2V0X2J5X3ZhbF93
aXRoX3RoaXMpOwpAQCAtMzkzLDYgKzM5NCw3IEBAIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93
X3BhdGhfZGVmaW5lX2RhdGFfcHJvcGVydHkpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3df
cGF0aF9kZWZpbmVfYWNjZXNzb3JfcHJvcGVydHkpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNs
b3dfcGF0aF90aHJvd19zdGF0aWNfZXJyb3IpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3df
cGF0aF9uZXdfcHJvbWlzZSk7CitTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25ld19n
ZW5lcmF0b3IpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfYXJyYXlfd2l0
aF9zcHJlYWQpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfYXJyYXlfYnVm
ZmVyKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfc3ByZWFkKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuaAppbmRleCBiMDE2
MDZmYjhmMDhhZjY5Y2NmMmNjZWMxZmFkY2FmOWY5MTFjMGVmLi5jZjY4MjUwOWIwYTRiZTZiZWZl
ODIwN2JlM2RkZmYwNDM4MDMyM2MyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRnVuY3Rpb25SYXJlRGF0YS5oCkBAIC04OSwxMCArODksMTEgQEAgY2xhc3MgRnVuY3Rp
b25SYXJlRGF0YSBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogICAgIGJvb2wgaXNPYmplY3RBbGxv
Y2F0aW9uUHJvZmlsZUluaXRpYWxpemVkKCkgeyByZXR1cm4gIW1fb2JqZWN0QWxsb2NhdGlvblBy
b2ZpbGUuaXNOdWxsKCk7IH0KIAogICAgIFN0cnVjdHVyZSogaW50ZXJuYWxGdW5jdGlvbkFsbG9j
YXRpb25TdHJ1Y3R1cmUoKSB7IHJldHVybiBtX2ludGVybmFsRnVuY3Rpb25BbGxvY2F0aW9uUHJv
ZmlsZS5zdHJ1Y3R1cmUoKTsgfQotICAgIFN0cnVjdHVyZSogY3JlYXRlSW50ZXJuYWxGdW5jdGlv
bkFsbG9jYXRpb25TdHJ1Y3R1cmVGcm9tQmFzZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTT2JqZWN0KiBwcm90b3R5cGUsIFN0cnVjdHVyZSogYmFzZVN0cnVjdHVyZSkK
KyAgICBKU09iamVjdCogaW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25Qcm90b3R5cGUoKSB7IHJl
dHVybiBtX2ludGVybmFsRnVuY3Rpb25BbGxvY2F0aW9uUHJvZmlsZS5wcm90b3R5cGUoKTsgfQor
ICAgIFN0cnVjdHVyZSogaW5pdGlhbGl6ZUludGVybmFsRnVuY3Rpb25BbGxvY2F0aW9uU3RydWN0
dXJlRnJvbUJhc2UoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0Z1bmN0
aW9uKiBjb25zdHJ1Y3RvciwgSlNPYmplY3QqIHByb3RvdHlwZSwgU3RydWN0dXJlKiBiYXNlU3Ry
dWN0dXJlLCBib29sIGNhbkJlUG9seVByb3RvKQogICAgIHsKICAgICAgICAgaW5pdGlhbGl6ZUFs
bG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludFNldCgpOwotICAgICAgICByZXR1cm4gbV9pbnRlcm5h
bEZ1bmN0aW9uQWxsb2NhdGlvblByb2ZpbGUuY3JlYXRlQWxsb2NhdGlvblN0cnVjdHVyZUZyb21C
YXNlKHZtLCBnbG9iYWxPYmplY3QsIHRoaXMsIHByb3RvdHlwZSwgYmFzZVN0cnVjdHVyZSk7Cisg
ICAgICAgIHJldHVybiBtX2ludGVybmFsRnVuY3Rpb25BbGxvY2F0aW9uUHJvZmlsZS5pbml0aWFs
aXplQWxsb2NhdGlvblN0cnVjdHVyZUZyb21CYXNlKHZtLCBnbG9iYWxPYmplY3QsIHRoaXMsIGNv
bnN0cnVjdG9yLCBwcm90b3R5cGUsIGJhc2VTdHJ1Y3R1cmUsIGNhbkJlUG9seVByb3RvKTsKICAg
ICB9CiAgICAgdm9pZCBjbGVhckludGVybmFsRnVuY3Rpb25BbGxvY2F0aW9uUHJvZmlsZShjb25z
dCBjaGFyKiByZWFzb24pCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcAppbmRleCBkZDRhMjIwODAwZjE4MzQzMTcwMTI5Zjkz
MWJlMzEyZmYzN2YxM2QyLi40MjlkMDI1ZmNkN2ZkMmJmODQ3MDRjMGQ1YzJmZTIwYzNiMTg2Mzk1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0
aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0
aW9uLmNwcApAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgIkludGVybmFsRnVuY3Rpb24uaCIK
IAogI2luY2x1ZGUgIkZ1bmN0aW9uUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiSW50ZXJuYWxGdW5j
dGlvbkFsbG9jYXRpb25Qcm9maWxlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0
LmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCkBAIC0x
MTksNyArMTIwLDYgQEAgU3RydWN0dXJlKiBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFz
c1N0cnVjdHVyZVNsb3coRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHUKIHsKICAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAg
ICBBU1NFUlQoIW5ld1RhcmdldCB8fCBuZXdUYXJnZXQuaXNDb25zdHJ1Y3Rvcih2bSkpOwogCiAg
ICAgQVNTRVJUKGJhc2VDbGFzcy0+aGFzTW9ub1Byb3RvKCkpOwogCkBAIC0xMzMsMTcgKzEzMywx
OCBAQCBTdHJ1Y3R1cmUqIEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJl
U2xvdyhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdQogICAgICAgICAgICAgcmV0dXJuIHN0cnVjdHVy
ZTsKIAogICAgICAgICAvLyBOb3RlLCBSZWZsZWN0LmNvbnN0cnVjdCBtaWdodCBjYXVzZSB0aGUg
cHJvZmlsZSB0byBjaHVybiBidXQgd2UgZG9uJ3QgY2FyZS4KLSAgICAgICAgSlNWYWx1ZSBwcm90
b3R5cGVWYWx1ZSA9IG5ld1RhcmdldC5nZXQoZXhlYywgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90
eXBlKTsKKyAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGVWYWx1ZSA9IHRhcmdldEZ1bmN0aW9uLT5n
ZXQoZXhlYywgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlKTsKICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CiAgICAgICAgIGlmIChKU09iamVjdCogcHJvdG90
eXBlID0ganNEeW5hbWljQ2FzdDxKU09iamVjdCo+KHZtLCBwcm90b3R5cGVWYWx1ZSkpCi0gICAg
ICAgICAgICByZXR1cm4gdGFyZ2V0RnVuY3Rpb24tPnJhcmVEYXRhKHZtKS0+Y3JlYXRlSW50ZXJu
YWxGdW5jdGlvbkFsbG9jYXRpb25TdHJ1Y3R1cmVGcm9tQmFzZSh2bSwgZ2xvYmFsT2JqZWN0LCBw
cm90b3R5cGUsIGJhc2VDbGFzcyk7CisgICAgICAgICAgICByZXR1cm4gdGFyZ2V0RnVuY3Rpb24t
PnJhcmVEYXRhKHZtKS0+aW5pdGlhbGl6ZUludGVybmFsRnVuY3Rpb25BbGxvY2F0aW9uU3RydWN0
dXJlRnJvbUJhc2Uodm0sIGdsb2JhbE9iamVjdCwgdGFyZ2V0RnVuY3Rpb24sIHByb3RvdHlwZSwg
YmFzZUNsYXNzLCBmYWxzZSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgSlNWYWx1ZSBwcm90b3R5
cGVWYWx1ZSA9IG5ld1RhcmdldC5nZXQoZXhlYywgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBl
KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CiAgICAgICAg
IGlmIChKU09iamVjdCogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxKU09iamVjdCo+KHZtLCBw
cm90b3R5cGVWYWx1ZSkpIHsKICAgICAgICAgICAgIC8vIFRoaXMgb25seSBoYXBwZW5zIGlmIHNv
bWVvbmUgUmVmbGVjdC5jb25zdHJ1Y3RzIG91ciBidWlsdGluIGNvbnN0cnVjdG9yIHdpdGggYW5v
dGhlciBidWlsdGluIGNvbnN0cnVjdG9yIGFzIHRoZSBuZXcudGFyZ2V0LgogICAgICAgICAgICAg
Ly8gVGh1cywgd2UgZG9uJ3QgY2FyZSBhYm91dCB0aGUgY29zdCBvZiBsb29raW5nIHVwIHRoZSBz
dHJ1Y3R1cmUgZnJvbSBvdXIgaGFzaCB0YWJsZSBldmVyeSB0aW1lLgotICAgICAgICAgICAgcmV0
dXJuIHZtLnN0cnVjdHVyZUNhY2hlLmVtcHR5U3RydWN0dXJlRm9yUHJvdG90eXBlRnJvbUJhc2VT
dHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIGJhc2VDbGFzcyk7CisgICAgICAgICAg
ICBib29sIG1ha2VQb2x5UHJvdG9TdHJ1Y3R1cmUgPSBmYWxzZTsKKyAgICAgICAgICAgIHJldHVy
biB2bS5zdHJ1Y3R1cmVDYWNoZS5lbXB0eVN0cnVjdHVyZUZvclByb3RvdHlwZUZyb21CYXNlU3Ry
dWN0dXJlKGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBiYXNlQ2xhc3MsIG1ha2VQb2x5UHJvdG9T
dHJ1Y3R1cmUpOwogICAgICAgICB9CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oCmluZGV4IDkzMzY4ODlmZWU4MTUwMThj
OWNhY2I0MzVjNjRhNzhhYzEwYWU3M2IuLjFmYTQ4NThjN2MzZTZlMjFiNTRjMDM4N2ViNmM0ODQz
YTgwMTMxZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVy
bmFsRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5h
bEZ1bmN0aW9uLmgKQEAgLTEwMiw4ICsxMDIsNiBAQCBBTFdBWVNfSU5MSU5FIFN0cnVjdHVyZSog
SW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoRXhlY1N0YXRlKiBleAog
ewogICAgIC8vIFdlIGFsbG93IG5ld1RhcmdldCA9PSBKU1ZhbHVlKCkgYmVjYXVzZSB0aGUgQVBJ
IG5lZWRzIHRvIGJlIGFibGUgdG8gY3JlYXRlIGNsYXNzZXMgd2l0aG91dCBoYXZpbmcgYSByZWFs
IEpTIGZyYW1lLgogICAgIC8vIFNpbmNlIHdlIGRvbid0IGFsbG93IHN1YmNsYXNzaW5nIGluIHRo
ZSBBUEkgd2UganVzdCB0cmVhdCBuZXdUYXJnZXQgPT0gSlNWYWx1ZSgpIGFzIG5ld1RhcmdldCA9
PSBleGVjLT5qc0NhbGxlZSgpCi0gICAgQVNTRVJUKCFuZXdUYXJnZXQgfHwgbmV3VGFyZ2V0Lmlz
Q29uc3RydWN0b3IoZXhlYy0+dm0oKSkpOwotCiAgICAgaWYgKG5ld1RhcmdldCAmJiBuZXdUYXJn
ZXQgIT0gYmFzZUNhbGxlZSkKICAgICAgICAgcmV0dXJuIGNyZWF0ZVN1YmNsYXNzU3RydWN0dXJl
U2xvdyhleGVjLCBuZXdUYXJnZXQsIGJhc2VDbGFzcyk7CiAgICAgcmV0dXJuIGJhc2VDbGFzczsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlv
bi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uY3Bw
CmluZGV4IDdkNjU5ZGJjMzQ0ODM4MmU4YzQ4NTdkOGFlODE5OTVkNGQ0YjBiYjcuLjAyZGE5Yjlj
NWFkMjlmZWRkMjQ3MzYyNmZkYzRhZDc4NzYxYmFiMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmNwcApAQCAtMTYwLDcgKzE2MCw4IEBA
IGlubGluZSBTdHJ1Y3R1cmUqIGdldEJvdW5kRnVuY3Rpb25TdHJ1Y3R1cmUoVk0mIHZtLCBFeGVj
U3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqCiAgICAgLy8gY3VycmVudGx5LiBXaG9ldmVyIHdvcmtz
IG9uIGNhY2hpbmcgc3RydWN0dXJlIGNoYW5nZXMgZm9yIHByb3RvdHlwZSB0cmFuc2l0aW9ucyBz
aG91bGQgY29uc2lkZXIgdGhpcyBwcm9ibGVtIGFzIHdlbGwuCiAgICAgLy8gU2VlOiBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUyNzM4CiAgICAgaWYgKHByb3RvdHlw
ZS5pc09iamVjdCgpICYmIHByb3RvdHlwZS5nZXRPYmplY3QoKS0+Z2xvYmFsT2JqZWN0KHZtKSA9
PSBnbG9iYWxPYmplY3QpIHsKLSAgICAgICAgcmVzdWx0ID0gdm0uc3RydWN0dXJlQ2FjaGUuZW1w
dHlTdHJ1Y3R1cmVGb3JQcm90b3R5cGVGcm9tQmFzZVN0cnVjdHVyZShnbG9iYWxPYmplY3QsIHBy
b3RvdHlwZS5nZXRPYmplY3QoKSwgcmVzdWx0KTsKKyAgICAgICAgYm9vbCBtYWtlUG9seVByb3Rv
U3RydWN0dXJlID0gZmFsc2U7CisgICAgICAgIHJlc3VsdCA9IHZtLnN0cnVjdHVyZUNhY2hlLmVt
cHR5U3RydWN0dXJlRm9yUHJvdG90eXBlRnJvbUJhc2VTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LCBw
cm90b3R5cGUuZ2V0T2JqZWN0KCksIHJlc3VsdCwgbWFrZVBvbHlQcm90b1N0cnVjdHVyZSk7CiAg
ICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKHJlc3VsdC0+Z2xvYmFsT2Jq
ZWN0KCkgPT0gZ2xvYmFsT2JqZWN0KTsKICAgICB9IGVsc2UKICAgICAgICAgcmVzdWx0ID0gU3Ry
dWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCByZXN1bHQtPnR5cGVJ
bmZvKCksIHJlc3VsdC0+Y2xhc3NJbmZvKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHZW5lcmF0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJiZTkwYzFmZjBhM2Y1NGRjYzk0M2Ri
OTJiOTMzNmJmMTM0Mzc4YWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dlbmVyYXRvci5jcHAKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU0dlbmVyYXRvci5oIgorCisjaW5jbHVk
ZSAiQnVpbHRpbk5hbWVzLmgiCisjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJKU0NJbmxp
bmVzLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTSW50ZXJuYWxGaWVs
ZE9iamVjdEltcGxJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0lu
Zm8gSlNHZW5lcmF0b3I6OnNfaW5mbyA9IHsgIkdlbmVyYXRvciIsICZCYXNlOjpzX2luZm8sIG51
bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNHZW5lcmF0b3IpIH07CisKK0pT
R2VuZXJhdG9yKiBKU0dlbmVyYXRvcjo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCit7CisgICAgSlNHZW5lcmF0b3IqIGdlbmVyYXRvciA9IG5ldyAoTm90TnVsbCwgYWxsb2Nh
dGVDZWxsPEpTR2VuZXJhdG9yPih2bS5oZWFwKSkgSlNHZW5lcmF0b3Iodm0sIHN0cnVjdHVyZSk7
CisgICAgZ2VuZXJhdG9yLT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgcmV0dXJuIGdlbmVyYXRv
cjsKK30KKworU3RydWN0dXJlKiBKU0dlbmVyYXRvcjo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAg
cmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlw
ZUluZm8oSlNHZW5lcmF0b3JUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK0pT
R2VuZXJhdG9yOjpKU0dlbmVyYXRvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAg
IDogQmFzZSh2bSwgc3RydWN0dXJlKQoreworfQorCit2b2lkIEpTR2VuZXJhdG9yOjpmaW5pc2hD
cmVhdGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIGlu
dGVybmFsRmllbGQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEZpZWxkOjpQb2x5UHJvdG8pKS5zZXQo
dm0sIHRoaXMsIEpTVmFsdWUoKSk7CisgICAgaW50ZXJuYWxGaWVsZChzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oRmllbGQ6OlN0YXRlKSkuc2V0KHZtLCB0aGlzLCBqc051bWJlcihzdGF0aWNfY2FzdDxp
bnQzMl90PihHZW5lcmF0b3JTdGF0ZTo6SW5pdCkpKTsKKyAgICBpbnRlcm5hbEZpZWxkKHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihGaWVsZDo6TmV4dCkpLnNldCh2bSwgdGhpcywganNVbmRlZmluZWQo
KSk7CisgICAgaW50ZXJuYWxGaWVsZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oRmllbGQ6OlRoaXMp
KS5zZXQodm0sIHRoaXMsIGpzVW5kZWZpbmVkKCkpOworICAgIGludGVybmFsRmllbGQoc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEZpZWxkOjpGcmFtZSkpLnNldCh2bSwgdGhpcywganNVbmRlZmluZWQo
KSk7Cit9CisKK3ZvaWQgSlNHZW5lcmF0b3I6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBT
bG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpT
R2VuZXJhdG9yKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2Jq
ZWN0LCBpbmZvKCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRv
cik7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2VuZXJhdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTRhN2EzNDU2ZTE5YjM3N2UzN2IxYWQzZWRj
NzE2MGNlNjFlMjliNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2VuZXJhdG9yLmgKQEAgLTAsMCArMSw4OCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSAiSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbC5oIgorCituYW1l
c3BhY2UgSlNDIHsKKworY2xhc3MgSlNGdW5jdGlvbjsKKworY2xhc3MgSlNHZW5lcmF0b3IgZmlu
YWwgOiBwdWJsaWMgSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbDw1PiB7CitwdWJsaWM6CisgICAg
dXNpbmcgQmFzZSA9IEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGw8NT47CisKKyAgICAvLyBKU0dl
bmVyYXRvciBoYXMgb25lIGlubGluZSBzdG9yYWdlIHNsb3QsIHdoaWNoIGlzIHBvaW50aW5nIGlu
dGVybmFsRmllbGQoMCkuCisgICAgc3RhdGljIHNpemVfdCBhbGxvY2F0aW9uU2l6ZShDaGVja2Vk
PHNpemVfdD4gaW5saW5lQ2FwYWNpdHkpCisgICAgeworICAgICAgICBBU1NFUlRfVU5VU0VEKGlu
bGluZUNhcGFjaXR5LCBpbmxpbmVDYXBhY2l0eSA9PSAwVSB8fCBpbmxpbmVDYXBhY2l0eSA9PSAx
VSk7CisgICAgICAgIHJldHVybiBzaXplb2YoSlNHZW5lcmF0b3IpOworICAgIH0KKworICAgIGVu
dW0gY2xhc3MgR2VuZXJhdG9yUmVzdW1lTW9kZSA6IGludDMyX3QgeworICAgICAgICBOb3JtYWxN
b2RlID0gMCwKKyAgICAgICAgUmV0dXJuTW9kZSA9IDEsCisgICAgICAgIFRocm93TW9kZSA9IDIK
KyAgICB9OworCisgICAgZW51bSBjbGFzcyBHZW5lcmF0b3JTdGF0ZSA6IGludDMyX3QgeworICAg
ICAgICBDb21wbGV0ZWQgPSAtMSwKKyAgICAgICAgRXhlY3V0aW5nID0gLTIsCisgICAgICAgIElu
aXQgPSAwLAorICAgIH07CisKKyAgICAvLyBbdGhpc10sIEBnZW5lcmF0b3IsIEBnZW5lcmF0b3JT
dGF0ZSwgQGdlbmVyYXRvclZhbHVlLCBAZ2VuZXJhdG9yUmVzdW1lTW9kZSwgQGdlbmVyYXRvckZy
YW1lLgorICAgIGVudW0gY2xhc3MgR2VuZXJhdG9yQXJndW1lbnQgOiBpbnQzMl90IHsKKyAgICAg
ICAgVGhpc1ZhbHVlID0gMCwKKyAgICAgICAgR2VuZXJhdG9yID0gMSwKKyAgICAgICAgU3RhdGUg
PSAyLAorICAgICAgICBWYWx1ZSA9IDMsCisgICAgICAgIFJlc3VtZU1vZGUgPSA0LAorICAgICAg
ICBGcmFtZSA9IDUsCisgICAgfTsKKworICAgIGVudW0gY2xhc3MgRmllbGQgOiB1aW50MzJfdCB7
CisgICAgICAgIFBvbHlQcm90byA9IDAsCisgICAgICAgIFN0YXRlLAorICAgICAgICBOZXh0LAor
ICAgICAgICBUaGlzLAorICAgICAgICBGcmFtZSwKKyAgICB9OworICAgIHN0YXRpY19hc3NlcnQo
bnVtYmVyT2ZJbnRlcm5hbEZpZWxkcyA9PSA1KTsKKworICAgIHN0YXRpYyBKU0dlbmVyYXRvciog
Y3JlYXRlKFZNJiwgU3RydWN0dXJlKik7CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3Ry
dWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVfRVhQ
T1JUX0lORk87CisKKyAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RW
aXNpdG9yJik7CisKK3Byb3RlY3RlZDoKKyAgICBKU0dlbmVyYXRvcihWTSYsIFN0cnVjdHVyZSop
OworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpT
QwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3JG
dW5jdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3JGdW5j
dGlvbi5oCmluZGV4IGE0NTRiOTU4ODA2MWQ0OGI1N2Y1NmIzMGVmZTA2M2M4NGYyNmIyOTMuLmVm
ZDI4OTBhMzFmYWY4MGRmYWM1MGI3NDQwYjlkMmYzNDZlY2EyY2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmgKQEAgLTQxLDI4
ICs0MSw3IEBAIGNsYXNzIEpTR2VuZXJhdG9yRnVuY3Rpb24gZmluYWwgOiBwdWJsaWMgSlNGdW5j
dGlvbiB7CiAjZW5kaWYKICAgICBmcmllbmQgY2xhc3MgVk07CiBwdWJsaWM6Ci0gICAgdHlwZWRl
ZiBKU0Z1bmN0aW9uIEJhc2U7Ci0KLSAgICBlbnVtIGNsYXNzIEdlbmVyYXRvclJlc3VtZU1vZGUg
OiBpbnQzMl90IHsKLSAgICAgICAgTm9ybWFsTW9kZSA9IDAsCi0gICAgICAgIFJldHVybk1vZGUg
PSAxLAotICAgICAgICBUaHJvd01vZGUgPSAyCi0gICAgfTsKLQotICAgIGVudW0gY2xhc3MgR2Vu
ZXJhdG9yU3RhdGUgOiBpbnQzMl90IHsKLSAgICAgICAgQ29tcGxldGVkID0gLTEsCi0gICAgICAg
IEV4ZWN1dGluZyA9IC0yLAotICAgIH07Ci0KLSAgICAvLyBbdGhpc10sIEBnZW5lcmF0b3IsIEBn
ZW5lcmF0b3JTdGF0ZSwgQGdlbmVyYXRvclZhbHVlLCBAZ2VuZXJhdG9yUmVzdW1lTW9kZSwgQGdl
bmVyYXRvckZyYW1lLgotICAgIGVudW0gY2xhc3MgR2VuZXJhdG9yQXJndW1lbnQgOiBpbnQzMl90
IHsKLSAgICAgICAgVGhpc1ZhbHVlID0gMCwKLSAgICAgICAgR2VuZXJhdG9yID0gMSwKLSAgICAg
ICAgU3RhdGUgPSAyLAotICAgICAgICBWYWx1ZSA9IDMsCi0gICAgICAgIFJlc3VtZU1vZGUgPSA0
LAotICAgICAgICBGcmFtZSA9IDUsCi0gICAgfTsKKyAgICB1c2luZyBCYXNlID0gSlNGdW5jdGlv
bjsKIAogICAgIGNvbnN0IHN0YXRpYyB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0
cnVjdHVyZUZsYWdzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHAKaW5kZXggYzZhYjg2YjgwMTdmOTA2Mjg1YWJhMjI3Y2RjZDE1OGZmMTc3
NjY5MS4uNjNiODUyNDU4NTg0YWJmNTRiNzI5YWE1MTBjNmVlYzUzMTJjYjAzZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtODE5
LDYgKzgxOSw3IEBAIGNhcGl0YWxOYW1lICMjIENvbnN0cnVjdG9yKiBsb3dlck5hbWUgIyMgQ29u
c3RydWN0b3IgPSBmZWF0dXJlRmxhZyA/IGNhcGl0YWxOYW1lCiAKICAgICBtX2dlbmVyYXRvclBy
b3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMt
PmNvbnN0cnVjdG9yLCBtX2dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmdldCgpLCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOwogICAg
IG1fZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIG1fZ2VuZXJhdG9yUHJvdG90eXBlLmdl
dCgpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVh
ZE9ubHkpOworICAgIG1fZ2VuZXJhdG9yU3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNHZW5lcmF0
b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9nZW5lcmF0b3JQcm90b3R5cGUuZ2V0KCkp
KTsKIAogICAgIG1fYXN5bmNGdW5jdGlvblByb3RvdHlwZS5zZXQodm0sIHRoaXMsIEFzeW5jRnVu
Y3Rpb25Qcm90b3R5cGU6OmNyZWF0ZSh2bSwgQXN5bmNGdW5jdGlvblByb3RvdHlwZTo6Y3JlYXRl
U3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSkpOwogICAgIEFz
eW5jRnVuY3Rpb25Db25zdHJ1Y3RvciogYXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yID0gQXN5bmNG
dW5jdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6
Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBmdW5jdGlvbkNvbnN0cnVjdG9yKSwgbV9hc3luY0Z1
bmN0aW9uUHJvdG90eXBlLmdldCgpKTsKQEAgLTE3NjcsNiArMTc2OCw3IEBAIHZvaWQgSlNHbG9i
YWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRv
cikKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2dlbmVyYXRvckZ1bmN0aW9uU3Ry
dWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2FzeW5jRnVuY3Rpb25T
dHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fYXN5bmNHZW5lcmF0
b3JGdW5jdGlvblN0cnVjdHVyZSk7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9n
ZW5lcmF0b3JTdHJ1Y3R1cmUpOwogICAgIHRoaXNPYmplY3QtPm1faXRlcmF0b3JSZXN1bHRPYmpl
Y3RTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVj
dC0+bV9yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKHRo
aXNPYmplY3QtPm1fcmVnRXhwTWF0Y2hlc0FycmF5V2l0aEdyb3Vwc1N0cnVjdHVyZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCAxMDVk
NTZhOGM4YzNkMGExNDFjNDQwYWY3NGIwODllNzdiYWE0Y2I5Li4yYWQ5MWE1M2Y4ZWFlOGM0NDY1
YzEzNzNhODg0MzNlOTZiOTgzNzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTM3NCw2ICszNzQsNyBAQCBjbGFzcyBKU0dsb2JhbE9i
amVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBXcml0ZUJhcnJp
ZXI8U3RydWN0dXJlPiBtX2FzeW5jRnVuY3Rpb25TdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVy
PFN0cnVjdHVyZT4gbV9hc3luY0dlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlOwogICAgIFdyaXRl
QmFycmllcjxTdHJ1Y3R1cmU+IG1fZ2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmU7CisgICAgV3Jp
dGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9nZW5lcmF0b3JTdHJ1Y3R1cmU7CiAgICAgTGF6eVByb3Bl
cnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1faXRlcmF0b3JSZXN1bHRPYmplY3RTdHJ1
Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9yZWdFeHBNYXRjaGVzQXJyYXlT
dHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9yZWdFeHBNYXRjaGVzQXJy
YXlXaXRoR3JvdXBzU3RydWN0dXJlOwpAQCAtNzUyLDYgKzc1Myw3IEBAIGNsYXNzIEpTR2xvYmFs
T2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIFN0cnVjdHVy
ZSogbnVtYmVyT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9udW1iZXJPYmplY3RT
dHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CiAgICAgU3RydWN0dXJlKiBtYXBTdHJ1Y3R1cmUoKSBjb25z
dCB7IHJldHVybiBtX21hcFN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogcmVnRXhw
U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9yZWdFeHBTdHJ1Y3R1cmUuZ2V0KCk7IH0KKyAg
ICBTdHJ1Y3R1cmUqIGdlbmVyYXRvclN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fZ2VuZXJh
dG9yU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBnZW5lcmF0b3JGdW5jdGlvblN0
cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fZ2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0
KCk7IH0KICAgICBTdHJ1Y3R1cmUqIGFzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJl
dHVybiBtX2FzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIGFz
eW5jR2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2FzeW5jR2Vu
ZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1R5cGUuY3BwCmluZGV4IDg0OWIzNzkxODhlZmNlNTcwOTIzZjVhMWE1YTRmNzFiYzlk
OTk0NzYuLmRhYzVlNjlkYTIwNDUxYjkwZmQ0OGIwN2E3MGMxMTIyM2Y1NzA3NmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmNwcApAQCAtOTYsNiArOTYsNyBAQCB2b2lk
IHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgSlNDOjpKU1R5cGUgdHlwZSkKICAgICBD
QVNFKFdpdGhTY29wZVR5cGUpCiAgICAgQ0FTRShSZWdFeHBPYmplY3RUeXBlKQogICAgIENBU0Uo
UHJveHlPYmplY3RUeXBlKQorICAgIENBU0UoSlNHZW5lcmF0b3JUeXBlKQogICAgIENBU0UoSlNQ
cm9taXNlVHlwZSkKICAgICBDQVNFKEpTTWFwVHlwZSkKICAgICBDQVNFKEpTU2V0VHlwZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmgKaW5kZXggOGQzNWFjNzc5ODM3MzliMWEz
ZmU1ZDUwYTZmOTFiOTAxMjlmZjc3ZC4uMDFlNzAyMjczNDc2NGIxOGQ5ZTMxYTkxZWU4Y2Q2MGE5
OTU5MjVlYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmgKQEAgLTEwOCw2
ICsxMDgsNyBAQCBlbnVtIEpTVHlwZSA6IHVpbnQ4X3QgewogCiAgICAgUmVnRXhwT2JqZWN0VHlw
ZSwKICAgICBQcm94eU9iamVjdFR5cGUsCisgICAgSlNHZW5lcmF0b3JUeXBlLAogICAgIEpTUHJv
bWlzZVR5cGUsCiAgICAgSlNNYXBUeXBlLAogICAgIEpTU2V0VHlwZSwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNhY2hlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNhY2hlLmNwcAppbmRleCBiNTU4NGMzODg5
NzhlMjVkYTlhN2VjNGQ2NDUwZDZlNmY4YjMxNTAxLi5mMzBiNTIzZWNjMzJjNTI5YThiMDY3MGUy
YzMyMjk2N2RiYTU3OGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJ1Y3R1cmVDYWNoZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RydWN0dXJlQ2FjaGUuY3BwCkBAIC03NywxNCArNzcsMTkgQEAgU3RydWN0dXJlKiBTdHJ1Y3R1
cmVDYWNoZTo6ZW1wdHlPYmplY3RTdHJ1Y3R1cmVDb25jdXJyZW50bHkoSlNHbG9iYWxPYmplY3Qq
IGdsb2IKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotU3RydWN0dXJlKiBTdHJ1Y3R1cmVDYWNo
ZTo6ZW1wdHlTdHJ1Y3R1cmVGb3JQcm90b3R5cGVGcm9tQmFzZVN0cnVjdHVyZShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogcHJvdG90eXBlLCBTdHJ1Y3R1cmUqIGJhc2VT
dHJ1Y3R1cmUpCitTdHJ1Y3R1cmUqIFN0cnVjdHVyZUNhY2hlOjplbXB0eVN0cnVjdHVyZUZvclBy
b3RvdHlwZUZyb21CYXNlU3RydWN0dXJlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
T2JqZWN0KiBwcm90b3R5cGUsIFN0cnVjdHVyZSogYmFzZVN0cnVjdHVyZSwgYm9vbCBtYWtlUG9s
eVByb3RvU3RydWN0dXJlKQogewogICAgIC8vIFdlIGN1cnJlbnRseSBkbyBub3QgaGF2ZSBpbmxp
bmUgY2FwYWNpdHkgc3RhdGljIGFuYWx5c2lzIGZvciBzdWJjbGFzc2VzIGFuZCBhbGwgaW50ZXJu
YWwgZnVuY3Rpb24gY29uc3RydWN0b3JzIGhhdmUgYSBkZWZhdWx0IGlubGluZSBjYXBhY2l0eSBv
ZiAwLgogICAgIEluZGV4aW5nVHlwZSBpbmRleGluZ1R5cGUgPSBiYXNlU3RydWN0dXJlLT5pbmRl
eGluZ1R5cGUoKTsKLSAgICBpZiAocHJvdG90eXBlLT5hbnlPYmplY3RJbkNoYWluTWF5SW50ZXJj
ZXB0SW5kZXhlZEFjY2Vzc2VzKGdsb2JhbE9iamVjdC0+dm0oKSkgJiYgaGFzSW5kZXhlZFByb3Bl
cnRpZXMoaW5kZXhpbmdUeXBlKSkKKyAgICBpZiAocHJvdG90eXBlLT5hbnlPYmplY3RJbkNoYWlu
TWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzKGdsb2JhbE9iamVjdC0+dm0oKSkgJiYgaGFzSW5k
ZXhlZFByb3BlcnRpZXMoaW5kZXhpbmdUeXBlKSkgeworICAgICAgICBBU1NFUlRfV0lUSF9NRVNT
QUdFKCFtYWtlUG9seVByb3RvU3RydWN0dXJlLCAiUG9seVByb3RvIGlzIG9ubHkgYXZhaWxhYmxl
IGZvciBiYXNlU3RydWN0dXJlIHdoaWNoIGRvZXMgbm90IGhhdmUgaW5kZXhpbmdUeXBlIik7CiAg
ICAgICAgIGluZGV4aW5nVHlwZSA9IChpbmRleGluZ1R5cGUgJiB+SW5kZXhpbmdTaGFwZU1hc2sp
IHwgU2xvd1B1dEFycmF5U3RvcmFnZVNoYXBlOworICAgIH0KIAotICAgIHJldHVybiBjcmVhdGVF
bXB0eVN0cnVjdHVyZShnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgYmFzZVN0cnVjdHVyZS0+dHlw
ZUluZm8oKSwgYmFzZVN0cnVjdHVyZS0+Y2xhc3NJbmZvKCksIGluZGV4aW5nVHlwZSwgMCwgZmFs
c2UsIG51bGxwdHIpOworICAgIHVuc2lnbmVkIGlubGluZUNhcGFjaXR5ID0gMDsKKyAgICBpZiAo
bWFrZVBvbHlQcm90b1N0cnVjdHVyZSkKKyAgICAgICAgaW5saW5lQ2FwYWNpdHkgPSAxOworICAg
IHJldHVybiBjcmVhdGVFbXB0eVN0cnVjdHVyZShnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgYmFz
ZVN0cnVjdHVyZS0+dHlwZUluZm8oKSwgYmFzZVN0cnVjdHVyZS0+Y2xhc3NJbmZvKCksIGluZGV4
aW5nVHlwZSwgaW5saW5lQ2FwYWNpdHksIG1ha2VQb2x5UHJvdG9TdHJ1Y3R1cmUsIG51bGxwdHIp
OwogfQogCiBTdHJ1Y3R1cmUqIFN0cnVjdHVyZUNhY2hlOjplbXB0eU9iamVjdFN0cnVjdHVyZUZv
clByb3RvdHlwZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogcHJvdG90
eXBlLCB1bnNpZ25lZCBpbmxpbmVDYXBhY2l0eSwgYm9vbCBtYWtlUG9seVByb3RvU3RydWN0dXJl
LCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDYWNoZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RydWN0dXJlQ2FjaGUuaAppbmRleCA3YTU4M2EwNjA5MGM4Mzk0N2VhMzQx
MmQ2YzEyMmRhMDM4NzllY2M0Li42NTZlOWRhYmQ4OTVkN2JiNzNkYzU3ZDgyMTRjMGEyMzY5YzE0
OTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVD
YWNoZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNhY2hl
LmgKQEAgLTUxLDcgKzUxLDcgQEAgY2xhc3MgU3RydWN0dXJlQ2FjaGUgewogICAgIHZvaWQgY2xl
YXIoKSB7IG1fc3RydWN0dXJlcy5jbGVhcigpOyB9CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBT
dHJ1Y3R1cmUqIGVtcHR5T2JqZWN0U3RydWN0dXJlRm9yUHJvdG90eXBlKEpTR2xvYmFsT2JqZWN0
KiwgSlNPYmplY3QqLCB1bnNpZ25lZCBpbmxpbmVDYXBhY2l0eSwgYm9vbCBtYWtlUG9seVByb3Rv
U3RydWN0dXJlID0gZmFsc2UsIEZ1bmN0aW9uRXhlY3V0YWJsZSogPSBudWxscHRyKTsKLSAgICBK
U19FWFBPUlRfUFJJVkFURSBTdHJ1Y3R1cmUqIGVtcHR5U3RydWN0dXJlRm9yUHJvdG90eXBlRnJv
bUJhc2VTdHJ1Y3R1cmUoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCosIFN0cnVjdHVyZSopOwor
ICAgIEpTX0VYUE9SVF9QUklWQVRFIFN0cnVjdHVyZSogZW1wdHlTdHJ1Y3R1cmVGb3JQcm90b3R5
cGVGcm9tQmFzZVN0cnVjdHVyZShKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiwgU3RydWN0dXJl
KiwgYm9vbCBtYWtlUG9seVByb3RvU3RydWN0dXJlKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBT
dHJ1Y3R1cmUqIGVtcHR5T2JqZWN0U3RydWN0dXJlQ29uY3VycmVudGx5KEpTR2xvYmFsT2JqZWN0
KiwgSlNPYmplY3QqIHByb3RvdHlwZSwgdW5zaWduZWQgaW5saW5lQ2FwYWNpdHkpOwogCiBwcml2
YXRlOgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwpp
bmRleCBiNWU4YjcxYmY4M2IzY2Y4Njg4NDk1YzlkNTExMGZlZjcwMDE5NTQwLi5lZjVlNWZmNjYw
ODVlNTBiNmEwNDQ3YzE0YmRmYWVjZGQ3NjI4MzUyIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5n
ZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE5LTA5LTA5
ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW0pTQ10gR2Vu
ZXJhdG9yIHNob3VsZCBoYXZlIGludGVybmFsIGZpZWxkcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAxMTU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdHJlc3MvY3JlYXRlLWdlbmVyYXRvci5qczog
QWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgICh0ZXN0LmdlbmVyYXRvcik6Cisg
ICAgICAgICh0ZXN0KToKKwogMjAxOS0wOS0wNiAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5j
b20+CiAKICAgICAgICAgR2FyZGVuaW5nOiBzcGVjdWxhdGl2ZSB0ZXN0IGZpeCB0byBncmVlbiBi
b3RzLgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvY3JlYXRlLWdlbmVyYXRvci5qcyBiL0pT
VGVzdHMvc3RyZXNzL2NyZWF0ZS1nZW5lcmF0b3IuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTJkMDMwNTFiNGMw
ODJkZjNhZWI5ODk1ODRkZDEzMmJmZjMzZTEzZAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMv
c3RyZXNzL2NyZWF0ZS1nZW5lcmF0b3IuanMKQEAgLTAsMCArMSwyMCBAQAorZnVuY3Rpb24gc2hv
dWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQor
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK2Z1
bmN0aW9uIHRlc3QoKSB7CisgICAgZnVuY3Rpb24qIGdlbmVyYXRvcigpIHsKKyAgICAgICAgcmV0
dXJuIHRoaXM7CisgICAgfQorCisgICAgdmFyIGcgPSBnZW5lcmF0b3IoKTsKKyAgICBzaG91bGRC
ZShnLl9fcHJvdG9fXywgZ2VuZXJhdG9yLnByb3RvdHlwZSk7CisgICAgcmV0dXJuIGc7Cit9CisK
K2ZvciAodmFyIGkgPSAwOyBpIDwgMWU2OyArK2kpIHsKKyAgICB2YXIgZzEgPSB0ZXN0KCk7Cisg
ICAgdmFyIGcyID0gdGVzdCgpOworICAgIHNob3VsZEJlKGcxLl9fcHJvdG9fXyAhPSBnMi5fX3By
b3RvX18sIHRydWUpOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378354</attachid>
            <date>2019-09-09 00:45:52 -0700</date>
            <delta_ts>2019-09-09 02:19:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201159-20190909004551.patch</filename>
            <type>text/plain</type>
            <size>102042</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5NjA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
MWFiMGFiYjE5NmM5NGE1OTljMjMzNDA2OWE1MzlhMWM4ZjIyZDk5Li40MGMwNGE3ZTkzNDY5ZGQx
ZjUyOWZkZDNlOTE1ZmVkNDBkYjUwNGM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMjggQEAKKzIwMTktMDktMDkgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBHZW5lcmF0b3Igc2hvdWxkIGhhdmUgaW50ZXJuYWwgZmllbGRz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDExNTkK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEphdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogU291cmNlcy50
eHQ6CisgICAgICAgICogYnVpbHRpbnMvQXN5bmNGdW5jdGlvblByb3RvdHlwZS5qczoKKyAgICAg
ICAgKGdsb2JhbFByaXZhdGUuYXN5bmNGdW5jdGlvblJlc3VtZSk6CisgICAgICAgICogYnVpbHRp
bnMvR2VuZXJhdG9yUHJvdG90eXBlLmpzOgorICAgICAgICAoZ2xvYmFsUHJpdmF0ZS5nZW5lcmF0
b3JSZXN1bWUpOgorICAgICAgICAobmV4dCk6CisgICAgICAgIChyZXR1cm4pOgorICAgICAgICAo
dGhyb3cpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNw
cDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb246OnJ1bik6CisgICAg
ICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5jcHA6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6OkJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkp
OgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuaDoKKyAgICAg
ICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3QucmI6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNv
ZGVVc2VEZWYuaDoKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCk6
CisgICAgICAgIChKU0M6OmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAq
IGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluaXNo
Q3JlYXRpb24pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmFsaXplTExJbnRJbmxpbmVD
YWNoZXMpOgorICAgICAgICAqIGJ5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcDoKKyAgICAgICAg
KEpTQzo6c3BlY3VsYXRpb25Gcm9tSlNUeXBlKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Qnl0
ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1
dEdlbmVyYXRvckZpZWxkcyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
Q3JlYXRlR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRO
ZXdHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFlpZWxk
KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWxlZ2F0ZVlpZWxkKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZW5lcmF0b3JTdGF0ZUNoYW5n
ZSk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXNHZW5lcmF0b3IpOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdG9yU3RhdGVSZWdpc3Rlcik6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0b3JWYWx1ZVJlZ2lzdGVyKToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3Rlcik6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0b3JGcmFtZVJlZ2lzdGVyKToK
KyAgICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6
Z2VuZXJhdG9ySW50ZXJuYWxGaWVsZEluZGV4KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVJbnRy
aW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19nZXRHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19wdXRHZW5l
cmF0b3JJbnRlcm5hbEZpZWxkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVJbnRyaW5zaWNOb2Rl
OjplbWl0X2ludHJpbnNpY19pc0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uTm9k
ZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklu
bGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0
U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sp
OgorICAgICAgICAqIGRmZy9ERkdDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OmNhcGFiaWxpdHlMZXZlbCk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAgICAg
ICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcnNFeGl0
U3RhdGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJzRXhpdFN0YXRlKToKKyAgICAg
ICAgKiBkZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OkNvbnN0YW50Rm9sZGluZ1BoYXNlOjpmb2xkQ29uc3RhbnRzKToKKyAgICAgICAgKiBkZmcvREZH
RG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAgICAqIGRmZy9E
RkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5v
ZGUpOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwSXNDZWxsV2l0aFR5cGUp
OgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6Y29u
dmVydFRvTmV3R2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNTdHJ1Y3R1
cmUpOgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdPcGVy
YXRpb25zLmNwcDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGRm
Zy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1Nh
ZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAg
ICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjb21waWxlQ3JlYXRlR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0dlbmVyYXRvcik6CisgICAgICAgICogZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmg6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAg
KiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRp
b25QaGFzZS5jcHA6CisgICAgICAgICogZnRsL0ZUTENhcGFiaWxpdGllcy5jcHA6CisgICAgICAg
IChKU0M6OkZUTDo6Y2FuQ29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5j
cHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOb2RlKToK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5ld0dlbmVyYXRv
cik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDcmVhdGVH
ZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjppc0NlbGxX
aXRoVHlwZSk6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJp
dmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVT
bG93Q2FzZXMpOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBq
aXQvSklUT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfaW50ZXJuYWxfZmllbGQpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2ludGVybmFsX2ZpZWxkKToKKyAgICAgICAgKiBsbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQ
YXRocy5jcHA6CisgICAgICAgIChKU0M6OlNMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBydW50
aW1lL0NvbW1vblNsb3dQYXRocy5oOgorICAgICAgICAqIHJ1bnRpbWUvSW50ZXJuYWxGdW5jdGlv
bi5jcHA6CisgICAgICAgIChKU0M6OkludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3Ry
dWN0dXJlU2xvdyk6CisgICAgICAgICogcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmg6CisgICAg
ICAgIChKU0M6OkludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKToKKyAg
ICAgICAgKiBydW50aW1lL0pTR2VuZXJhdG9yLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkpT
R2VuZXJhdG9yOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpKU0dlbmVyYXRvcjo6Y3JlYXRlU3Ry
dWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmF0b3I6OkpTR2VuZXJhdG9yKToKKyAgICAg
ICAgKEpTQzo6SlNHZW5lcmF0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNH
ZW5lcmF0b3I6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmF0b3Iu
aDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3JG
dW5jdGlvbi5oLgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5oOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2Jh
bE9iamVjdDo6aW5pdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxk
cmVuKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6
OkpTR2xvYmFsT2JqZWN0OjpnZW5lcmF0b3JTdHJ1Y3R1cmUgY29uc3QpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNUeXBlLmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAg
ICogcnVudGltZS9KU1R5cGUuaDoKKwogMjAxOS0wOS0wNiAgTWFyayBMYW0gIDxtYXJrLmxhbUBh
cHBsZS5jb20+CiAKICAgICAgICAgSGFyZGVuIHByb3RlY3Rpb24gb2YgdGhlIEdpZ2FjYWdlIENv
bmZpZyBwYXJhbWV0ZXJzLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAwZDg4YjU0
NGNhYzFmNzhmOGU4ZTY5NzZlZjAyMGJjM2FlZGY4N2Q2Li4yNTMwNDAzMTlmMGQyYmQzMzYyYmM1
NjIwODRjNDVkODQ1ZmVlMzU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTgw
NCw2ICsxODA0LDcgQEAKIAkJRTM0MDBFQzEyMkExQ0M3QjAwOURFRDU0IC8qIEZ1bmN0aW9uRXhl
Y3V0YWJsZUlubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUzNDAwRUMwMjJBMUNDNzgwMDlERUQ1NCAvKiBGdW5jdGlvbkV4ZWN1dGFibGVJbmxp
bmVzLmggKi87IH07CiAJCUUzNEU2NTc1MjA2NjhFQUEwMEZCODFBQyAvKiBQYXJzZUhhc2guaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNEU2NTczMjA2
NjhFOEQwMEZCODFBQyAvKiBQYXJzZUhhc2guaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzRFREJGNzFEQjVGRkM5MDBEQzg3QTUgLyogRnJhbWVU
cmFjZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
MzRFREJGNjFEQjVGRkMxMDBEQzg3QTUgLyogRnJhbWVUcmFjZXJzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTM0RjkzMEUyMzIyRDg4MjAwMkI4
REI0IC8qIEpTR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFMzRGOTMwQzIzMjJEODgxMDAyQjhEQjQgLyogSlNHZW5lcmF0b3IuaCAqLzsg
fTsKIAkJRTM1MDcwOEExREM0OUJCRjAwODlCQ0Q2IC8qIERPTUpJVFNpZ25hdHVyZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1MDcwODkxREM0OUJC
NjAwODlCQ0Q2IC8qIERPTUpJVFNpZ25hdHVyZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzNTQ2MjJCMUI2MDY1RDEwMDU0NTM4NiAvKiBDb25z
dHJ1Y3RBYmlsaXR5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMzU0NjIyQTFCNjA2NUQxMDA1NDUzODYgLyogQ29uc3RydWN0QWJpbGl0eS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzNTU1QjhBMURB
RTAzQTUwMEYzNjkyMSAvKiBET01KSVRDYWxsRE9NR2V0dGVyU25pcHBldC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1NTVCODkxREFFMDNBMjAwRjM2
OTIxIC8qIERPTUpJVENhbGxET01HZXR0ZXJTbmlwcGV0LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTQ4OTksNiArNDkwMCw4IEBACiAJCUUzNEU2
NTczMjA2NjhFOEQwMEZCODFBQyAvKiBQYXJzZUhhc2guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUGFyc2VIYXNoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUz
NEU2NTc0MjA2NjhFOEUwMEZCODFBQyAvKiBQYXJzZUhhc2guY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gUGFyc2VIYXNoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRTM0RURCRjYxREI1RkZDMTAwREM4N0E1IC8qIEZyYW1lVHJhY2Vycy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGcmFtZVRyYWNlcnMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRTM0RjkzMEIyMzIyRDg4MTAwMkI4REI0IC8qIEpTR2VuZXJhdG9y
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTR2VuZXJhdG9yLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM0RjkzMEMyMzIyRDg4MTAwMkI4REI0
IC8qIEpTR2VuZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTR2Vu
ZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNTA3MDg5MURDNDlCQjYw
MDg5QkNENiAvKiBET01KSVRTaWduYXR1cmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRE9NSklUU2lnbmF0dXJlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUz
NTQ2MjJBMUI2MDY1RDEwMDU0NTM4NiAvKiBDb25zdHJ1Y3RBYmlsaXR5LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbnN0cnVjdEFiaWxpdHkuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRTM1NTVCODkxREFFMDNBMjAwRjM2OTIxIC8qIERPTUpJVENhbGxET01H
ZXR0ZXJTbmlwcGV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUpJVENh
bGxET01HZXR0ZXJTbmlwcGV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03MTcw
LDYgKzcxNzMsOCBAQAogCQkJCUY2OTJBODVFMDI1NTU5N0QwMUZGNjBGNyAvKiBKU0Z1bmN0aW9u
LmNwcCAqLywKIAkJCQlGNjkyQTg1RjAyNTU1OTdEMDFGRjYwRjcgLyogSlNGdW5jdGlvbi5oICov
LAogCQkJCUE3MjAyOEI5MTc5NzYwM0QwMDk4MDI4QyAvKiBKU0Z1bmN0aW9uSW5saW5lcy5oICov
LAorCQkJCUUzNEY5MzBCMjMyMkQ4ODEwMDJCOERCNCAvKiBKU0dlbmVyYXRvci5jcHAgKi8sCisJ
CQkJRTM0RjkzMEMyMzIyRDg4MTAwMkI4REI0IC8qIEpTR2VuZXJhdG9yLmggKi8sCiAJCQkJNzBC
NzkxOEMxQzAyNDQ2MjAwMjQ4MUUyIC8qIEpTR2VuZXJhdG9yRnVuY3Rpb24uY3BwICovLAogCQkJ
CTcwQjc5MThEMUMwMjQ0NjIwMDI0ODFFMiAvKiBKU0dlbmVyYXRvckZ1bmN0aW9uLmggKi8sCiAJ
CQkJMEYyQjY2QzMxN0I2QjVBQjAwQTdBRTNGIC8qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Lmgg
Ki8sCkBAIC05NjI5LDYgKzk2MzQsNyBAQAogCQkJCTBGMkI2NkYwMTdCNkI1QUIwMEE3QUUzRiAv
KiBKU0Zsb2F0NjRBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MUYwRTE2RjVDRDAw
QjM0NDYwIC8qIEpTRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUE3MjAyOEJBMTc5NzYw
M0QwMDk4MDI4QyAvKiBKU0Z1bmN0aW9uSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM0
RjkzMEUyMzIyRDg4MjAwMkI4REI0IC8qIEpTR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk3MEI3OTE5QzFDMDI0QTQ5MDAyNDgxRTIgLyogSlNHZW5lcmF0b3JGdW5jdGlvbi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEYyQjY2RjExN0I2QjVBQjAwQTdBRTNGIC8qIEpTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCNjZGMjE3QjZCNUFCMDBBN0FFM0Yg
LyogSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvU291cmNlcy50eHQKaW5kZXggMjYyMTkzYjIzODUxMmY4ZTk1ZGVkMTRhYjI4
OTBjNTFkYmM1ZTljMC4uZDEwMTIwMjI3YTBjMWJlYTU5ODkyYTI2OWRhY2I0Zjg1NDBiNWY5YyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dApAQCAtODI0LDYgKzgyNCw3IEBAIHJ1bnRpbWUv
SlNEYXRlTWF0aC5jcHAKIHJ1bnRpbWUvSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUu
Y3BwCiBydW50aW1lL0pTRml4ZWRBcnJheS5jcHAKIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHAKK3J1
bnRpbWUvSlNHZW5lcmF0b3IuY3BwCiBydW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uY3BwCiBy
dW50aW1lL0pTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50LmNwcAogcnVudGltZS9KU0dsb2JhbE9i
amVjdC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Bc3lu
Y0Z1bmN0aW9uUHJvdG90eXBlLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0Fz
eW5jRnVuY3Rpb25Qcm90b3R5cGUuanMKaW5kZXggNTIxNGJkNmYzYTFiNGUyZTVmMWU5NWFhMWM5
OTExODk5Yjg5NTAwZi4uOTY4Y2YxZTczNDYxOTJmMWQ0NThjMzc5OGVjMzdjOGQxYmM5MWQwMiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0FzeW5jRnVuY3Rpb25Q
cm90b3R5cGUuanMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0FzeW5jRnVu
Y3Rpb25Qcm90b3R5cGUuanMKQEAgLTMxLDIyICszMSwyMiBAQCBmdW5jdGlvbiBhc3luY0Z1bmN0
aW9uUmVzdW1lKGdlbmVyYXRvciwgcHJvbWlzZSwgc2VudFZhbHVlLCByZXN1bWVNb2RlKQogCiAg
ICAgQGFzc2VydChAaXNQcm9taXNlKHByb21pc2UpKTsKIAotICAgIHZhciBzdGF0ZSA9IEBnZXRC
eUlkRGlyZWN0UHJpdmF0ZShnZW5lcmF0b3IsICJnZW5lcmF0b3JTdGF0ZSIpOworICAgIHZhciBz
dGF0ZSA9IEBnZXRHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKGdlbmVyYXRvciwgQGdlbmVyYXRvckZp
ZWxkU3RhdGUpOwogICAgIHZhciB2YWx1ZSA9IEB1bmRlZmluZWQ7CiAKICAgICBpZiAoc3RhdGUg
PT09IEBHZW5lcmF0b3JTdGF0ZUNvbXBsZXRlZCB8fCAocmVzdW1lTW9kZSAhPT0gQEdlbmVyYXRv
clJlc3VtZU1vZGVOb3JtYWwgJiYgcmVzdW1lTW9kZSAhPT0gQEdlbmVyYXRvclJlc3VtZU1vZGVU
aHJvdykpCiAgICAgICAgIEB0aHJvd1R5cGVFcnJvcigiQXN5bmMgZnVuY3Rpb24gaWxsZWdhbGx5
IHJlc3VtZWQiKTsKIAogICAgIHRyeSB7Ci0gICAgICAgIEBwdXRCeUlkRGlyZWN0UHJpdmF0ZShn
ZW5lcmF0b3IsICJnZW5lcmF0b3JTdGF0ZSIsIEBHZW5lcmF0b3JTdGF0ZUV4ZWN1dGluZyk7Ci0g
ICAgICAgIHZhbHVlID0gQGdldEJ5SWREaXJlY3RQcml2YXRlKGdlbmVyYXRvciwgImdlbmVyYXRv
ck5leHQiKS5AY2FsbChAZ2V0QnlJZERpcmVjdFByaXZhdGUoZ2VuZXJhdG9yLCAiZ2VuZXJhdG9y
VGhpcyIpLCBnZW5lcmF0b3IsIHN0YXRlLCBzZW50VmFsdWUsIHJlc3VtZU1vZGUsIEBnZXRCeUlk
RGlyZWN0UHJpdmF0ZShnZW5lcmF0b3IsICJnZW5lcmF0b3JGcmFtZSIpKTsKLSAgICAgICAgaWYg
KEBnZXRCeUlkRGlyZWN0UHJpdmF0ZShnZW5lcmF0b3IsICJnZW5lcmF0b3JTdGF0ZSIpID09PSBA
R2VuZXJhdG9yU3RhdGVFeGVjdXRpbmcpIHsKLSAgICAgICAgICAgIEBwdXRCeUlkRGlyZWN0UHJp
dmF0ZShnZW5lcmF0b3IsICJnZW5lcmF0b3JTdGF0ZSIsIEBHZW5lcmF0b3JTdGF0ZUNvbXBsZXRl
ZCk7CisgICAgICAgIEBwdXRHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKGdlbmVyYXRvciwgQGdlbmVy
YXRvckZpZWxkU3RhdGUsIEBHZW5lcmF0b3JTdGF0ZUV4ZWN1dGluZyk7CisgICAgICAgIHZhbHVl
ID0gQGdldEdlbmVyYXRvckludGVybmFsRmllbGQoZ2VuZXJhdG9yLCBAZ2VuZXJhdG9yRmllbGRO
ZXh0KS5AY2FsbChAZ2V0R2VuZXJhdG9ySW50ZXJuYWxGaWVsZChnZW5lcmF0b3IsIEBnZW5lcmF0
b3JGaWVsZFRoaXMpLCBnZW5lcmF0b3IsIHN0YXRlLCBzZW50VmFsdWUsIHJlc3VtZU1vZGUsIEBn
ZXRHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKGdlbmVyYXRvciwgQGdlbmVyYXRvckZpZWxkRnJhbWUp
KTsKKyAgICAgICAgaWYgKEBnZXRHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKGdlbmVyYXRvciwgQGdl
bmVyYXRvckZpZWxkU3RhdGUpID09PSBAR2VuZXJhdG9yU3RhdGVFeGVjdXRpbmcpIHsKKyAgICAg
ICAgICAgIEBwdXRHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKGdlbmVyYXRvciwgQGdlbmVyYXRvckZp
ZWxkU3RhdGUsIEBHZW5lcmF0b3JTdGF0ZUNvbXBsZXRlZCk7CiAgICAgICAgICAgICBAcmVzb2x2
ZVByb21pc2VXaXRoRmlyc3RSZXNvbHZpbmdGdW5jdGlvbkNhbGxDaGVjayhwcm9taXNlLCB2YWx1
ZSk7CiAgICAgICAgICAgICByZXR1cm4gcHJvbWlzZTsKICAgICAgICAgfQogICAgIH0gY2F0Y2gg
KGVycm9yKSB7Ci0gICAgICAgIEBwdXRCeUlkRGlyZWN0UHJpdmF0ZShnZW5lcmF0b3IsICJnZW5l
cmF0b3JTdGF0ZSIsIEBHZW5lcmF0b3JTdGF0ZUNvbXBsZXRlZCk7CisgICAgICAgIEBwdXRHZW5l
cmF0b3JJbnRlcm5hbEZpZWxkKGdlbmVyYXRvciwgQGdlbmVyYXRvckZpZWxkU3RhdGUsIEBHZW5l
cmF0b3JTdGF0ZUNvbXBsZXRlZCk7CiAgICAgICAgIEByZWplY3RQcm9taXNlV2l0aEZpcnN0UmVz
b2x2aW5nRnVuY3Rpb25DYWxsQ2hlY2socHJvbWlzZSwgZXJyb3IpOwogICAgICAgICByZXR1cm4g
cHJvbWlzZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRp
bnMvR2VuZXJhdG9yUHJvdG90eXBlLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5z
L0dlbmVyYXRvclByb3RvdHlwZS5qcwppbmRleCBiMjgwMWRmODgyYjhhOGJjNmUxNWU2ZTE0YTlm
Mjk2Y2QxYzY5MjVkLi44MzkzZWEyOGFlODk5NzY5MmNmZWI2ZWUyNTRiYWY3OTUyNzFjMDhkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvR2VuZXJhdG9yUHJvdG90
eXBlLmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9HZW5lcmF0b3JQcm90
b3R5cGUuanMKQEAgLTM0LDE0ICszNCwxNCBAQCBmdW5jdGlvbiBnZW5lcmF0b3JSZXN1bWUoZ2Vu
ZXJhdG9yLCBzdGF0ZSwgZ2VuZXJhdG9yVGhpcywgc2VudFZhbHVlLCB2YWx1ZSwgcmVzdQogICAg
IHZhciBkb25lID0gc3RhdGUgPT09IEBHZW5lcmF0b3JTdGF0ZUNvbXBsZXRlZDsKICAgICBpZiAo
IWRvbmUpIHsKICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIEBwdXRCeUlkRGlyZWN0UHJpdmF0
ZShnZW5lcmF0b3IsICJnZW5lcmF0b3JTdGF0ZSIsIEBHZW5lcmF0b3JTdGF0ZUV4ZWN1dGluZyk7
Ci0gICAgICAgICAgICB2YWx1ZSA9IEBnZXRCeUlkRGlyZWN0UHJpdmF0ZShnZW5lcmF0b3IsICJn
ZW5lcmF0b3JOZXh0IikuQGNhbGwoZ2VuZXJhdG9yVGhpcywgZ2VuZXJhdG9yLCBzdGF0ZSwgc2Vu
dFZhbHVlLCByZXN1bWVNb2RlLCBAZ2V0QnlJZERpcmVjdFByaXZhdGUoZ2VuZXJhdG9yLCAiZ2Vu
ZXJhdG9yRnJhbWUiKSk7Ci0gICAgICAgICAgICBpZiAoQGdldEJ5SWREaXJlY3RQcml2YXRlKGdl
bmVyYXRvciwgImdlbmVyYXRvclN0YXRlIikgPT09IEBHZW5lcmF0b3JTdGF0ZUV4ZWN1dGluZykg
ewotICAgICAgICAgICAgICAgIEBwdXRCeUlkRGlyZWN0UHJpdmF0ZShnZW5lcmF0b3IsICJnZW5l
cmF0b3JTdGF0ZSIsIEBHZW5lcmF0b3JTdGF0ZUNvbXBsZXRlZCk7CisgICAgICAgICAgICBAcHV0
R2VuZXJhdG9ySW50ZXJuYWxGaWVsZChnZW5lcmF0b3IsIEBnZW5lcmF0b3JGaWVsZFN0YXRlLCBA
R2VuZXJhdG9yU3RhdGVFeGVjdXRpbmcpOworICAgICAgICAgICAgdmFsdWUgPSBAZ2V0R2VuZXJh
dG9ySW50ZXJuYWxGaWVsZChnZW5lcmF0b3IsIEBnZW5lcmF0b3JGaWVsZE5leHQpLkBjYWxsKGdl
bmVyYXRvclRoaXMsIGdlbmVyYXRvciwgc3RhdGUsIHNlbnRWYWx1ZSwgcmVzdW1lTW9kZSwgQGdl
dEdlbmVyYXRvckludGVybmFsRmllbGQoZ2VuZXJhdG9yLCBAZ2VuZXJhdG9yRmllbGRGcmFtZSkp
OworICAgICAgICAgICAgaWYgKEBnZXRHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKGdlbmVyYXRvciwg
QGdlbmVyYXRvckZpZWxkU3RhdGUpID09PSBAR2VuZXJhdG9yU3RhdGVFeGVjdXRpbmcpIHsKKyAg
ICAgICAgICAgICAgICBAcHV0R2VuZXJhdG9ySW50ZXJuYWxGaWVsZChnZW5lcmF0b3IsIEBnZW5l
cmF0b3JGaWVsZFN0YXRlLCBAR2VuZXJhdG9yU3RhdGVDb21wbGV0ZWQpOwogICAgICAgICAgICAg
ICAgIGRvbmUgPSB0cnVlOwogICAgICAgICAgICAgfQogICAgICAgICB9IGNhdGNoIChlcnJvcikg
ewotICAgICAgICAgICAgQHB1dEJ5SWREaXJlY3RQcml2YXRlKGdlbmVyYXRvciwgImdlbmVyYXRv
clN0YXRlIiwgQEdlbmVyYXRvclN0YXRlQ29tcGxldGVkKTsKKyAgICAgICAgICAgIEBwdXRHZW5l
cmF0b3JJbnRlcm5hbEZpZWxkKGdlbmVyYXRvciwgQGdlbmVyYXRvckZpZWxkU3RhdGUsIEBHZW5l
cmF0b3JTdGF0ZUNvbXBsZXRlZCk7CiAgICAgICAgICAgICB0aHJvdyBlcnJvcjsKICAgICAgICAg
fQogICAgIH0KQEAgLTUyLDQzICs1Miw0MyBAQCBmdW5jdGlvbiBuZXh0KHZhbHVlKQogewogICAg
ICJ1c2Ugc3RyaWN0IjsKIAotICAgIHZhciBzdGF0ZSA9IEBnZXRCeUlkRGlyZWN0UHJpdmF0ZSh0
aGlzLCAiZ2VuZXJhdG9yU3RhdGUiKTsKLSAgICBpZiAodHlwZW9mIHN0YXRlICE9PSAibnVtYmVy
IikKKyAgICBpZiAoIUBpc0dlbmVyYXRvcih0aGlzKSkKICAgICAgICAgQHRocm93VHlwZUVycm9y
KCJ8dGhpc3wgc2hvdWxkIGJlIGEgZ2VuZXJhdG9yIik7CiAKKyAgICB2YXIgc3RhdGUgPSBAZ2V0
R2VuZXJhdG9ySW50ZXJuYWxGaWVsZCh0aGlzLCBAZ2VuZXJhdG9yRmllbGRTdGF0ZSk7CiAgICAg
aWYgKHN0YXRlID09PSBAR2VuZXJhdG9yU3RhdGVFeGVjdXRpbmcpCiAgICAgICAgIEB0aHJvd1R5
cGVFcnJvcigiR2VuZXJhdG9yIGlzIGV4ZWN1dGluZyIpOwogCi0gICAgcmV0dXJuIEBnZW5lcmF0
b3JSZXN1bWUodGhpcywgc3RhdGUsIEBnZXRCeUlkRGlyZWN0UHJpdmF0ZSh0aGlzLCAiZ2VuZXJh
dG9yVGhpcyIpLCB2YWx1ZSwgQHVuZGVmaW5lZCwgQEdlbmVyYXRvclJlc3VtZU1vZGVOb3JtYWwp
OworICAgIHJldHVybiBAZ2VuZXJhdG9yUmVzdW1lKHRoaXMsIHN0YXRlLCBAZ2V0R2VuZXJhdG9y
SW50ZXJuYWxGaWVsZCh0aGlzLCBAZ2VuZXJhdG9yRmllbGRUaGlzKSwgdmFsdWUsIEB1bmRlZmlu
ZWQsIEBHZW5lcmF0b3JSZXN1bWVNb2RlTm9ybWFsKTsKIH0KIAogZnVuY3Rpb24gcmV0dXJuKHZh
bHVlKQogewogICAgICJ1c2Ugc3RyaWN0IjsKIAotICAgIHZhciBzdGF0ZSA9IEBnZXRCeUlkRGly
ZWN0UHJpdmF0ZSh0aGlzLCAiZ2VuZXJhdG9yU3RhdGUiKTsKLSAgICBpZiAodHlwZW9mIHN0YXRl
ICE9PSAibnVtYmVyIikKKyAgICBpZiAoIUBpc0dlbmVyYXRvcih0aGlzKSkKICAgICAgICAgQHRo
cm93VHlwZUVycm9yKCJ8dGhpc3wgc2hvdWxkIGJlIGEgZ2VuZXJhdG9yIik7CiAKKyAgICB2YXIg
c3RhdGUgPSBAZ2V0R2VuZXJhdG9ySW50ZXJuYWxGaWVsZCh0aGlzLCBAZ2VuZXJhdG9yRmllbGRT
dGF0ZSk7CiAgICAgaWYgKHN0YXRlID09PSBAR2VuZXJhdG9yU3RhdGVFeGVjdXRpbmcpCiAgICAg
ICAgIEB0aHJvd1R5cGVFcnJvcigiR2VuZXJhdG9yIGlzIGV4ZWN1dGluZyIpOwogCi0gICAgcmV0
dXJuIEBnZW5lcmF0b3JSZXN1bWUodGhpcywgc3RhdGUsIEBnZXRCeUlkRGlyZWN0UHJpdmF0ZSh0
aGlzLCAiZ2VuZXJhdG9yVGhpcyIpLCB2YWx1ZSwgdmFsdWUsIEBHZW5lcmF0b3JSZXN1bWVNb2Rl
UmV0dXJuKTsKKyAgICByZXR1cm4gQGdlbmVyYXRvclJlc3VtZSh0aGlzLCBzdGF0ZSwgQGdldEdl
bmVyYXRvckludGVybmFsRmllbGQodGhpcywgQGdlbmVyYXRvckZpZWxkVGhpcyksIHZhbHVlLCB2
YWx1ZSwgQEdlbmVyYXRvclJlc3VtZU1vZGVSZXR1cm4pOwogfQogCiBmdW5jdGlvbiB0aHJvdyhl
eGNlcHRpb24pCiB7CiAgICAgInVzZSBzdHJpY3QiOwogCi0gICAgdmFyIHN0YXRlID0gQGdldEJ5
SWREaXJlY3RQcml2YXRlKHRoaXMsICJnZW5lcmF0b3JTdGF0ZSIpOwotICAgIGlmICh0eXBlb2Yg
c3RhdGUgIT09ICJudW1iZXIiKQorICAgIGlmICghQGlzR2VuZXJhdG9yKHRoaXMpKQogICAgICAg
ICBAdGhyb3dUeXBlRXJyb3IoInx0aGlzfCBzaG91bGQgYmUgYSBnZW5lcmF0b3IiKTsKIAorICAg
IHZhciBzdGF0ZSA9IEBnZXRHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKHRoaXMsIEBnZW5lcmF0b3JG
aWVsZFN0YXRlKTsKICAgICBpZiAoc3RhdGUgPT09IEBHZW5lcmF0b3JTdGF0ZUV4ZWN1dGluZykK
ICAgICAgICAgQHRocm93VHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgZXhlY3V0aW5nIik7CiAKICAg
ICBpZiAoc3RhdGUgPT09IEBHZW5lcmF0b3JTdGF0ZUNvbXBsZXRlZCkKICAgICAgICAgdGhyb3cg
ZXhjZXB0aW9uOwogCi0gICAgcmV0dXJuIEBnZW5lcmF0b3JSZXN1bWUodGhpcywgc3RhdGUsIEBn
ZXRCeUlkRGlyZWN0UHJpdmF0ZSh0aGlzLCAiZ2VuZXJhdG9yVGhpcyIpLCBleGNlcHRpb24sIEB1
bmRlZmluZWQsIEBHZW5lcmF0b3JSZXN1bWVNb2RlVGhyb3cpOworICAgIHJldHVybiBAZ2VuZXJh
dG9yUmVzdW1lKHRoaXMsIHN0YXRlLCBAZ2V0R2VuZXJhdG9ySW50ZXJuYWxGaWVsZCh0aGlzLCBA
Z2VuZXJhdG9yRmllbGRUaGlzKSwgZXhjZXB0aW9uLCBAdW5kZWZpbmVkLCBAR2VuZXJhdG9yUmVz
dW1lTW9kZVRocm93KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwCmluZGV4IDk1NDRiY2I0
Yzg4NjliMzQ1ODZmMTY2Yzg3NGNiYjA4MTUwM2VmZGYuLjI4NjA1MWNjOTVlYTRkOGZkYTY2ZmIw
OTk3YmI1OTNlZGU3ZTMyYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcApAQCAtMzYsNyAr
MzYsNyBAQAogI2luY2x1ZGUgIkludGVycHJldGVySW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ0lu
bGluZXMuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgotI2luY2x1ZGUgIkpTR2Vu
ZXJhdG9yRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0dlbmVyYXRvci5oIgogI2luY2x1ZGUgIkxh
YmVsLmgiCiAjaW5jbHVkZSAiU3Ryb25nSW5saW5lcy5oIgogI2luY2x1ZGUgIlVubGlua2VkQ29k
ZUJsb2NrLmgiCkBAIC0yMjMsNyArMjIzLDcgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcmlmaWNh
dGlvbjo6cnVuKCkKICAgICB7CiAgICAgICAgIGF1dG8gbmV4dFRvRW50ZXJQb2ludCA9IGVudGVy
UG9pbnQoKS5uZXh0KCk7CiAgICAgICAgIHVuc2lnbmVkIHN3aXRjaFRhYmxlSW5kZXggPSBtX2Nv
ZGVCbG9jay0+bnVtYmVyT2ZTd2l0Y2hKdW1wVGFibGVzKCk7Ci0gICAgICAgIFZpcnR1YWxSZWdp
c3RlciBzdGF0ZSA9IHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KHN0YXRpY19jYXN0PGludDMy
X3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvckFyZ3VtZW50OjpTdGF0ZSkpOworICAg
ICAgICBWaXJ0dWFsUmVnaXN0ZXIgc3RhdGUgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChz
dGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9yQXJndW1lbnQ6OlN0YXRl
KSk7CiAgICAgICAgIGF1dG8mIGp1bXBUYWJsZSA9IG1fY29kZUJsb2NrLT5hZGRTd2l0Y2hKdW1w
VGFibGUoKTsKICAgICAgICAganVtcFRhYmxlLm1pbiA9IDA7CiAgICAgICAgIGp1bXBUYWJsZS5i
cmFuY2hPZmZzZXRzLnJlc2l6ZShtX3lpZWxkcy5zaXplKCkgKyAxKTsKQEAgLTIzOCw3ICsyMzgs
NyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uOjpydW4oKQogICAgIH0KIAogICAg
IGZvciAoY29uc3QgWWllbGREYXRhJiBkYXRhIDogbV95aWVsZHMpIHsKLSAgICAgICAgVmlydHVh
bFJlZ2lzdGVyIHNjb3BlID0gdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoc3RhdGljX2Nhc3Q8
aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yQXJndW1lbnQ6OkZyYW1lKSk7
CisgICAgICAgIFZpcnR1YWxSZWdpc3RlciBzY29wZSA9IHZpcnR1YWxSZWdpc3RlckZvckFyZ3Vt
ZW50KHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpHZW5lcmF0b3JBcmd1bWVudDo6
RnJhbWUpKTsKIAogICAgICAgICBhdXRvIGluc3RydWN0aW9uID0gbV9pbnN0cnVjdGlvbnMuYXQo
ZGF0YS5wb2ludCk7CiAgICAgICAgIC8vIEVtaXQgc2F2ZSBzZXF1ZW5jZS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1Jl
Z2lzdHJ5LmNwcAppbmRleCAxOTg0NDNkNTMxZmM2Yzc5ZTdlYTE1NTM4YjIzMDFmZWJmZjQ1ZjZk
Li4zYWQyYmFkNDUzNWYyMjBmZGU0YzNjYWE3NGYzYjA4MzVmMzlhMDAzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2lj
UmVnaXN0cnkuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSAiSXRlcmF0aW9uS2luZC5o
IgogI2luY2x1ZGUgIkpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQ0lu
bGluZXMuaCIKLSNpbmNsdWRlICJKU0dlbmVyYXRvckZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNH
ZW5lcmF0b3IuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTTW9k
dWxlTG9hZGVyLmgiCiAjaW5jbHVkZSAiSlNQcm9taXNlLmgiCkBAIC03NCwxMSArNzQsMTUgQEAg
Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeShWTSYg
dm0pCiAgICAgbV9wcm9taXNlRmxhZ3NJc0ZpcnN0UmVzb2x2aW5nRnVuY3Rpb25DYWxsZWQuc2V0
KG1fdm0sIGpzTnVtYmVyKEpTUHJvbWlzZTo6aXNGaXJzdFJlc29sdmluZ0Z1bmN0aW9uQ2FsbGVk
RmxhZykpOwogICAgIG1fcHJvbWlzZUZpZWxkRmxhZ3Muc2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU1Byb21pc2U6OkZpZWxkOjpGbGFncykpKTsKICAgICBtX3Byb21p
c2VGaWVsZFJlYWN0aW9uc09yUmVzdWx0LnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNQcm9taXNlOjpGaWVsZDo6UmVhY3Rpb25zT3JSZXN1bHQpKSk7Ci0gICAgbV9H
ZW5lcmF0b3JSZXN1bWVNb2RlTm9ybWFsLnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDxp
bnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JSZXN1bWVNb2RlOjpOb3JtYWxN
b2RlKSkpOwotICAgIG1fR2VuZXJhdG9yUmVzdW1lTW9kZVRocm93LnNldChtX3ZtLCBqc051bWJl
cihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JSZXN1
bWVNb2RlOjpUaHJvd01vZGUpKSk7Ci0gICAgbV9HZW5lcmF0b3JSZXN1bWVNb2RlUmV0dXJuLnNl
dChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9u
OjpHZW5lcmF0b3JSZXN1bWVNb2RlOjpSZXR1cm5Nb2RlKSkpOwotICAgIG1fR2VuZXJhdG9yU3Rh
dGVDb21wbGV0ZWQuc2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2Vu
ZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvclN0YXRlOjpDb21wbGV0ZWQpKSk7Ci0gICAgbV9HZW5l
cmF0b3JTdGF0ZUV4ZWN1dGluZy5zZXQobV92bSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJf
dD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yU3RhdGU6OkV4ZWN1dGluZykpKTsKKyAg
ICBtX2dlbmVyYXRvckZpZWxkU3RhdGUuc2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0dlbmVyYXRvcjo6RmllbGQ6OlN0YXRlKSkpOworICAgIG1fZ2VuZXJhdG9yRmll
bGROZXh0LnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNHZW5lcmF0
b3I6OkZpZWxkOjpOZXh0KSkpOworICAgIG1fZ2VuZXJhdG9yRmllbGRUaGlzLnNldChtX3ZtLCBq
c051bWJlcihzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNHZW5lcmF0b3I6OkZpZWxkOjpUaGlzKSkp
OworICAgIG1fZ2VuZXJhdG9yRmllbGRGcmFtZS5zZXQobV92bSwganNOdW1iZXIoc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTR2VuZXJhdG9yOjpGaWVsZDo6RnJhbWUpKSk7CisgICAgbV9HZW5lcmF0
b3JSZXN1bWVNb2RlTm9ybWFsLnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90
PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9yUmVzdW1lTW9kZTo6Tm9ybWFsTW9kZSkpKTsKKyAgICBt
X0dlbmVyYXRvclJlc3VtZU1vZGVUaHJvdy5zZXQobV92bSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8
aW50MzJfdD4oSlNHZW5lcmF0b3I6OkdlbmVyYXRvclJlc3VtZU1vZGU6OlRocm93TW9kZSkpKTsK
KyAgICBtX0dlbmVyYXRvclJlc3VtZU1vZGVSZXR1cm4uc2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRp
Y19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpHZW5lcmF0b3JSZXN1bWVNb2RlOjpSZXR1cm5N
b2RlKSkpOworICAgIG1fR2VuZXJhdG9yU3RhdGVDb21wbGV0ZWQuc2V0KG1fdm0sIGpzTnVtYmVy
KHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpHZW5lcmF0b3JTdGF0ZTo6Q29tcGxl
dGVkKSkpOworICAgIG1fR2VuZXJhdG9yU3RhdGVFeGVjdXRpbmcuc2V0KG1fdm0sIGpzTnVtYmVy
KHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpHZW5lcmF0b3JTdGF0ZTo6RXhlY3V0
aW5nKSkpOwogICAgIG1fQXN5bmNHZW5lcmF0b3JTdGF0ZUNvbXBsZXRlZC5zZXQobV92bSwganNO
dW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uOjpBc3lu
Y0dlbmVyYXRvclN0YXRlOjpDb21wbGV0ZWQpKSk7CiAgICAgbV9Bc3luY0dlbmVyYXRvclN0YXRl
RXhlY3V0aW5nLnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0FzeW5j
R2VuZXJhdG9yRnVuY3Rpb246OkFzeW5jR2VuZXJhdG9yU3RhdGU6OkV4ZWN1dGluZykpKTsKICAg
ICBtX0FzeW5jR2VuZXJhdG9yU3RhdGVTdXNwZW5kZWRTdGFydC5zZXQobV92bSwganNOdW1iZXIo
c3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uOjpBc3luY0dlbmVy
YXRvclN0YXRlOjpTdXNwZW5kZWRTdGFydCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5oCmluZGV4IGQ1
ZjZjM2IwNWVlYjg5NjU5YWNkOTg3YjE2ZjIwYzk0MzZiYmE3NTAuLjI4MGI3ZjkwNmQ2NWU1MGZm
Yjc2NzVlMTFlYTJlMjkzYjdkNTdlYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuaApAQCAtNDIsMTEg
KzQyLDEzIEBAIGNsYXNzIFJlZ2lzdGVySUQ7CiAgICAgbWFjcm8oZ2V0QnlJZERpcmVjdCkgXAog
ICAgIG1hY3JvKGdldEJ5SWREaXJlY3RQcml2YXRlKSBcCiAgICAgbWFjcm8oZ2V0UHJvbWlzZUlu
dGVybmFsRmllbGQpIFwKKyAgICBtYWNybyhnZXRHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKSBcCiAg
ICAgbWFjcm8oaWRXaXRoUHJvZmlsZSkgXAogICAgIG1hY3JvKGlzT2JqZWN0KSBcCiAgICAgbWFj
cm8oaXNKU0FycmF5KSBcCiAgICAgbWFjcm8oaXNQcm94eU9iamVjdCkgXAogICAgIG1hY3JvKGlz
RGVyaXZlZEFycmF5KSBcCisgICAgbWFjcm8oaXNHZW5lcmF0b3IpIFwKICAgICBtYWNybyhpc1By
b21pc2UpIFwKICAgICBtYWNybyhpc1JlZ0V4cE9iamVjdCkgXAogICAgIG1hY3JvKGlzTWFwKSBc
CkBAIC02MSw2ICs2Myw3IEBAIGNsYXNzIFJlZ2lzdGVySUQ7CiAgICAgbWFjcm8ocHV0QnlJZERp
cmVjdFByaXZhdGUpIFwKICAgICBtYWNybyhwdXRCeVZhbERpcmVjdCkgXAogICAgIG1hY3JvKHB1
dFByb21pc2VJbnRlcm5hbEZpZWxkKSBcCisgICAgbWFjcm8ocHV0R2VuZXJhdG9ySW50ZXJuYWxG
aWVsZCkgXAogICAgIG1hY3JvKHRvTnVtYmVyKSBcCiAgICAgbWFjcm8odG9TdHJpbmcpIFwKICAg
ICBtYWNybyh0b09iamVjdCkgXApAQCAtOTgsNiArMTAxLDEwIEBAIGNsYXNzIFJlZ2lzdGVySUQ7
CiAgICAgbWFjcm8ocHJvbWlzZUZsYWdzSXNGaXJzdFJlc29sdmluZ0Z1bmN0aW9uQ2FsbGVkKSBc
CiAgICAgbWFjcm8ocHJvbWlzZUZpZWxkRmxhZ3MpIFwKICAgICBtYWNybyhwcm9taXNlRmllbGRS
ZWFjdGlvbnNPclJlc3VsdCkgXAorICAgIG1hY3JvKGdlbmVyYXRvckZpZWxkU3RhdGUpIFwKKyAg
ICBtYWNybyhnZW5lcmF0b3JGaWVsZE5leHQpIFwKKyAgICBtYWNybyhnZW5lcmF0b3JGaWVsZFRo
aXMpIFwKKyAgICBtYWNybyhnZW5lcmF0b3JGaWVsZEZyYW1lKSBcCiAgICAgbWFjcm8oR2VuZXJh
dG9yUmVzdW1lTW9kZU5vcm1hbCkgXAogICAgIG1hY3JvKEdlbmVyYXRvclJlc3VtZU1vZGVUaHJv
dykgXAogICAgIG1hY3JvKEdlbmVyYXRvclJlc3VtZU1vZGVSZXR1cm4pIFwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCmluZGV4IDNiMzk5OGFiNTBj
ZDYyMDMwOWJhYzZkNjdmZDY5MThmZjRhMDFhNzUuLjFiYTQxZjEwNmI3YTExNTEyNTU3MTJmNmEz
ZDkzMzc3MGYyZDczZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUxpc3QucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlTGlzdC5yYgpAQCAtMTM0LDYgKzEzNCwyMCBAQAogICAgICAgICBpc0ludGVybmFsUHJv
bWlzZTogYm9vbCwKICAgICB9CiAKK29wIDpjcmVhdGVfZ2VuZXJhdG9yLAorICAgIGFyZ3M6IHsK
KyAgICAgICAgZHN0OiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgICAgIGNhbGxlZTogVmlydHVhbFJl
Z2lzdGVyLAorICAgIH0sCisgICAgbWV0YWRhdGE6IHsKKyAgICAgICAgY2FjaGVkQ2FsbGVlOiBX
cml0ZUJhcnJpZXJbSlNDZWxsXQorICAgIH0KKworb3AgOm5ld19nZW5lcmF0b3IsCisgICAgYXJn
czogeworICAgICAgICBkc3Q6IFZpcnR1YWxSZWdpc3RlciwKKyAgICB9CisKIG9wIDpnZXRfYXJn
dW1lbnQsCiAgICAgYXJnczogewogICAgICAgICBkc3Q6IFZpcnR1YWxSZWdpc3RlciwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKaW5kZXggYmUw
ODU5NjQwZmIxMDdkZThiNzgyYmNmYTUwODFiYzdkMWM3OWJjMi4uNDA3OTI0OTk2NWQ1NjE4ZTkz
Zjk4NjcyNDcyNGVjYzM3MzIwMTVjNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKQEAgLTgwLDYgKzgwLDcgQEAgdm9pZCBjb21wdXRlVXNl
c0ZvckJ5dGVjb2RlT2Zmc2V0KEJsb2NrKiBjb2RlQmxvY2ssIE9wY29kZUlEIG9wY29kZUlELCBj
b25zdCBJbnMKICAgICBjYXNlIG9wX2ptcDoKICAgICBjYXNlIG9wX25ld19vYmplY3Q6CiAgICAg
Y2FzZSBvcF9uZXdfcHJvbWlzZToKKyAgICBjYXNlIG9wX25ld19nZW5lcmF0b3I6CiAgICAgY2Fz
ZSBvcF9lbnRlcjoKICAgICBjYXNlIG9wX2FyZ3VtZW50X2NvdW50OgogICAgIGNhc2Ugb3BfY2F0
Y2g6CkBAIC0xOTQsNiArMTk1LDcgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0
KEJsb2NrKiBjb2RlQmxvY2ssIE9wY29kZUlEIG9wY29kZUlELCBjb25zdCBJbnMKICAgICBVU0VT
KE9wTmV3QXJyYXlXaXRoU2l6ZSwgbGVuZ3RoKQogICAgIFVTRVMoT3BDcmVhdGVUaGlzLCBjYWxs
ZWUpCiAgICAgVVNFUyhPcENyZWF0ZVByb21pc2UsIGNhbGxlZSkKKyAgICBVU0VTKE9wQ3JlYXRl
R2VuZXJhdG9yLCBjYWxsZWUpCiAgICAgVVNFUyhPcERlbEJ5SWQsIGJhc2UpCiAgICAgVVNFUyhP
cE5ld0Z1bmMsIHNjb3BlKQogICAgIFVTRVMoT3BOZXdBc3luY0dlbmVyYXRvckZ1bmMsIHNjb3Bl
KQpAQCAtMzg1LDYgKzM4Nyw3IEBAIHZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChC
bG9jayogY29kZUJsb2NrLCBPcGNvZGVJRCBvcGNvZGVJRCwgY29uc3QgSW5zCiAgICAgREVGUyhP
cFRvUHJpbWl0aXZlLCBkc3QpCiAgICAgREVGUyhPcENyZWF0ZVRoaXMsIGRzdCkKICAgICBERUZT
KE9wQ3JlYXRlUHJvbWlzZSwgZHN0KQorICAgIERFRlMoT3BDcmVhdGVHZW5lcmF0b3IsIGRzdCkK
ICAgICBERUZTKE9wTmV3QXJyYXksIGRzdCkKICAgICBERUZTKE9wTmV3QXJyYXlXaXRoU3ByZWFk
LCBkc3QpCiAgICAgREVGUyhPcFNwcmVhZCwgZHN0KQpAQCAtNDY1LDYgKzQ2OCw3IEBAIHZvaWQg
Y29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChCbG9jayogY29kZUJsb2NrLCBPcGNvZGVJRCBv
cGNvZGVJRCwgY29uc3QgSW5zCiAgICAgREVGUyhPcE1vdiwgZHN0KQogICAgIERFRlMoT3BOZXdP
YmplY3QsIGRzdCkKICAgICBERUZTKE9wTmV3UHJvbWlzZSwgZHN0KQorICAgIERFRlMoT3BOZXdH
ZW5lcmF0b3IsIGRzdCkKICAgICBERUZTKE9wVG9UaGlzLCBzcmNEc3QpCiAgICAgREVGUyhPcEdl
dFNjb3BlLCBkc3QpCiAgICAgREVGUyhPcENyZWF0ZURpcmVjdEFyZ3VtZW50cywgZHN0KQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCAyOTQzYjJi
MTAwM2M1ZjhmMWEzMGNlNTY1MjY4NGQ0NDM2ZTc4ZWEzLi4zYTcxOTk2YzVjZDE3OTAxYzY3MDdh
NjI3ZDhhZTlhYzY4YzgyNjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcApAQCAtNTY4LDYgKzU2OCw3IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hD
cmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5r
CiAgICAgICAgIExJTksoT3BQdXRCeUlkKQogICAgICAgICBMSU5LKE9wQ3JlYXRlVGhpcykKICAg
ICAgICAgTElOSyhPcENyZWF0ZVByb21pc2UpCisgICAgICAgIExJTksoT3BDcmVhdGVHZW5lcmF0
b3IpCiAKICAgICAgICAgTElOSyhPcEFkZCkKICAgICAgICAgTElOSyhPcE11bCkKQEAgLTEzMDcs
NiArMTMwOCwxOSBAQCB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVMTEludElubGluZUNhY2hlcygp
CiAgICAgICAgICAgICBjYWNoZVdyaXRlQmFycmllci5jbGVhcigpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9jcmVhdGVfZ2VuZXJhdG9yOiB7CisgICAg
ICAgICAgICBhdXRvJiBtZXRhZGF0YSA9IGN1ckluc3RydWN0aW9uLT5hczxPcENyZWF0ZUdlbmVy
YXRvcj4oKS5tZXRhZGF0YSh0aGlzKTsKKyAgICAgICAgICAgIGF1dG8mIGNhY2hlV3JpdGVCYXJy
aWVyID0gbWV0YWRhdGEubV9jYWNoZWRDYWxsZWU7CisgICAgICAgICAgICBpZiAoIWNhY2hlV3Jp
dGVCYXJyaWVyIHx8IGNhY2hlV3JpdGVCYXJyaWVyLnVudmFsaWRhdGVkR2V0KCkgPT0gSlNDZWxs
OjpzZWVuTXVsdGlwbGVDYWxsZWVPYmplY3RzKCkpCisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICBKU0NlbGwqIGNhY2hlZEZ1bmN0aW9uID0gY2FjaGVXcml0ZUJhcnJpZXIuZ2V0
KCk7CisgICAgICAgICAgICBpZiAodm0uaGVhcC5pc01hcmtlZChjYWNoZWRGdW5jdGlvbikpCisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBpZiAoT3B0aW9uczo6dmVyYm9zZU9T
UigpKQorICAgICAgICAgICAgICAgIGRhdGFMb2dGKCJDbGVhcmluZyBMTEludCBjcmVhdGVfZ2Vu
ZXJhdG9yIHdpdGggY2FjaGVkIGNhbGxlZSAlcC5cbiIsIGNhY2hlZEZ1bmN0aW9uKTsKKyAgICAg
ICAgICAgIGNhY2hlV3JpdGVCYXJyaWVyLmNsZWFyKCk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQogICAgICAgICBjYXNlIG9wX3Jlc29sdmVfc2NvcGU6IHsKICAgICAgICAgICAgIC8v
IFJpZ2h0IG5vdyB0aGlzIGlzbid0IHN0cmljdGx5IG5lY2Vzc2FyeS4gQW55IHN5bWJvbCB0YWJs
ZXMgdGhhdCB0aGlzIHdpbGwgcmVmZXIgdG8KICAgICAgICAgICAgIC8vIGFyZSBmb3Igb3V0ZXIg
ZnVuY3Rpb25zLCBhbmQgd2UgcmVmZXIgdG8gdGhvc2UgZnVuY3Rpb25zIHN0cm9uZ2x5LCBhbmQg
dGhleSByZWZlcgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Nw
ZWN1bGF0ZWRUeXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxh
dGVkVHlwZS5jcHAKaW5kZXggNDJiNjI2YzA1ZWUxZjUxODQ2MDZlYTZkYTk0MGZmMTlhYTIzMDI3
OC4uMzUzZTU2Y2ZjOGViMDk1ZDc5NmZhYWFiZGIxMjU0ZWJiMDNkY2U1YyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3BwCkBAIC02MDks
OSArNjA5LDggQEAgU3BlY3VsYXRlZFR5cGUgc3BlY3VsYXRpb25Gcm9tSlNUeXBlKEpTVHlwZSB0
eXBlKQogICAgIGNhc2UgRGF0YVZpZXdUeXBlOgogICAgICAgICByZXR1cm4gU3BlY0RhdGFWaWV3
T2JqZWN0OwogICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICByZXR1cm4gU3BlY0NlbGw7CiAgICAgfQotICAgIHJldHVybiBTcGVjTm9uZTsKIH0KIAog
U3BlY3VsYXRlZFR5cGUgbGVhc3RVcHBlckJvdW5kT2ZTdHJpY3RseUVxdWl2YWxlbnRTcGVjdWxh
dGlvbnMoU3BlY3VsYXRlZFR5cGUgdHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggZWE3YTRhYzQ2
MDg3NGY4OWYwOWZjNTY5NDBhNDFiMGIxNjExMjYxNy4uZGVjNWNmMGEwY2NiODM2OTMwYjRhODc1
YWEwNjVkYzk3MjY5Y2JhYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTY4Myw3ICs2ODMsMTcgQEAg
Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2Rl
KiBmdW5jdGlvbk5vZGUsIFVubGlua2UKIAogICAgIHN3aXRjaCAocGFyc2VNb2RlKSB7CiAgICAg
Y2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvcldyYXBwZXJGdW5jdGlvbk1vZGU6Ci0gICAg
Y2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvcldyYXBwZXJNZXRob2RNb2RlOgorICAgIGNh
c2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JXcmFwcGVyTWV0aG9kTW9kZTogeworICAgICAg
ICBtX2dlbmVyYXRvclJlZ2lzdGVyID0gYWRkVmFyKCk7CisKKyAgICAgICAgLy8gRklYTUU6IEVt
aXQgdG9fdGhpcyBvbmx5IHdoZW4gR2VuZXJhdG9yIHVzZXMgaXQuCisgICAgICAgIC8vIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1ODYKKyAgICAgICAgZW1pdFRv
VGhpcygpOworCisgICAgICAgIGVtaXRDcmVhdGVHZW5lcmF0b3IobV9nZW5lcmF0b3JSZWdpc3Rl
ciwgJm1fY2FsbGVlUmVnaXN0ZXIpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNl
IFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNHZW5lcmF0b3JXcmFwcGVyTWV0aG9kTW9kZToKICAgICBj
YXNlIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNHZW5lcmF0b3JXcmFwcGVyRnVuY3Rpb25Nb2RlOiB7
CiAgICAgICAgIG1fZ2VuZXJhdG9yUmVnaXN0ZXIgPSBhZGRWYXIoKTsKQEAgLTcxMSw3ICs3MjEs
NyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlv
bk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgICAgICAgICAgZW1pdFRvVGhpcygpOwog
ICAgICAgICB9CiAKLSAgICAgICAgZW1pdE5ld09iamVjdChtX2dlbmVyYXRvclJlZ2lzdGVyKTsK
KyAgICAgICAgZW1pdE5ld0dlbmVyYXRvcihtX2dlbmVyYXRvclJlZ2lzdGVyKTsKICAgICAgICAg
ZW1pdE5ld1Byb21pc2UocHJvbWlzZVJlZ2lzdGVyKCksIG1faXNCdWlsdGluRnVuY3Rpb24pOwog
ICAgICAgICBicmVhazsKICAgICB9CkBAIC04NjYsNyArODc2LDEwIEBAIEJ5dGVjb2RlR2VuZXJh
dG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2Rl
LCBVbmxpbmtlCiAgICAgICAgICAgICAvLyBHZW5lcmF0b3JpZmljYXRpb24gaW5zZXJ0cyBsZXhp
Y2FsIGVudmlyb25tZW50IGNyZWF0aW9uIGlmIG5lY2Vzc2FyeS4gT3RoZXJ3aXNlLCB3ZSBjb252
ZXJ0IGl0IHRvIG9wX21vdiBmcmFtZSwgYHVuZGVmaW5lZGAuCiAgICAgICAgICAgICBPcENyZWF0
ZUdlbmVyYXRvckZyYW1lRW52aXJvbm1lbnQ6OmVtaXQodGhpcywgZ2VuZXJhdG9yRnJhbWVSZWdp
c3RlcigpLCBzY29wZVJlZ2lzdGVyKCksIFZpcnR1YWxSZWdpc3RlciB7IHN5bWJvbFRhYmxlQ29u
c3RhbnRJbmRleCB9LCBhZGRDb25zdGFudFZhbHVlKGpzVW5kZWZpbmVkKCkpKTsKICAgICAgICAg
fQotICAgICAgICBlbWl0UHV0QnlJZChnZW5lcmF0b3JSZWdpc3RlcigpLCBwcm9wZXJ0eU5hbWVz
KCkuYnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSgpLCBnZW5lcmF0b3JG
cmFtZVJlZ2lzdGVyKCkpOworICAgICAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9k
ZTo6QXN5bmNHZW5lcmF0b3JCb2R5TW9kZSkKKyAgICAgICAgICAgIGVtaXRQdXRCeUlkKGdlbmVy
YXRvclJlZ2lzdGVyKCksIHByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JG
cmFtZVByaXZhdGVOYW1lKCksIGdlbmVyYXRvckZyYW1lUmVnaXN0ZXIoKSk7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIGVtaXRQdXRJbnRlcm5hbEZpZWxkKGdlbmVyYXRvclJlZ2lzdGVyKCks
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0dlbmVyYXRvcjo6RmllbGQ6OkZyYW1lKSwgZ2VuZXJh
dG9yRnJhbWVSZWdpc3RlcigpKTsKICAgICB9CiAKICAgICBib29sIHNob3VsZEluaXRpYWxpemVC
bG9ja1Njb3BlZEZ1bmN0aW9ucyA9IGZhbHNlOyAvLyBXZSBnZW5lcmF0ZSB0b3AtbGV2ZWwgZnVu
Y3Rpb24gZGVjbGFyYXRpb25zIGluIDo6Z2VuZXJhdGUoKS4KQEAgLTI3MDYsMjAgKzI3MTksMTIg
QEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dFNldHRlckJ5VmFsKFJlZ2lzdGVySUQq
IGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnQKIAogdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dFB1dEdlbmVyYXRvckZpZWxkcyhSZWdpc3RlcklEKiBuZXh0RnVuY3Rpb24pCiB7Ci0gICAgLy8g
RklYTUU6IEN1cnJlbnRseSwgd2UganVzdCBjcmVhdGUgYW4gb2JqZWN0IGFuZCBzdG9yZSBnZW5l
cmF0b3IgcmVsYXRlZCBmaWVsZHMgYXMgaXRzIHByb3BlcnRpZXMgZm9yIGVhc2UuCi0gICAgLy8g
QnV0IHRvIG1ha2UgaXQgZWZmaWNpZW50LCB3ZSB3aWxsIGludHJvZHVjZSBKU0dlbmVyYXRvciBj
bGFzcywgYWRkIG9wY29kZSBuZXdfZ2VuZXJhdG9yIGFuZCB1c2UgaXRzIEMrKyBmaWVsZHMgaW5z
dGVhZCBvZiB0aGVzZSBwcml2YXRlIHByb3BlcnRpZXMuCi0gICAgLy8gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTU0NQotCi0gICAgZW1pdERpcmVjdFB1dEJ5SWQo
bV9nZW5lcmF0b3JSZWdpc3RlciwgcHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmdlbmVy
YXRvck5leHRQcml2YXRlTmFtZSgpLCBuZXh0RnVuY3Rpb24sIFByb3BlcnR5Tm9kZTo6S25vd25E
aXJlY3QpOworICAgIGVtaXRQdXRJbnRlcm5hbEZpZWxkKG1fZ2VuZXJhdG9yUmVnaXN0ZXIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0dlbmVyYXRvcjo6RmllbGQ6Ok5leHQpLCBuZXh0RnVuY3Rp
b24pOwogCiAgICAgLy8gV2UgZG8gbm90IHN0b3JlICd0aGlzJyBpbiBhcnJvdyBmdW5jdGlvbiB3
aXRoaW4gY29uc3RydWN0b3IsCiAgICAgLy8gYmVjYXVzZSBpdCBtaWdodCBiZSBub3QgaW5pdGlh
bGl6ZWQsIGlmIHN1cGVyIGlzIGNhbGxlZCBsYXRlci4KICAgICBpZiAoIShpc0Rlcml2ZWRDb25z
dHJ1Y3RvckNvbnRleHQoKSAmJiBtX2NvZGVCbG9jay0+cGFyc2VNb2RlKCkgPT0gU291cmNlUGFy
c2VNb2RlOjpBc3luY0Fycm93RnVuY3Rpb25Nb2RlKSkKLSAgICAgICAgZW1pdERpcmVjdFB1dEJ5
SWQobV9nZW5lcmF0b3JSZWdpc3RlciwgcHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmdl
bmVyYXRvclRoaXNQcml2YXRlTmFtZSgpLCAmbV90aGlzUmVnaXN0ZXIsIFByb3BlcnR5Tm9kZTo6
S25vd25EaXJlY3QpOwotCi0gICAgZW1pdERpcmVjdFB1dEJ5SWQobV9nZW5lcmF0b3JSZWdpc3Rl
ciwgcHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclN0YXRlUHJpdmF0ZU5h
bWUoKSwgZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoMCkpLCBQcm9wZXJ0eU5vZGU6Oktub3du
RGlyZWN0KTsKLQotICAgIGVtaXREaXJlY3RQdXRCeUlkKG1fZ2VuZXJhdG9yUmVnaXN0ZXIsIHBy
b3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lKCks
IGVtaXRMb2FkKG51bGxwdHIsIGpzTnVsbCgpKSwgUHJvcGVydHlOb2RlOjpLbm93bkRpcmVjdCk7
CisgICAgICAgIGVtaXRQdXRJbnRlcm5hbEZpZWxkKG1fZ2VuZXJhdG9yUmVnaXN0ZXIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0dlbmVyYXRvcjo6RmllbGQ6OlRoaXMpLCAmbV90aGlzUmVnaXN0
ZXIpOwogfQogCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0QXN5bmNHZW5lcmF0b3JG
aWVsZHMoUmVnaXN0ZXJJRCogbmV4dEZ1bmN0aW9uKQpAQCAtMjg2OCw2ICsyODczLDE4IEBAIFJl
Z2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3UHJvbWlzZShSZWdpc3RlcklEKiBk
c3QsIGJvb2wgaXNJbnRlcm5hbFByCiAgICAgcmV0dXJuIGRzdDsKIH0KIAorUmVnaXN0ZXJJRCog
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDcmVhdGVHZW5lcmF0b3IoUmVnaXN0ZXJJRCogZHN0LCBS
ZWdpc3RlcklEKiBuZXdUYXJnZXQpCit7CisgICAgT3BDcmVhdGVHZW5lcmF0b3I6OmVtaXQodGhp
cywgZHN0LCBuZXdUYXJnZXQpOworICAgIHJldHVybiBkc3Q7Cit9CisKK1JlZ2lzdGVySUQqIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3R2VuZXJhdG9yKFJlZ2lzdGVySUQqIGRzdCkKK3sKKyAg
ICBPcE5ld0dlbmVyYXRvcjo6ZW1pdCh0aGlzLCBkc3QpOworICAgIHJldHVybiBkc3Q7Cit9CisK
IHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRURFpDaGVjayhSZWdpc3RlcklEKiB0YXJnZXQp
CiB7CiAgICAgT3BDaGVja1Rkejo6ZW1pdCh0aGlzLCB0YXJnZXQpOwpAQCAtNDU1NCwxMSArNDU3
MSwxMSBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFlpZWxkKFJlZ2lzdGVy
SUQqIGFyZ3VtZW50LCBKU0FzeW5jR2VuZXJhdG9yRgogCiAgICAgUmVmPExhYmVsPiBub3JtYWxM
YWJlbCA9IG5ld0xhYmVsKCk7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGNvbmRpdGlvbiA9IG5l
d1RlbXBvcmFyeSgpOwotICAgIGVtaXRFcXVhbGl0eU9wPE9wU3RyaWN0ZXE+KGNvbmRpdGlvbi5n
ZXQoKSwgZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCksIGVtaXRMb2FkKG51bGxwdHIsIGpz
TnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRv
clJlc3VtZU1vZGU6Ok5vcm1hbE1vZGUpKSkpOworICAgIGVtaXRFcXVhbGl0eU9wPE9wU3RyaWN0
ZXE+KGNvbmRpdGlvbi5nZXQoKSwgZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCksIGVtaXRM
b2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpH
ZW5lcmF0b3JSZXN1bWVNb2RlOjpOb3JtYWxNb2RlKSkpKTsKICAgICBlbWl0SnVtcElmVHJ1ZShj
b25kaXRpb24uZ2V0KCksIG5vcm1hbExhYmVsLmdldCgpKTsKIAogICAgIFJlZjxMYWJlbD4gdGhy
b3dMYWJlbCA9IG5ld0xhYmVsKCk7Ci0gICAgZW1pdEVxdWFsaXR5T3A8T3BTdHJpY3RlcT4oY29u
ZGl0aW9uLmdldCgpLCBnZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSwgZW1pdExvYWQobnVs
bHB0ciwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6
R2VuZXJhdG9yUmVzdW1lTW9kZTo6VGhyb3dNb2RlKSkpKTsKKyAgICBlbWl0RXF1YWxpdHlPcDxP
cFN0cmljdGVxPihjb25kaXRpb24uZ2V0KCksIGdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3Rlcigp
LCBlbWl0TG9hZChudWxscHRyLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVy
YXRvcjo6R2VuZXJhdG9yUmVzdW1lTW9kZTo6VGhyb3dNb2RlKSkpKTsKICAgICBlbWl0SnVtcElm
VHJ1ZShjb25kaXRpb24uZ2V0KCksIHRocm93TGFiZWwuZ2V0KCkpOwogICAgIC8vIFJldHVybi4K
ICAgICB7CkBAIC00NjY2LDEwICs0NjgzLDEwIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0RGVsZWdhdGVZaWVsZChSZWdpc3RlcklEKiBhcmd1bWVudCwgVGhyb3dhYmxlCiAg
ICAgICAgICAgICAgICAgUmVmPExhYmVsPiByZXR1cm5MYWJlbCA9IG5ld0xhYmVsKCk7CiAgICAg
ICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gY29u
ZGl0aW9uID0gbmV3VGVtcG9yYXJ5KCk7Ci0gICAgICAgICAgICAgICAgICAgIGVtaXRFcXVhbGl0
eU9wPE9wU3RyaWN0ZXE+KGNvbmRpdGlvbi5nZXQoKSwgZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lz
dGVyKCksIGVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpT
R2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvclJlc3VtZU1vZGU6Ok5vcm1hbE1vZGUpKSkpOwor
ICAgICAgICAgICAgICAgICAgICBlbWl0RXF1YWxpdHlPcDxPcFN0cmljdGVxPihjb25kaXRpb24u
Z2V0KCksIGdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3RlcigpLCBlbWl0TG9hZChudWxscHRyLCBq
c051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9yUmVzdW1l
TW9kZTo6Tm9ybWFsTW9kZSkpKSk7CiAgICAgICAgICAgICAgICAgICAgIGVtaXRKdW1wSWZUcnVl
KGNvbmRpdGlvbi5nZXQoKSwgbm9ybWFsTGFiZWwuZ2V0KCkpOwogCi0gICAgICAgICAgICAgICAg
ICAgIGVtaXRFcXVhbGl0eU9wPE9wU3RyaWN0ZXE+KGNvbmRpdGlvbi5nZXQoKSwgZ2VuZXJhdG9y
UmVzdW1lTW9kZVJlZ2lzdGVyKCksIGVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0YXRpY19j
YXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvclJlc3VtZU1vZGU6OlJl
dHVybk1vZGUpKSkpOworICAgICAgICAgICAgICAgICAgICBlbWl0RXF1YWxpdHlPcDxPcFN0cmlj
dGVxPihjb25kaXRpb24uZ2V0KCksIGdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3RlcigpLCBlbWl0
TG9hZChudWxscHRyLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6
R2VuZXJhdG9yUmVzdW1lTW9kZTo6UmV0dXJuTW9kZSkpKSk7CiAgICAgICAgICAgICAgICAgICAg
IGVtaXRKdW1wSWZUcnVlKGNvbmRpdGlvbi5nZXQoKSwgcmV0dXJuTGFiZWwuZ2V0KCkpOwogCiAg
ICAgICAgICAgICAgICAgICAgIC8vIEZhbGx0aHJvdWdoIHRvIFRocm93TW9kZS4KQEAgLTQ3NzEs
NyArNDc4OCwxMCBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlbGVnYXRl
WWllbGQoUmVnaXN0ZXJJRCogYXJndW1lbnQsIFRocm93YWJsZQogdm9pZCBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdEdlbmVyYXRvclN0YXRlQ2hhbmdlKGludDMyX3Qgc3RhdGUpCiB7CiAgICAgUmVn
aXN0ZXJJRCogY29tcGxldGVkU3RhdGUgPSBlbWl0TG9hZChudWxscHRyLCBqc051bWJlcihzdGF0
ZSkpOwotICAgIGVtaXRQdXRCeUlkKGdlbmVyYXRvclJlZ2lzdGVyKCksIHByb3BlcnR5TmFtZXMo
KS5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JTdGF0ZVByaXZhdGVOYW1lKCksIGNvbXBsZXRlZFN0
YXRlKTsKKyAgICBpZiAobV9jb2RlQmxvY2stPnBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9k
ZTo6QXN5bmNHZW5lcmF0b3JCb2R5TW9kZSkKKyAgICAgICAgZW1pdFB1dEJ5SWQoZ2VuZXJhdG9y
UmVnaXN0ZXIoKSwgcHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclN0YXRl
UHJpdmF0ZU5hbWUoKSwgY29tcGxldGVkU3RhdGUpOworICAgIGVsc2UKKyAgICAgICAgZW1pdFB1
dEludGVybmFsRmllbGQoZ2VuZXJhdG9yUmVnaXN0ZXIoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTR2VuZXJhdG9yOjpGaWVsZDo6U3RhdGUpLCBjb21wbGV0ZWRTdGF0ZSk7CiB9CiAKIGJvb2wg
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRKdW1wVmlhRmluYWxseUlmTmVlZGVkKGludCB0YXJnZXRM
YWJlbFNjb3BlRGVwdGgsIExhYmVsJiBqdW1wVGFyZ2V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IDk0ZWVi
MTMyNjEwNmZmNmRkY2Q3NDkzMWRlYTBhYjI5MTk0ZGRjYzcuLjdhNWYxZDRkZThlMWZjMTI4OTdi
MzdmMzQ2N2ZkNTNkM2QzN2RiOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTM1LDcgKzM1LDcgQEAKICNp
bmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpTQXN5bmNHZW5lcmF0b3JGdW5jdGlv
bi5oIgogI2luY2x1ZGUgIkpTQmlnSW50LmgiCi0jaW5jbHVkZSAiSlNHZW5lcmF0b3JGdW5jdGlv
bi5oIgorI2luY2x1ZGUgIkpTR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNUZW1wbGF0ZU9iamVj
dERlc2NyaXB0b3IuaCIKICNpbmNsdWRlICJMYWJlbC5oIgogI2luY2x1ZGUgIkxhYmVsU2NvcGUu
aCIKQEAgLTcyNCwxMiArNzI0LDE0IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIFJlZ2lz
dGVySUQqIGVtaXRDcmVhdGVUaGlzKFJlZ2lzdGVySUQqIGRzdCk7CiAgICAgICAgIFJlZ2lzdGVy
SUQqIGVtaXRDcmVhdGVQcm9taXNlKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogbmV3VGFy
Z2V0LCBib29sIGlzSW50ZXJuYWxQcm9taXNlKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdENy
ZWF0ZUdlbmVyYXRvcihSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIG5ld1RhcmdldCk7CiAg
ICAgICAgIHZvaWQgZW1pdFREWkNoZWNrKFJlZ2lzdGVySUQqIHRhcmdldCk7CiAgICAgICAgIGJv
b2wgbmVlZHNURFpDaGVjayhjb25zdCBWYXJpYWJsZSYpOwogICAgICAgICB2b2lkIGVtaXRURFpD
aGVja0lmTmVjZXNzYXJ5KGNvbnN0IFZhcmlhYmxlJiwgUmVnaXN0ZXJJRCogdGFyZ2V0LCBSZWdp
c3RlcklEKiBzY29wZSk7CiAgICAgICAgIHZvaWQgbGlmdFREWkNoZWNrSWZQb3NzaWJsZShjb25z
dCBWYXJpYWJsZSYpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3T2JqZWN0KFJlZ2lzdGVy
SUQqIGRzdCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdQcm9taXNlKFJlZ2lzdGVySUQq
IGRzdCwgYm9vbCBpc0ludGVybmFsUHJvbWlzZSk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRO
ZXdHZW5lcmF0b3IoUmVnaXN0ZXJJRCogZHN0KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5l
d0FycmF5KFJlZ2lzdGVySUQqIGRzdCwgRWxlbWVudE5vZGUqLCB1bnNpZ25lZCBsZW5ndGgsIElu
ZGV4aW5nVHlwZSByZWNvbW1lbmRlZEluZGV4aW5nVHlwZSk7IC8vIHN0b3BzIGF0IGZpcnN0IGVs
aXNpb24KICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld0FycmF5QnVmZmVyKFJlZ2lzdGVySUQq
IGRzdCwgSlNJbW11dGFibGVCdXR0ZXJmbHkqLCBJbmRleGluZ1R5cGUgcmVjb21tZW5kZWRJbmRl
eGluZ1R5cGUpOwogICAgICAgICAvLyBGSVhNRTogbmV3X2FycmF5X3dpdGhfc3ByZWFkIHNob3Vs
ZCB1c2UgYW4gYXJyYXkgYWxsb2NhdGlvbiBwcm9maWxlIGFuZCB0YWtlIGEgcmVjb21tZW5kZWRJ
bmRleGluZ1R5cGUKQEAgLTg2Niw2ICs4NjgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
UmVnaXN0ZXJJRCogZW1pdFRvSW5kZXhTdHJpbmcoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklE
KiBpbmRleCk7CiAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdElzQ2VsbFdpdGhUeXBlKFJlZ2lz
dGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjLCBKU1R5cGUpOworICAgICAgICBSZWdpc3RlcklE
KiBlbWl0SXNHZW5lcmF0b3IoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMpIHsgcmV0
dXJuIGVtaXRJc0NlbGxXaXRoVHlwZShkc3QsIHNyYywgSlNHZW5lcmF0b3JUeXBlKTsgfQogICAg
ICAgICBSZWdpc3RlcklEKiBlbWl0SXNKU0FycmF5KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJ
RCogc3JjKSB7IHJldHVybiBlbWl0SXNDZWxsV2l0aFR5cGUoZHN0LCBzcmMsIEFycmF5VHlwZSk7
IH0KICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdElzUHJvbWlzZShSZWdpc3RlcklEKiBkc3QsIFJl
Z2lzdGVySUQqIHNyYykgeyByZXR1cm4gZW1pdElzQ2VsbFdpdGhUeXBlKGRzdCwgc3JjLCBKU1By
b21pc2VUeXBlKTsgfQogICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXNQcm94eU9iamVjdChSZWdp
c3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYykgeyByZXR1cm4gZW1pdElzQ2VsbFdpdGhUeXBl
KGRzdCwgc3JjLCBQcm94eU9iamVjdFR5cGUpOyB9CkBAIC05ODgsMTAgKzk5MSwxMCBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0R2VuZXJhdG9yU3RhdGVDaGFuZ2UoaW50MzJf
dCBzdGF0ZSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRZaWVsZChSZWdpc3RlcklEKiBhcmd1
bWVudCwgSlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uOjpBc3luY0dlbmVyYXRvclN1c3BlbmRSZWFz
b24gPSBKU0FzeW5jR2VuZXJhdG9yRnVuY3Rpb246OkFzeW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNv
bjo6WWllbGQpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0RGVsZWdhdGVZaWVsZChSZWdpc3Rl
cklEKiBhcmd1bWVudCwgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqKTsKLSAgICAgICAgUmVnaXN0
ZXJJRCogZ2VuZXJhdG9yU3RhdGVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbc3Rh
dGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yQXJndW1lbnQ6
OlN0YXRlKV07IH0KLSAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yVmFsdWVSZWdpc3Rlcigp
IHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JG
dW5jdGlvbjo6R2VuZXJhdG9yQXJndW1lbnQ6OlZhbHVlKV07IH0KLSAgICAgICAgUmVnaXN0ZXJJ
RCogZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1fcGFyYW1ldGVyc1tz
dGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JBcmd1bWVu
dDo6UmVzdW1lTW9kZSldOyB9Ci0gICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRvckZyYW1lUmVn
aXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJzW3N0YXRpY19jYXN0PGludDMyX3Q+KEpTR2Vu
ZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvckFyZ3VtZW50OjpGcmFtZSldOyB9CisgICAgICAgIFJl
Z2lzdGVySUQqIGdlbmVyYXRvclN0YXRlUmVnaXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJz
W3N0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpHZW5lcmF0b3JBcmd1bWVudDo6U3Rh
dGUpXTsgfQorICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JWYWx1ZVJlZ2lzdGVyKCkgeyBy
ZXR1cm4gJm1fcGFyYW1ldGVyc1tzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6R2Vu
ZXJhdG9yQXJndW1lbnQ6OlZhbHVlKV07IH0KKyAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9y
UmVzdW1lTW9kZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1fcGFyYW1ldGVyc1tzdGF0aWNfY2FzdDxp
bnQzMl90PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9yQXJndW1lbnQ6OlJlc3VtZU1vZGUpXTsgfQor
ICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JGcmFtZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1f
cGFyYW1ldGVyc1tzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9yQXJn
dW1lbnQ6OkZyYW1lKV07IH0KIAogICAgICAgICBDb2RlVHlwZSBjb2RlVHlwZSgpIGNvbnN0IHsg
cmV0dXJuIG1fY29kZVR5cGU7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCmluZGV4IDQ4OTA5ZWY5YjA0ZDE1YWRjNGEwMmQy
NmM3NWY4Y2M1YzljMTUzYjEuLjg3NzhmYjY2NDY5NTk5Y2UyNWIwYjY4OWQwZDM5MGVhMzA5YTZk
YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXND
b2RlZ2VuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVz
Q29kZWdlbi5jcHAKQEAgLTM0LDcgKzM0LDcgQEAKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRl
ICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgotI2luY2x1ZGUgIkpTR2Vu
ZXJhdG9yRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0dlbmVyYXRvci5oIgogI2luY2x1ZGUgIkpT
R2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNJbW11dGFibGVCdXR0ZXJmbHkuaCIKICNpbmNs
dWRlICJMYWJlbFNjb3BlLmgiCkBAIC0xMDIwLDYgKzEwMjAsMjAgQEAgc3RhdGljIEpTUHJvbWlz
ZTo6RmllbGQgcHJvbWlzZUludGVybmFsRmllbGRJbmRleChCeXRlY29kZUludHJpbnNpY05vZGUq
IG5vZGUpCiAgICAgcmV0dXJuIEpTUHJvbWlzZTo6RmllbGQ6OkZsYWdzOwogfQogCitzdGF0aWMg
SlNHZW5lcmF0b3I6OkZpZWxkIGdlbmVyYXRvckludGVybmFsRmllbGRJbmRleChCeXRlY29kZUlu
dHJpbnNpY05vZGUqIG5vZGUpCit7CisgICAgaWYgKG5vZGUtPmVtaXR0ZXIoKSA9PSAmQnl0ZWNv
ZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19nZW5lcmF0b3JGaWVsZFN0YXRlKQorICAg
ICAgICByZXR1cm4gSlNHZW5lcmF0b3I6OkZpZWxkOjpTdGF0ZTsKKyAgICBpZiAobm9kZS0+ZW1p
dHRlcigpID09ICZCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dlbmVyYXRv
ckZpZWxkTmV4dCkKKyAgICAgICAgcmV0dXJuIEpTR2VuZXJhdG9yOjpGaWVsZDo6TmV4dDsKKyAg
ICBpZiAobm9kZS0+ZW1pdHRlcigpID09ICZCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50
cmluc2ljX2dlbmVyYXRvckZpZWxkVGhpcykKKyAgICAgICAgcmV0dXJuIEpTR2VuZXJhdG9yOjpG
aWVsZDo6VGhpczsKKyAgICBpZiAobm9kZS0+ZW1pdHRlcigpID09ICZCeXRlY29kZUludHJpbnNp
Y05vZGU6OmVtaXRfaW50cmluc2ljX2dlbmVyYXRvckZpZWxkRnJhbWUpCisgICAgICAgIHJldHVy
biBKU0dlbmVyYXRvcjo6RmllbGQ6OkZyYW1lOworICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgcmV0dXJuIEpTR2VuZXJhdG9yOjpGaWVsZDo6U3RhdGU7Cit9CisKIFJlZ2lz
dGVySUQqIEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfZ2V0UHJvbWlzZUlu
dGVybmFsRmllbGQoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0
KQogewogICAgIEFyZ3VtZW50TGlzdE5vZGUqIG5vZGUgPSBtX2FyZ3MtPm1fbGlzdE5vZGU7CkBA
IC0xMDMzLDYgKzEwNDcsMTkgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjpl
bWl0X2ludHJpbnNpY19nZXRQcm9taXNlSW50ZXJuYWxGaWVsZChCeXRlY28KICAgICByZXR1cm4g
Z2VuZXJhdG9yLmVtaXRHZXRJbnRlcm5hbEZpZWxkKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9u
KGRzdCksIGJhc2UuZ2V0KCksIGluZGV4KTsKIH0KIAorUmVnaXN0ZXJJRCogQnl0ZWNvZGVJbnRy
aW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19nZXRHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKEJ5dGVj
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK3sKKyAgICBBcmd1bWVu
dExpc3ROb2RlKiBub2RlID0gbV9hcmdzLT5tX2xpc3ROb2RlOworICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiBiYXNlID0gZ2VuZXJhdG9yLmVtaXROb2RlKG5vZGUpOworICAgIG5vZGUgPSBub2RlLT5t
X25leHQ7CisgICAgUkVMRUFTRV9BU1NFUlQobm9kZS0+bV9leHByLT5pc0J5dGVjb2RlSW50cmlu
c2ljTm9kZSgpKTsKKyAgICB1bnNpZ25lZCBpbmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihn
ZW5lcmF0b3JJbnRlcm5hbEZpZWxkSW5kZXgoc3RhdGljX2Nhc3Q8Qnl0ZWNvZGVJbnRyaW5zaWNO
b2RlKj4obm9kZS0+bV9leHByKSkpOworICAgIEFTU0VSVChpbmRleCA8IEpTR2VuZXJhdG9yOjpu
dW1iZXJPZkludGVybmFsRmllbGRzKTsKKyAgICBBU1NFUlQoIW5vZGUtPm1fbmV4dCk7CisKKyAg
ICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRHZXRJbnRlcm5hbEZpZWxkKGdlbmVyYXRvci5maW5hbERl
c3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCksIGluZGV4KTsKK30KKwogUmVnaXN0ZXJJRCogQnl0
ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19hcmd1bWVudChCeXRlY29kZUdlbmVy
YXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7CiAgICAgQXJndW1lbnRMaXN0Tm9k
ZSogbm9kZSA9IG1fYXJncy0+bV9saXN0Tm9kZTsKQEAgLTExMTgsNiArMTE0NSwyMiBAQCBSZWdp
c3RlcklEKiBCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX3B1dFByb21pc2VJ
bnRlcm5hbEZpZWxkKEJ5dGVjbwogICAgIHJldHVybiBnZW5lcmF0b3IubW92ZShkc3QsIGdlbmVy
YXRvci5lbWl0UHV0SW50ZXJuYWxGaWVsZChiYXNlLmdldCgpLCBpbmRleCwgdmFsdWUuZ2V0KCkp
KTsKIH0KIAorUmVnaXN0ZXJJRCogQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNp
Y19wdXRHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Is
IFJlZ2lzdGVySUQqIGRzdCkKK3sKKyAgICBBcmd1bWVudExpc3ROb2RlKiBub2RlID0gbV9hcmdz
LT5tX2xpc3ROb2RlOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gZ2VuZXJhdG9yLmVt
aXROb2RlKG5vZGUpOworICAgIG5vZGUgPSBub2RlLT5tX25leHQ7CisgICAgUkVMRUFTRV9BU1NF
UlQobm9kZS0+bV9leHByLT5pc0J5dGVjb2RlSW50cmluc2ljTm9kZSgpKTsKKyAgICB1bnNpZ25l
ZCBpbmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihnZW5lcmF0b3JJbnRlcm5hbEZpZWxkSW5k
ZXgoc3RhdGljX2Nhc3Q8Qnl0ZWNvZGVJbnRyaW5zaWNOb2RlKj4obm9kZS0+bV9leHByKSkpOwor
ICAgIEFTU0VSVChpbmRleCA8IEpTR2VuZXJhdG9yOjpudW1iZXJPZkludGVybmFsRmllbGRzKTsK
KyAgICBub2RlID0gbm9kZS0+bV9uZXh0OworICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9
IGdlbmVyYXRvci5lbWl0Tm9kZShub2RlKTsKKworICAgIEFTU0VSVCghbm9kZS0+bV9uZXh0KTsK
KworICAgIHJldHVybiBnZW5lcmF0b3IubW92ZShkc3QsIGdlbmVyYXRvci5lbWl0UHV0SW50ZXJu
YWxGaWVsZChiYXNlLmdldCgpLCBpbmRleCwgdmFsdWUuZ2V0KCkpKTsKK30KKwogUmVnaXN0ZXJJ
RCogQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY190YWlsQ2FsbEZvcndhcmRB
cmd1bWVudHMoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQog
ewogICAgIEFyZ3VtZW50TGlzdE5vZGUqIG5vZGUgPSBtX2FyZ3MtPm1fbGlzdE5vZGU7CkBAIC0x
MjMxLDYgKzEyNzQsMTUgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0
X2ludHJpbnNpY19pZFdpdGhQcm9maWxlKEJ5dGVjb2RlR2VuZXJhdG8KIAogICAgIHJldHVybiBn
ZW5lcmF0b3IubW92ZShkc3QsIGdlbmVyYXRvci5lbWl0SWRXaXRoUHJvZmlsZShpZFZhbHVlLmdl
dCgpLCBzcGVjdWxhdGlvbikpOwogfQorCitSZWdpc3RlcklEKiBCeXRlY29kZUludHJpbnNpY05v
ZGU6OmVtaXRfaW50cmluc2ljX2lzR2VuZXJhdG9yKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3ImIGdl
bmVyYXRvciwgSlNDOjpSZWdpc3RlcklEKiBkc3QpCit7CisgICAgQXJndW1lbnRMaXN0Tm9kZSog
bm9kZSA9IG1fYXJncy0+bV9saXN0Tm9kZTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3JjID0g
Z2VuZXJhdG9yLmVtaXROb2RlKG5vZGUpOworICAgIEFTU0VSVCghbm9kZS0+bV9uZXh0KTsKKwor
ICAgIHJldHVybiBnZW5lcmF0b3IubW92ZShkc3QsIGdlbmVyYXRvci5lbWl0SXNHZW5lcmF0b3Io
Z2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBzcmMuZ2V0KCkpKTsKK30KICAgICAKIFJl
Z2lzdGVySUQqIEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfaXNKU0FycmF5
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgSlNDOjpSZWdpc3RlcklEKiBkc3Qp
CiB7CkBAIC0zOTkzLDcgKzQwNDUsNyBAQCB2b2lkIEZ1bmN0aW9uTm9kZTo6ZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqKQogICAgICAgICBnZW5l
cmF0b3IubW92ZShhcmdzLmFyZ3VtZW50UmVnaXN0ZXIoYXJndW1lbnRDb3VudCsrKSwgZ2VuZXJh
dG9yLmdlbmVyYXRvclJlZ2lzdGVyKCkpOwogICAgICAgICBnZW5lcmF0b3IubW92ZShhcmdzLmFy
Z3VtZW50UmVnaXN0ZXIoYXJndW1lbnRDb3VudCsrKSwgZ2VuZXJhdG9yLnByb21pc2VSZWdpc3Rl
cigpKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGFyZ3MuYXJndW1lbnRSZWdpc3Rlcihh
cmd1bWVudENvdW50KyspLCBqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRM
b2FkKGFyZ3MuYXJndW1lbnRSZWdpc3Rlcihhcmd1bWVudENvdW50KyspLCBqc051bWJlcihzdGF0
aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JSZXN1bWVNb2Rl
OjpOb3JtYWxNb2RlKSkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdExvYWQoYXJncy5hcmd1bWVu
dFJlZ2lzdGVyKGFyZ3VtZW50Q291bnQrKyksIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+
KEpTR2VuZXJhdG9yOjpHZW5lcmF0b3JSZXN1bWVNb2RlOjpOb3JtYWxNb2RlKSkpOwogICAgICAg
ICAvLyBKU1RleHRQb3NpdGlvbihpbnQgX2xpbmUsIGludCBfb2Zmc2V0LCBpbnQgX2xpbmVTdGFy
dE9mZnNldCkKICAgICAgICAgSlNUZXh0UG9zaXRpb24gZGl2b3QoZmlyc3RMaW5lKCksIHN0YXJ0
T2Zmc2V0KCksIGxpbmVTdGFydE9mZnNldCgpKTsKIApAQCAtNDAxMCwxMSArNDA2MiwxMSBAQCB2
b2lkIEZ1bmN0aW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0
b3IsIFJlZ2lzdGVySUQqKQogICAgICAgICBSZWY8TGFiZWw+IGdlbmVyYXRvckJvZHlMYWJlbCA9
IGdlbmVyYXRvci5uZXdMYWJlbCgpOwogICAgICAgICB7CiAgICAgICAgICAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gY29uZGl0aW9uID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwotICAgICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRFcXVhbGl0eU9wPE9wU3RyaWN0ZXE+KGNvbmRpdGlvbi5nZXQoKSwg
Z2VuZXJhdG9yLmdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3RlcigpLCBnZW5lcmF0b3IuZW1pdExv
YWQobnVsbHB0ciwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5j
dGlvbjo6R2VuZXJhdG9yUmVzdW1lTW9kZTo6Tm9ybWFsTW9kZSkpKSk7CisgICAgICAgICAgICBn
ZW5lcmF0b3IuZW1pdEVxdWFsaXR5T3A8T3BTdHJpY3RlcT4oY29uZGl0aW9uLmdldCgpLCBnZW5l
cmF0b3IuZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCksIGdlbmVyYXRvci5lbWl0TG9hZChu
dWxscHRyLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6R2VuZXJh
dG9yUmVzdW1lTW9kZTo6Tm9ybWFsTW9kZSkpKSk7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1p
dEp1bXBJZlRydWUoY29uZGl0aW9uLmdldCgpLCBnZW5lcmF0b3JCb2R5TGFiZWwuZ2V0KCkpOwog
CiAgICAgICAgICAgICBSZWY8TGFiZWw+IHRocm93TGFiZWwgPSBnZW5lcmF0b3IubmV3TGFiZWwo
KTsKLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0RXF1YWxpdHlPcDxPcFN0cmljdGVxPihjb25k
aXRpb24uZ2V0KCksIGdlbmVyYXRvci5nZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSwgZ2Vu
ZXJhdG9yLmVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpT
R2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvclJlc3VtZU1vZGU6OlRocm93TW9kZSkpKSk7Cisg
ICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEVxdWFsaXR5T3A8T3BTdHJpY3RlcT4oY29uZGl0aW9u
LmdldCgpLCBnZW5lcmF0b3IuZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCksIGdlbmVyYXRv
ci5lbWl0TG9hZChudWxscHRyLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVy
YXRvcjo6R2VuZXJhdG9yUmVzdW1lTW9kZTo6VGhyb3dNb2RlKSkpKTsKICAgICAgICAgICAgIGdl
bmVyYXRvci5lbWl0SnVtcElmVHJ1ZShjb25kaXRpb24uZ2V0KCksIHRocm93TGFiZWwuZ2V0KCkp
OwogCiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFJldHVybihnZW5lcmF0b3IuZ2VuZXJhdG9y
VmFsdWVSZWdpc3RlcigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAppbmRleCA5YjZiZjAzNTk3ODc5N2Ez
ZTMzYTRjODQ5NTE0MDMxNDBjNTMxZDEzLi5lMzA3MWM1YmYzMmVkMTFmOTVmZTExN2UzZjM2MDhk
MWFiNGQ3ODFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3Ry
YWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVk
ZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSGFzaE1hcEltcGwuaCIKICNpbmNsdWRlICJK
SVRPcGVyYXRpb25zLmgiCisjaW5jbHVkZSAiSlNHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJKU0lt
bXV0YWJsZUJ1dHRlcmZseS5oIgogI2luY2x1ZGUgIkpTSW50ZXJuYWxQcm9taXNlLmgiCiAjaW5j
bHVkZSAiSlNJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5oIgpAQCAtMTU2NSw2ICsxNTY2LDEz
IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVF
ZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgICAgICBicmVhazsKIAogICAgICAg
ICBjYXNlIElzQ2VsbFdpdGhUeXBlOgorICAgICAgICAgICAgaWYgKG5vZGUtPnNwZWN1bGF0ZWRU
eXBlRm9yUXVlcnkoKSA9PSBTcGVjQ2VsbCkgeworICAgICAgICAgICAgICAgIGlmICghKGNoaWxk
Lm1fdHlwZSAmIFNwZWNDZWxsKSkgeworICAgICAgICAgICAgICAgICAgICBzZXRDb25zdGFudChu
b2RlLCBqc0Jvb2xlYW4oZmFsc2UpKTsKKyAgICAgICAgICAgICAgICAgICAgY29uc3RhbnRXYXNT
ZXQgPSB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICghKGNoaWxkLm1fdHlwZSAmIH5ub2RlLT5zcGVj
dWxhdGVkVHlwZUZvclF1ZXJ5KCkpKSB7CiAgICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9k
ZSwganNCb29sZWFuKHRydWUpKTsKICAgICAgICAgICAgICAgICBjb25zdGFudFdhc1NldCA9IHRy
dWU7CkBAIC0yNjc1LDEwICsyNjgzLDQyIEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0
cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAg
ICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgQ3JlYXRlR2VuZXJhdG9yOiB7CisgICAgICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICBpZiAoSlNWYWx1ZSBiYXNlID0gZm9yTm9k
ZShub2RlLT5jaGlsZDEoKSkubV92YWx1ZSkgeworICAgICAgICAgICAgaWYgKGF1dG8qIGZ1bmN0
aW9uID0ganNEeW5hbWljQ2FzdDxKU0Z1bmN0aW9uKj4obV9ncmFwaC5tX3ZtLCBiYXNlKSkgewor
ICAgICAgICAgICAgICAgIGlmIChGdW5jdGlvblJhcmVEYXRhKiByYXJlRGF0YSA9IGZ1bmN0aW9u
LT5yYXJlRGF0YSgpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChyYXJlRGF0YS0+YWxsb2Nh
dGlvblByb2ZpbGVXYXRjaHBvaW50U2V0KCkuaXNTdGlsbFZhbGlkKCkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gcmFyZURhdGEtPmludGVybmFsRnVu
Y3Rpb25BbGxvY2F0aW9uU3RydWN0dXJlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
c3RydWN0dXJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgc3RydWN0dXJlLT5jbGFz
c0luZm8oKSA9PSBKU0dlbmVyYXRvcjo6aW5mbygpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJiYgc3RydWN0dXJlLT5nbG9iYWxPYmplY3QoKSA9PSBnbG9iYWxPYmplY3QKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAmJiByYXJlRGF0YS0+YWxsb2NhdGlvblByb2ZpbGVXYXRjaHBv
aW50U2V0KCkuaXNTdGlsbFZhbGlkKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
X2dyYXBoLmZyZWV6ZShyYXJlRGF0YSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9n
cmFwaC53YXRjaHBvaW50cygpLmFkZExhemlseShyYXJlRGF0YS0+YWxsb2NhdGlvblByb2ZpbGVX
YXRjaHBvaW50U2V0KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fc3RhdGUuc2V0
Rm91bmRDb25zdGFudHModHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkRm9s
ZENsb2JiZXJXb3JsZCgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEZvck5vZGUo
bm9kZSwgc3RydWN0dXJlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBjbG9iYmVyV29ybGQo
KTsKKyAgICAgICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY09iamVjdE90aGVyKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBOZXdQcm9taXNlOgogICAgICAgICBBU1NFUlQo
ISFub2RlLT5zdHJ1Y3R1cmUoKS5nZXQoKSk7CiAgICAgICAgIHNldEZvck5vZGUobm9kZSwgbm9k
ZS0+c3RydWN0dXJlKCkpOwogICAgICAgICBicmVhazsKKworICAgIGNhc2UgTmV3R2VuZXJhdG9y
OgorICAgICAgICBBU1NFUlQoISFub2RlLT5zdHJ1Y3R1cmUoKS5nZXQoKSk7CisgICAgICAgIHNl
dEZvck5vZGUobm9kZSwgbm9kZS0+c3RydWN0dXJlKCkpOworICAgICAgICBicmVhazsKICAgICAg
ICAgCiAgICAgY2FzZSBOZXdPYmplY3Q6CiAgICAgICAgIEFTU0VSVCghIW5vZGUtPnN0cnVjdHVy
ZSgpLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0
ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHAKaW5kZXggMmM4MmIxZTkzYmQxZmQ1MmNlZDU1MDRhNDFiYWVjOWE1ZDliOTM5Mi4u
M2U1NDI4MWUzNzYxZGQwMDBjYjRjNmZiYTEwZDAxYjdmNzJiOWE4YSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTQ5MzksNiArNDkz
OSw1MiBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQog
ICAgICAgICAgICAgTkVYVF9PUENPREUob3BfY3JlYXRlX3Byb21pc2UpOwogICAgICAgICB9CiAK
KyAgICAgICAgY2FzZSBvcF9jcmVhdGVfZ2VuZXJhdG9yOiB7CisgICAgICAgICAgICBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY3VycmVudE5v
ZGVPcmlnaW4oKS5zZW1hbnRpYyk7CisgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVu
dEluc3RydWN0aW9uLT5hczxPcENyZWF0ZUdlbmVyYXRvcj4oKTsKKyAgICAgICAgICAgIE5vZGUq
IGNhbGxlZSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9jYWxsZWUpKTsKKworICAg
ICAgICAgICAgYm9vbCBhbHJlYWR5RW1pdHRlZCA9IGZhbHNlOworCisgICAgICAgICAgICBKU0Z1
bmN0aW9uKiBmdW5jdGlvbiA9IGNhbGxlZS0+ZHluYW1pY0Nhc3RDb25zdGFudDxKU0Z1bmN0aW9u
Kj4oKm1fdm0pOworICAgICAgICAgICAgaWYgKCFmdW5jdGlvbikgeworICAgICAgICAgICAgICAg
IEpTQ2VsbCogY2FjaGVkRnVuY3Rpb24gPSBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spLm1f
Y2FjaGVkQ2FsbGVlLnVudmFsaWRhdGVkR2V0KCk7CisgICAgICAgICAgICAgICAgaWYgKGNhY2hl
ZEZ1bmN0aW9uCisgICAgICAgICAgICAgICAgICAgICYmIGNhY2hlZEZ1bmN0aW9uICE9IEpTQ2Vs
bDo6c2Vlbk11bHRpcGxlQ2FsbGVlT2JqZWN0cygpCisgICAgICAgICAgICAgICAgICAgICYmICFt
X2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4
LCBCYWRDZWxsKSkgeworICAgICAgICAgICAgICAgICAgICBBU1NFUlQoY2FjaGVkRnVuY3Rpb24t
PmluaGVyaXRzPEpTRnVuY3Rpb24+KCptX3ZtKSk7CisKKyAgICAgICAgICAgICAgICAgICAgRnJv
emVuVmFsdWUqIGZyb3plbiA9IG1fZ3JhcGguZnJlZXplKGNhY2hlZEZ1bmN0aW9uKTsKKyAgICAg
ICAgICAgICAgICAgICAgYWRkVG9HcmFwaChDaGVja0NlbGwsIE9wSW5mbyhmcm96ZW4pLCBjYWxs
ZWUpOworCisgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uID0gc3RhdGljX2Nhc3Q8SlNGdW5j
dGlvbio+KGNhY2hlZEZ1bmN0aW9uKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIGlmIChmdW5jdGlvbikgeworICAgICAgICAgICAgICAgIGlmIChGdW5j
dGlvblJhcmVEYXRhKiByYXJlRGF0YSA9IGZ1bmN0aW9uLT5yYXJlRGF0YSgpKSB7CisgICAgICAg
ICAgICAgICAgICAgIGlmIChyYXJlRGF0YS0+YWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50U2V0
KCkuaXNTdGlsbFZhbGlkKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFN0cnVjdHVyZSog
c3RydWN0dXJlID0gcmFyZURhdGEtPmludGVybmFsRnVuY3Rpb25BbGxvY2F0aW9uU3RydWN0dXJl
KCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RydWN0dXJlCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJiYgc3RydWN0dXJlLT5jbGFzc0luZm8oKSA9PSBKU0dlbmVyYXRvcjo6
aW5mbygpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgc3RydWN0dXJlLT5nbG9iYWxP
YmplY3QoKSA9PSBnbG9iYWxPYmplY3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBy
YXJlRGF0YS0+YWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50U2V0KCkuaXNTdGlsbFZhbGlkKCkp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLmZyZWV6ZShyYXJlRGF0YSk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC53YXRjaHBvaW50cygpLmFkZExh
emlseShyYXJlRGF0YS0+YWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50U2V0KCkpOworCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIGNhbGxlZSBpcyBzdGlsbCBsaXZlIHVwIHRv
IHRoaXMgcG9pbnQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChQaGFu
dG9tLCBjYWxsZWUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldChWaXJ0dWFsUmVn
aXN0ZXIoYnl0ZWNvZGUubV9kc3QpLCBhZGRUb0dyYXBoKE5ld0dlbmVyYXRvciwgT3BJbmZvKG1f
Z3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUoc3RydWN0dXJlKSkpKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhbHJlYWR5RW1pdHRlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBpZiAoIWFscmVhZHlFbWl0dGVkKQorICAgICAgICAgICAgICAgIHNl
dChWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9kc3QpLCBhZGRUb0dyYXBoKENyZWF0ZUdlbmVy
YXRvciwgY2FsbGVlKSk7CisgICAgICAgICAgICBORVhUX09QQ09ERShvcF9jcmVhdGVfZ2VuZXJh
dG9yKTsKKyAgICAgICAgfQorCiAgICAgICAgIGNhc2Ugb3BfbmV3X29iamVjdDogewogICAgICAg
ICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BOZXdPYmplY3Q+
KCk7CiAgICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV9kc3QsCkBAIC00OTUzLDYgKzQ5OTksMTMg
QEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAg
ICAgICAgIHNldChieXRlY29kZS5tX2RzdCwgYWRkVG9HcmFwaChOZXdQcm9taXNlLCBPcEluZm8o
bV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShieXRlY29kZS5tX2lzSW50ZXJuYWxQcm9taXNlID8g
Z2xvYmFsT2JqZWN0LT5pbnRlcm5hbFByb21pc2VTdHJ1Y3R1cmUoKSA6IGdsb2JhbE9iamVjdC0+
cHJvbWlzZVN0cnVjdHVyZSgpKSksIE9wSW5mbyhieXRlY29kZS5tX2lzSW50ZXJuYWxQcm9taXNl
KSkpOwogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfbmV3X3Byb21pc2UpOwogICAgICAgICB9
CisKKyAgICAgICAgY2FzZSBvcF9uZXdfZ2VuZXJhdG9yOiB7CisgICAgICAgICAgICBhdXRvIGJ5
dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcE5ld0dlbmVyYXRvcj4oKTsKKyAgICAg
ICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihjdXJyZW50Tm9kZU9yaWdpbigpLnNlbWFudGljKTsKKyAgICAgICAgICAgIHNldChieXRl
Y29kZS5tX2RzdCwgYWRkVG9HcmFwaChOZXdHZW5lcmF0b3IsIE9wSW5mbyhtX2dyYXBoLnJlZ2lz
dGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+Z2VuZXJhdG9yU3RydWN0dXJlKCkpKSkpOworICAg
ICAgICAgICAgTkVYVF9PUENPREUob3BfbmV3X2dlbmVyYXRvcik7CisgICAgICAgIH0KICAgICAg
ICAgICAgIAogICAgICAgICBjYXNlIG9wX25ld19hcnJheTogewogICAgICAgICAgICAgYXV0byBi
eXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BOZXdBcnJheT4oKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAppbmRleCBjMGVlOThhZWE4
MzhkNzI1NmU2Yjc1NGI1NDU3NGJiOGQ2ZTlmOWZhLi43MWVjN2YxNjI4NDk1ZWIyYzg0MDQ1OTUx
Nzg1NzEwMmYxZDhlNDBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBh
YmlsaXRpZXMuY3BwCkBAIC0xMTcsNiArMTE3LDcgQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxp
dHlMZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEkK
ICAgICBjYXNlIG9wX2NoZWNrX3RkejoKICAgICBjYXNlIG9wX2NyZWF0ZV90aGlzOgogICAgIGNh
c2Ugb3BfY3JlYXRlX3Byb21pc2U6CisgICAgY2FzZSBvcF9jcmVhdGVfZ2VuZXJhdG9yOgogICAg
IGNhc2Ugb3BfYml0bm90OgogICAgIGNhc2Ugb3BfYml0YW5kOgogICAgIGNhc2Ugb3BfYml0b3I6
CkBAIC0yMTIsNiArMjEzLDcgQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNv
ZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEkKICAgICBjYXNlIG9w
X2VuZDoKICAgICBjYXNlIG9wX25ld19vYmplY3Q6CiAgICAgY2FzZSBvcF9uZXdfcHJvbWlzZToK
KyAgICBjYXNlIG9wX25ld19nZW5lcmF0b3I6CiAgICAgY2FzZSBvcF9uZXdfYXJyYXk6CiAgICAg
Y2FzZSBvcF9uZXdfYXJyYXlfd2l0aF9zaXplOgogICAgIGNhc2Ugb3BfbmV3X2FycmF5X2J1ZmZl
cjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKaW5kZXggYzFiN2Ew
YmMyMjFjZjQ4NDFjNmQ0MzFhYzRlNWNlNWFkYTFmNzFhMC4uYjhjMTcxZDNhNzZjZGMzMzgzMjlk
ODkxYWViNWJlMDc2YjI0ZGY2MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDbG9iYmVyaXplLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9i
YmVyaXplLmgKQEAgLTY2Nyw2ICs2NjcsNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBo
LCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAg
IGNhc2UgTnVtYmVyVG9TdHJpbmdXaXRoUmFkaXg6CiAgICAgY2FzZSBDcmVhdGVUaGlzOgogICAg
IGNhc2UgQ3JlYXRlUHJvbWlzZToKKyAgICBjYXNlIENyZWF0ZUdlbmVyYXRvcjoKICAgICBjYXNl
IEluc3RhbmNlT2Y6CiAgICAgY2FzZSBTdHJpbmdWYWx1ZU9mOgogICAgIGNhc2UgT2JqZWN0S2V5
czoKQEAgLTE1NjUsNiArMTU2Niw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5v
ZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAKICAgICBj
YXNlIE5ld09iamVjdDoKICAgICBjYXNlIE5ld1Byb21pc2U6CisgICAgY2FzZSBOZXdHZW5lcmF0
b3I6CiAgICAgY2FzZSBOZXdSZWdleHA6CiAgICAgY2FzZSBOZXdTeW1ib2w6CiAgICAgY2FzZSBO
ZXdTdHJpbmdPYmplY3Q6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Nsb2JiZXJzRXhpdFN0YXRlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xv
YmJlcnNFeGl0U3RhdGUuY3BwCmluZGV4IDM3MGZkMWRjMmM1YzE0NzZjN2I1YTUzY2ZkYzJkYjdj
MWY0ZTAxYzQuLmQyZjdiYTQ3OGQ4ZWM4MzRjZDI1MDhkNTNiZDlmYTE0ZDI4MDA5MGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3Bw
CkBAIC01OCw2ICs1OCw3IEBAIGJvb2wgY2xvYmJlcnNFeGl0U3RhdGUoR3JhcGgmIGdyYXBoLCBO
b2RlKiBub2RlKQogICAgIGNhc2UgQXJyYXlpZnk6CiAgICAgY2FzZSBOZXdPYmplY3Q6CiAgICAg
Y2FzZSBOZXdQcm9taXNlOgorICAgIGNhc2UgTmV3R2VuZXJhdG9yOgogICAgIGNhc2UgTmV3UmVn
ZXhwOgogICAgIGNhc2UgTmV3U3ltYm9sOgogICAgIGNhc2UgTmV3U3RyaW5nT2JqZWN0OgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFz
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNl
LmNwcAppbmRleCA5OWQ4NzVlNjZhNmI3MGZiZTUyODgxZTAwMTE3YTcwOGJlYTQzYmQwLi5mM2Y1
Y2I2MGQ4OGFjNWM2NDUyZGRmMTViZTRjNDVkZmUxMDhkOWE3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcApAQCAtNzc4
LDYgKzc3OCwzMCBAQCBjbGFzcyBDb25zdGFudEZvbGRpbmdQaGFzZSA6IHB1YmxpYyBQaGFzZSB7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAKKyAgICAgICAgICAgIGNh
c2UgQ3JlYXRlR2VuZXJhdG9yOiB7CisgICAgICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
Yyk7CisgICAgICAgICAgICAgICAgaWYgKEpTVmFsdWUgYmFzZSA9IG1fc3RhdGUuZm9yTm9kZShu
b2RlLT5jaGlsZDEoKSkubV92YWx1ZSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoYXV0byog
ZnVuY3Rpb24gPSBqc0R5bmFtaWNDYXN0PEpTRnVuY3Rpb24qPihtX2dyYXBoLm1fdm0sIGJhc2Up
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoRnVuY3Rpb25SYXJlRGF0YSogcmFyZURh
dGEgPSBmdW5jdGlvbi0+cmFyZURhdGEoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChyYXJlRGF0YS0+YWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50U2V0KCkuaXNTdGlsbFZh
bGlkKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUgPSByYXJlRGF0YS0+aW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25TdHJ1Y3R1cmUoKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0cnVjdHVyZQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgc3RydWN0dXJlLT5jbGFzc0luZm8oKSA9PSBK
U0dlbmVyYXRvcjo6aW5mbygpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAm
JiBzdHJ1Y3R1cmUtPmdsb2JhbE9iamVjdCgpID09IGdsb2JhbE9iamVjdAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJiYgcmFyZURhdGEtPmFsbG9jYXRpb25Qcm9maWxlV2F0
Y2hwb2ludFNldCgpLmlzU3RpbGxWYWxpZCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtX2dyYXBoLmZyZWV6ZShyYXJlRGF0YSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtX2dyYXBoLndhdGNocG9pbnRzKCkuYWRkTGF6aWx5KHJhcmVEYXRh
LT5hbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnRTZXQoKSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9OZXdHZW5lcmF0b3IobV9ncmFwaC5yZWdp
c3RlclN0cnVjdHVyZShzdHJ1Y3R1cmUpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNoYW5nZWQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICB9CisKICAgICAgICAgICAgIGNhc2UgT2JqZWN0Q3JlYXRlOiB7CiAgICAgICAg
ICAgICAgICAgaWYgKEpTVmFsdWUgYmFzZSA9IG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEo
KSkubV92YWx1ZSkgewogICAgICAgICAgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAppbmRleCBmYjMxMjJiN2MyNjVk
M2I4ZWQxYTZhMDA2YjJkYzgyNGE1ZTU4ZDc1Li5iZWExZTE2NmU0OWU2ZmRiYTAzNTc3NThmMDVj
ZTM1ODFlZmNiYWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rv
ZXNHQy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCkBA
IC0zMzIsNiArMzMyLDcgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQog
ICAgIGNhc2UgVHJ5R2V0QnlJZDoKICAgICBjYXNlIENyZWF0ZVRoaXM6CiAgICAgY2FzZSBDcmVh
dGVQcm9taXNlOgorICAgIGNhc2UgQ3JlYXRlR2VuZXJhdG9yOgogICAgIGNhc2UgT2JqZWN0Q3Jl
YXRlOgogICAgIGNhc2UgT2JqZWN0S2V5czoKICAgICBjYXNlIEFsbG9jYXRlUHJvcGVydHlTdG9y
YWdlOgpAQCAtMzQwLDYgKzM0MSw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSog
bm9kZSkKICAgICBjYXNlIEFycmF5aWZ5VG9TdHJ1Y3R1cmU6CiAgICAgY2FzZSBOZXdPYmplY3Q6
CiAgICAgY2FzZSBOZXdQcm9taXNlOgorICAgIGNhc2UgTmV3R2VuZXJhdG9yOgogICAgIGNhc2Ug
TmV3QXJyYXk6CiAgICAgY2FzZSBOZXdBcnJheVdpdGhTcHJlYWQ6CiAgICAgY2FzZSBTcHJlYWQ6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAppbmRleCBlNDVh
YzVjMWU2NGM3M2ZlMjY4OWM0ZTM4ZTRlZTJiMTI1ZGMzNzFkLi5hNTAxY2RkODQzZTEwYzRlZjI4
ODljNDA1NzBlMDAwZGIyMTY0OTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Rml4dXBQaGFzZS5jcHAKQEAgLTE2NDYsNiArMTY0Niw3IEBAIGNsYXNzIEZpeHVwUGhhc2UgOiBw
dWJsaWMgUGhhc2UgewogICAgICAgICBjYXNlIENoZWNrQ2VsbDoKICAgICAgICAgY2FzZSBDcmVh
dGVUaGlzOgogICAgICAgICBjYXNlIENyZWF0ZVByb21pc2U6CisgICAgICAgIGNhc2UgQ3JlYXRl
R2VuZXJhdG9yOgogICAgICAgICBjYXNlIEdldEJ1dHRlcmZseTogewogICAgICAgICAgICAgZml4
RWRnZTxDZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTI0
MDgsNiArMjQwOSw3IEBAIGNsYXNzIEZpeHVwUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAg
ICBjYXNlIFByb2ZpbGVDb250cm9sRmxvdzoKICAgICAgICAgY2FzZSBOZXdPYmplY3Q6CiAgICAg
ICAgIGNhc2UgTmV3UHJvbWlzZToKKyAgICAgICAgY2FzZSBOZXdHZW5lcmF0b3I6CiAgICAgICAg
IGNhc2UgTmV3UmVnZXhwOgogICAgICAgICBjYXNlIERlbGV0ZUJ5SWQ6CiAgICAgICAgIGNhc2Ug
RGVsZXRlQnlWYWw6CkBAIC0yNjMzLDYgKzI2MzUsOSBAQCBjbGFzcyBGaXh1cFBoYXNlIDogcHVi
bGljIFBoYXNlIHsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFNwZWNDZWxsOgorICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1
bGF0ZUNlbGwoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAppbmRleCA2OWYwOGMx
ODZkNDhjZWJmNmM3NmI4OWE0ZDVkNDg0NDA3ZGIzZDBlLi45MjJjZTFlY2NmMjBhYzJkMzc2NDIx
YmYwODQzOWM3NmUyOGY5ODAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaApAQCAt
NzY3LDYgKzc2NywxNSBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgICAgIG1fb3BJbmZvMiA9IGludGVy
bmFsOwogICAgIH0KIAorICAgIHZvaWQgY29udmVydFRvTmV3R2VuZXJhdG9yKFJlZ2lzdGVyZWRT
dHJ1Y3R1cmUgc3RydWN0dXJlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fb3AgPT0gQ3JlYXRl
R2VuZXJhdG9yKTsKKyAgICAgICAgc2V0T3BBbmREZWZhdWx0RmxhZ3MoTmV3R2VuZXJhdG9yKTsK
KyAgICAgICAgY2hpbGRyZW4ucmVzZXQoKTsKKyAgICAgICAgbV9vcEluZm8gPSBzdHJ1Y3R1cmU7
CisgICAgICAgIG1fb3BJbmZvMiA9IE9wSW5mb1dyYXBwZXIoKTsKKyAgICB9CisKICAgICB2b2lk
IGNvbnZlcnRUb05ld0FycmF5QnVmZmVyKEZyb3plblZhbHVlKiBpbW11dGFibGVCdXR0ZXJmbHkp
OwogICAgIAogICAgIHZvaWQgY29udmVydFRvRGlyZWN0Q2FsbChGcm96ZW5WYWx1ZSopOwpAQCAt
MTkwOSw2ICsxOTE4LDcgQEAgc3RydWN0IE5vZGUgewogICAgICAgICBjYXNlIEFycmF5aWZ5VG9T
dHJ1Y3R1cmU6CiAgICAgICAgIGNhc2UgTmV3T2JqZWN0OgogICAgICAgICBjYXNlIE5ld1Byb21p
c2U6CisgICAgICAgIGNhc2UgTmV3R2VuZXJhdG9yOgogICAgICAgICBjYXNlIE5ld1N0cmluZ09i
amVjdDoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBkZWZhdWx0OgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCmluZGV4IDRkNzE1ODJlMTdhNjkxYTA1OGE4
MzQ3MjI4NGY2MDE5Zjk3ZDgwMzkuLjA2MmNkYzA4NDkzMGQ3NGEwMmE3MmEzMGJlOTYwZjZmMTg1
MDNkZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKQEAgLTU0LDYg
KzU0LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKFRvVGhp
cywgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oQ3JlYXRlVGhpcywgTm9kZVJlc3VsdEpTKSAv
KiBOb3RlIHRoaXMgaXMgbm90IE11c3RHZW5lcmF0ZSBzaW5jZSB3ZSdyZSByZXR1cm5pbmcgaXQg
YW55d2F5LiAqLyBcCiAgICAgbWFjcm8oQ3JlYXRlUHJvbWlzZSwgTm9kZVJlc3VsdEpTIHwgTm9k
ZU11c3RHZW5lcmF0ZSkgXAorICAgIG1hY3JvKENyZWF0ZUdlbmVyYXRvciwgTm9kZVJlc3VsdEpT
IHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEdldENhbGxlZSwgTm9kZVJlc3VsdEpT
KSBcCiAgICAgbWFjcm8oU2V0Q2FsbGVlLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8o
R2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIE5vZGVSZXN1bHRJbnQzMikgXApAQCAtMzQw
LDYgKzM0MSw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICAvKiBBbGxv
Y2F0aW9ucy4gKi9cCiAgICAgbWFjcm8oTmV3T2JqZWN0LCBOb2RlUmVzdWx0SlMpIFwKICAgICBt
YWNybyhOZXdQcm9taXNlLCBOb2RlUmVzdWx0SlMpIFwKKyAgICBtYWNybyhOZXdHZW5lcmF0b3Is
IE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKE5ld0FycmF5LCBOb2RlUmVzdWx0SlMgfCBOb2Rl
SGFzVmFyQXJncykgXAogICAgIG1hY3JvKE5ld0FycmF5V2l0aFNwcmVhZCwgTm9kZVJlc3VsdEpT
IHwgTm9kZUhhc1ZhckFyZ3MpIFwKICAgICBtYWNybyhOZXdBcnJheVdpdGhTaXplLCBOb2RlUmVz
dWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPcGVyYXRpb25zLmNwcAppbmRleCBhZmEyODIyMGRjZjMwMjQ0MTQ0MTU5M2UzNTczZDg5ZTNh
ZDUwMzNkLi5jMzE1YzI2NTI3Yzc2MmIxM2MwZTZlMzNjMzQ5YzJiY2I2NDQ0OWFiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKQEAgLTM5OCw2ICszOTgs
MTYgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZUludGVybmFsUHJvbWlz
ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KgogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgSlNJbnRlcm5hbFByb21pc2U6OmNyZWF0ZSh2bSwgc3RydWN0dXJlKSk7CiB9CiAKK0pTQ2Vs
bCogSklUX09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVHZW5lcmF0b3IoRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCogY29uc3RydWN0b3IsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7
CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBleGVjKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJj
bGFzc1N0cnVjdHVyZShleGVjLCBudWxscHRyLCBjb25zdHJ1Y3RvciwgZ2xvYmFsT2JqZWN0LT5n
ZW5lcmF0b3JTdHJ1Y3R1cmUoKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVs
bHB0cik7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU0dlbmVyYXRvcjo6Y3JlYXRl
KHZtLCBzdHJ1Y3R1cmUpKTsKK30KKwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNh
bGxPYmplY3RDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRUYXJnZXQpCiB7CiAgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3Bl
cmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKaW5k
ZXggYjk4ZTYyMTc1YzY2ZjM2ZTM2NGQ1OGU5ZGM4MDZhZDA1MmRjNjUyYi4uNzQ0YTUwZGJmZWY4
Mjc1ZTI5YWY3Mjk2OWM2ODY0YTM2NjJjNTcwMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPcGVyYXRpb25zLmgKQEAgLTUwLDYgKzUwLDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbk9iamVjdENyZWF0ZU9iamVjdChFeGVjU3RhdGUqLCBKU09iamVjdCopIFdURl9J
TlQKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVUaGlzKEV4ZWNTdGF0ZSos
IEpTT2JqZWN0KiBjb25zdHJ1Y3RvciwgdWludDMyX3QgaW5saW5lQ2FwYWNpdHkpIFdURl9JTlRF
Uk5BTDsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVQcm9taXNlKEV4ZWNT
dGF0ZSosIEpTT2JqZWN0KiBjb25zdHJ1Y3RvciwgSlNHbG9iYWxPYmplY3QqKSBXVEZfSU5URVJO
QUw7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlSW50ZXJuYWxQcm9taXNl
KEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiBjb25zdHJ1Y3RvciwgSlNHbG9iYWxPYmplY3QqKSBXVEZf
SU5URVJOQUw7CitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlR2VuZXJhdG9y
KEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiBjb25zdHJ1Y3RvciwgSlNHbG9iYWxPYmplY3QqKSBXVEZf
SU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRvVGhpcyhF
eGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxKSBXVEZfSU5URVJOQUw7CiBFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRvVGhpc1N0cmljdChFeGVjU3RhdGUq
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlTW9kKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIpIFdURl9JTlRFUk5BTDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3Bh
Z2F0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9u
UHJvcGFnYXRpb25QaGFzZS5jcHAKaW5kZXggNDhhNDFiMzA3MmI3Njc2MzYxOTEwNDUzYTRkZTRm
NWFhZWI1NGJhYi4uZjIwOWM0YTZmNzQ3MWJkYWUyZThmZGIzYTc4NzA3MmUxNDBjODdkNiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRp
b25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9u
UHJvcGFnYXRpb25QaGFzZS5jcHAKQEAgLTEwMTQsNiArMTAxNCwxMSBAQCBjbGFzcyBQcmVkaWN0
aW9uUHJvcGFnYXRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgIGNhc2UgTmV3UHJv
bWlzZToKICAgICAgICAgICAgIHNldFByZWRpY3Rpb24oU3BlY1Byb21pc2VPYmplY3QpOwogICAg
ICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBDcmVhdGVHZW5lcmF0b3I6CisgICAgICAg
IGNhc2UgTmV3R2VuZXJhdG9yOgorICAgICAgICAgICAgc2V0UHJlZGljdGlvbihTcGVjT2JqZWN0
T3RoZXIpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBB
cnJheVNsaWNlOgogICAgICAgICBjYXNlIE5ld0FycmF5V2l0aFNwcmVhZDoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKaW5kZXggY2E4YWVhMzBhMzUyNjZj
Njc1NDU5YjliNWVmNTQ1MmM1MzE3NmQ1ZC4uMDk1ZTE1YWQ5ZDM2NzNlOGZjODk2NzkyNGJlYTg0
ZTI4ODgwMzliMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZl
VG9FeGVjdXRlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVj
dXRlLmgKQEAgLTE3OSw2ICsxNzksNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0
ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGJvb2wgaWdubwogICAgIGNh
c2UgVG9UaGlzOgogICAgIGNhc2UgQ3JlYXRlVGhpczoKICAgICBjYXNlIENyZWF0ZVByb21pc2U6
CisgICAgY2FzZSBDcmVhdGVHZW5lcmF0b3I6CiAgICAgY2FzZSBPYmplY3RDcmVhdGU6CiAgICAg
Y2FzZSBPYmplY3RLZXlzOgogICAgIGNhc2UgR2V0Q2FsbGVlOgpAQCAtMzIxLDYgKzMyMiw3IEBA
IGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBncmFw
aCwgTm9kZSogbm9kZSwgYm9vbCBpZ25vCiAgICAgY2FzZSBDb25zdHJ1Y3RGb3J3YXJkVmFyYXJn
czoKICAgICBjYXNlIE5ld09iamVjdDoKICAgICBjYXNlIE5ld1Byb21pc2U6CisgICAgY2FzZSBO
ZXdHZW5lcmF0b3I6CiAgICAgY2FzZSBOZXdBcnJheToKICAgICBjYXNlIE5ld0FycmF5V2l0aFNp
emU6CiAgICAgY2FzZSBOZXdBcnJheUJ1ZmZlcjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggMjdjYzFiNDU3YTg5ZjNkNDM1MzAyZWEw
NzMxMjVmZjEzZjM4ZWNmYy4uY2E5MWM0OGE3MTE1MTNjZDc2ZjNmNmE1ZWIyYjI5Yjc4Y2FhNDE2
MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5j
cHAKQEAgLTEyNzY2LDYgKzEyNzY2LDQ5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVD
cmVhdGVQcm9taXNlKE5vZGUqIG5vZGUpCiAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUp
OwogfQogCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3JlYXRlR2VuZXJhdG9yKE5vZGUq
IG5vZGUpCit7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1faml0Lmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOworCisgICAgU3BlY3VsYXRlQ2VsbE9w
ZXJhbmQgY2FsbGVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICBHUFJUZW1wb3JhcnkgcmVz
dWx0KHRoaXMpOworICAgIEdQUlRlbXBvcmFyeSBzdHJ1Y3R1cmUodGhpcyk7CisgICAgR1BSVGVt
cG9yYXJ5IHNjcmF0Y2gxKHRoaXMpOworICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoMih0aGlzKTsK
KworICAgIEdQUlJlZyBjYWxsZWVHUFIgPSBjYWxsZWUuZ3ByKCk7CisgICAgR1BSUmVnIHJlc3Vs
dEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAgICBHUFJSZWcgc3RydWN0dXJlR1BSID0gc3RydWN0dXJl
LmdwcigpOworICAgIEdQUlJlZyBzY3JhdGNoMUdQUiA9IHNjcmF0Y2gxLmdwcigpOworICAgIEdQ
UlJlZyBzY3JhdGNoMkdQUiA9IHNjcmF0Y2gyLmdwcigpOworICAgIC8vIFJhcmUgZGF0YSBpcyBv
bmx5IHVzZWQgdG8gYWNjZXNzIHRoZSBhbGxvY2F0b3IgJiBzdHJ1Y3R1cmUKKyAgICAvLyBXZSBj
YW4gYXZvaWQgdXNpbmcgYW4gYWRkaXRpb25hbCBHUFIgdGhpcyB3YXkKKyAgICBHUFJSZWcgcmFy
ZURhdGFHUFIgPSBzdHJ1Y3R1cmVHUFI7CisKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Qg
c2xvd0Nhc2VzOworCisgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdEZ1bmN0
aW9uKGNhbGxlZUdQUikpOworICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3Mo
Y2FsbGVlR1BSLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZlJhcmVEYXRhKCkpLCByYXJlRGF0YUdQUik7
CisgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVy
OjpaZXJvLCByYXJlRGF0YUdQUikpOworICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFk
ZHJlc3MocmFyZURhdGFHUFIsIEZ1bmN0aW9uUmFyZURhdGE6Om9mZnNldE9mSW50ZXJuYWxGdW5j
dGlvbkFsbG9jYXRpb25Qcm9maWxlKCkgKyBJbnRlcm5hbEZ1bmN0aW9uQWxsb2NhdGlvblByb2Zp
bGU6Om9mZnNldE9mU3RydWN0dXJlKCkpLCBzdHJ1Y3R1cmVHUFIpOworICAgIG1faml0Lm1vdmUo
VHJ1c3RlZEltbVB0cihKU0dlbmVyYXRvcjo6aW5mbygpKSwgc2NyYXRjaDFHUFIpOworICAgIHNs
b3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoUHRyKENDYWxsSGVscGVyczo6Tm90RXF1YWwsIHNj
cmF0Y2gxR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3RydWN0dXJlR1BSLCBTdHJ1Y3R1cmU6
OmNsYXNzSW5mb09mZnNldCgpKSkpOworICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cjo6d2Vh
a1BvaW50ZXIobV9qaXQuZ3JhcGgoKSwgZ2xvYmFsT2JqZWN0KSwgc2NyYXRjaDFHUFIpOworICAg
IHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoUHRyKENDYWxsSGVscGVyczo6Tm90RXF1YWws
IHNjcmF0Y2gxR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3RydWN0dXJlR1BSLCBTdHJ1Y3R1
cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSkpOworCisgICAgYXV0byBidXR0ZXJmbHkgPSBUcnVz
dGVkSW1tUHRyKG51bGxwdHIpOworICAgIGVtaXRBbGxvY2F0ZUpTT2JqZWN0V2l0aEtub3duU2l6
ZTxKU0dlbmVyYXRvcj4ocmVzdWx0R1BSLCBzdHJ1Y3R1cmVHUFIsIGJ1dHRlcmZseSwgc2NyYXRj
aDFHUFIsIHNjcmF0Y2gyR1BSLCBzbG93Q2FzZXMsIHNpemVvZihKU0dlbmVyYXRvcikpOworICAg
IG1faml0LnN0b3JlVHJ1c3RlZFZhbHVlKGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpT
R2VuZXJhdG9yOjpHZW5lcmF0b3JTdGF0ZTo6SW5pdCkpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mo
cmVzdWx0R1BSLCBKU0ludGVybmFsRmllbGRPYmplY3RJbXBsPD46Om9mZnNldE9mSW50ZXJuYWxG
aWVsZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNHZW5lcmF0b3I6OkZpZWxkOjpTdGF0ZSkpKSk7
CisgICAgbV9qaXQuc3RvcmVUcnVzdGVkVmFsdWUoanNVbmRlZmluZWQoKSwgQ0NhbGxIZWxwZXJz
OjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbDw+OjpvZmZzZXRP
ZkludGVybmFsRmllbGQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTR2VuZXJhdG9yOjpGaWVsZDo6
TmV4dCkpKSk7CisgICAgbV9qaXQuc3RvcmVUcnVzdGVkVmFsdWUoanNVbmRlZmluZWQoKSwgQ0Nh
bGxIZWxwZXJzOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbDw+
OjpvZmZzZXRPZkludGVybmFsRmllbGQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTR2VuZXJhdG9y
OjpGaWVsZDo6VGhpcykpKSk7CisgICAgbV9qaXQuc3RvcmVUcnVzdGVkVmFsdWUoanNVbmRlZmlu
ZWQoKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNJbnRlcm5hbEZpZWxkT2Jq
ZWN0SW1wbDw+OjpvZmZzZXRPZkludGVybmFsRmllbGQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
R2VuZXJhdG9yOjpGaWVsZDo6RnJhbWUpKSkpOworICAgIG1faml0Lm11dGF0b3JGZW5jZShtX2pp
dC52bSgpKTsKKworICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93Q2Fz
ZXMsIHRoaXMsIG9wZXJhdGlvbkNyZWF0ZUdlbmVyYXRvciwgcmVzdWx0R1BSLCBjYWxsZWVHUFIs
IFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1faml0LmdyYXBoKCksIGdsb2JhbE9iamVjdCkp
KTsKKworICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKK30KKwogdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZU5ld09iamVjdChOb2RlKiBub2RlKQogewogICAgIEdQUlRlbXBvcmFy
eSByZXN1bHQodGhpcyk7CkBAIC0xMjgyMiw2ICsxMjg2NSwzMiBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlTmV3UHJvbWlzZShOb2RlKiBub2RlKQogICAgIGNlbGxSZXN1bHQocmVzdWx0
R1BSLCBub2RlKTsKIH0KIAordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0dlbmVyYXRv
cihOb2RlKiBub2RlKQoreworICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CisgICAgR1BS
VGVtcG9yYXJ5IHNjcmF0Y2gxKHRoaXMpOworICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoMih0aGlz
KTsKKworICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisgICAgR1BSUmVnIHNj
cmF0Y2gxR1BSID0gc2NyYXRjaDEuZ3ByKCk7CisgICAgR1BSUmVnIHNjcmF0Y2gyR1BSID0gc2Ny
YXRjaDIuZ3ByKCk7CisKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOwor
CisgICAgRnJvemVuVmFsdWUqIHN0cnVjdHVyZSA9IG1fZ3JhcGguZnJlZXplU3Ryb25nKG5vZGUt
PnN0cnVjdHVyZSgpLmdldCgpKTsKKyAgICBhdXRvIGJ1dHRlcmZseSA9IFRydXN0ZWRJbW1QdHIo
bnVsbHB0cik7CisgICAgZW1pdEFsbG9jYXRlSlNPYmplY3RXaXRoS25vd25TaXplPEpTR2VuZXJh
dG9yPihyZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgYnV0dGVyZmx5LCBzY3Jh
dGNoMUdQUiwgc2NyYXRjaDJHUFIsIHNsb3dDYXNlcywgc2l6ZW9mKEpTR2VuZXJhdG9yKSk7Cisg
ICAgbV9qaXQuc3RvcmVUcnVzdGVkVmFsdWUoanNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4o
SlNHZW5lcmF0b3I6OkdlbmVyYXRvclN0YXRlOjpJbml0KSksIENDYWxsSGVscGVyczo6QWRkcmVz
cyhyZXN1bHRHUFIsIEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGw8Pjo6b2Zmc2V0T2ZJbnRlcm5h
bEZpZWxkKHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0dlbmVyYXRvcjo6RmllbGQ6OlN0YXRlKSkp
KTsKKyAgICBtX2ppdC5zdG9yZVRydXN0ZWRWYWx1ZShqc1VuZGVmaW5lZCgpLCBDQ2FsbEhlbHBl
cnM6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0ludGVybmFsRmllbGRPYmplY3RJbXBsPD46Om9mZnNl
dE9mSW50ZXJuYWxGaWVsZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNHZW5lcmF0b3I6OkZpZWxk
OjpOZXh0KSkpKTsKKyAgICBtX2ppdC5zdG9yZVRydXN0ZWRWYWx1ZShqc1VuZGVmaW5lZCgpLCBD
Q2FsbEhlbHBlcnM6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0ludGVybmFsRmllbGRPYmplY3RJbXBs
PD46Om9mZnNldE9mSW50ZXJuYWxGaWVsZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNHZW5lcmF0
b3I6OkZpZWxkOjpUaGlzKSkpKTsKKyAgICBtX2ppdC5zdG9yZVRydXN0ZWRWYWx1ZShqc1VuZGVm
aW5lZCgpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0ludGVybmFsRmllbGRP
YmplY3RJbXBsPD46Om9mZnNldE9mSW50ZXJuYWxGaWVsZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNHZW5lcmF0b3I6OkZpZWxkOjpGcmFtZSkpKSk7CisgICAgbV9qaXQubXV0YXRvckZlbmNlKG1f
aml0LnZtKCkpOworCisgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dD
YXNlcywgdGhpcywgb3BlcmF0aW9uTmV3R2VuZXJhdG9yLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1Q
dHIoc3RydWN0dXJlKSkpOworCisgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOworfQor
CiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9QcmltaXRpdmUoTm9kZSogbm9kZSkKIHsK
ICAgICBERkdfQVNTRVJUKG1faml0LmdyYXBoKCksIG5vZGUsIG5vZGUtPmNoaWxkMSgpLnVzZUtp
bmQoKSA9PSBVbnR5cGVkVXNlLCBub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCmluZGV4IGY5OTFkZDIwMTYy
NGU2MDNiMjFlZDczZGQwM2M1M2MzYjczMWFkZTIuLjBmMmY1ZTU4OTA4MzJkOTU3OGU4YTRlMGZj
NzFmYTliODY3YTlkMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmgKQEAgLTE0ODQsOCArMTQ4NCwxMCBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVCB7
CiAgICAgdm9pZCBjb21waWxlT2JqZWN0Q3JlYXRlKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVD
cmVhdGVUaGlzKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVDcmVhdGVQcm9taXNlKE5vZGUqKTsK
KyAgICB2b2lkIGNvbXBpbGVDcmVhdGVHZW5lcmF0b3IoTm9kZSopOwogICAgIHZvaWQgY29tcGls
ZU5ld09iamVjdChOb2RlKik7CiAgICAgdm9pZCBjb21waWxlTmV3UHJvbWlzZShOb2RlKik7Cisg
ICAgdm9pZCBjb21waWxlTmV3R2VuZXJhdG9yKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVUb1By
aW1pdGl2ZShOb2RlKik7CiAgICAgdm9pZCBjb21waWxlTG9nU2hhZG93Q2hpY2tlblByb2xvZ3Vl
KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVMb2dTaGFkb3dDaGlja2VuVGFpbChOb2RlKik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJf
NjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0
LmNwcAppbmRleCAwOWNmMDk4NDY5OGI5Zjc5Mzc2ZjA1NjQxN2U1NzE2MDM5YWU1NmRiLi4yOTdh
NDA5MjZiZjZkZTUwZTEzM2U5ZTgyZWIwODkzOTJhYWQ3ODNiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTMyMDIs
NiArMzIwMiwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAg
ICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgQ3JlYXRlR2VuZXJhdG9yOiB7CisgICAg
ICAgIGNvbXBpbGVDcmVhdGVHZW5lcmF0b3Iobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0K
KwogICAgIGNhc2UgTmV3T2JqZWN0OiB7CiAgICAgICAgIGNvbXBpbGVOZXdPYmplY3Qobm9kZSk7
CiAgICAgICAgIGJyZWFrOwpAQCAtMzIxMiw2ICszMjE3LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2Fz
ZSBOZXdHZW5lcmF0b3I6IHsKKyAgICAgICAgY29tcGlsZU5ld0dlbmVyYXRvcihub2RlKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBHZXRDYWxsZWU6IHsKICAgICAgICAgY29t
cGlsZUdldENhbGxlZShub2RlKTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAppbmRleCBmMWYwNGMzYzk4NzVh
NjMxNjVhNjI4ZmY5ZjFjZWRiNWZjNzA2YjM2Li42YjZmZDUyZjNkYTZhM2YzODg4NmE1MWZlMzU0
NmFmMjgzYTI3YzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTM0NzgsNiArMzQ3OCwxMSBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGNvbXBpbGVDcmVhdGVQcm9taXNlKG5v
ZGUpOwogICAgICAgICBicmVhazsKICAgICB9CisKKyAgICBjYXNlIENyZWF0ZUdlbmVyYXRvcjog
eworICAgICAgICBjb21waWxlQ3JlYXRlR2VuZXJhdG9yKG5vZGUpOworICAgICAgICBicmVhazsK
KyAgICB9CiAgICAgICAgIAogICAgIGNhc2UgTmV3T2JqZWN0OiB7CiAgICAgICAgIGNvbXBpbGVO
ZXdPYmplY3Qobm9kZSk7CkBAIC0zNDg5LDYgKzM0OTQsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNl
IE5ld0dlbmVyYXRvcjogeworICAgICAgICBjb21waWxlTmV3R2VuZXJhdG9yKG5vZGUpOworICAg
ICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIEdldENhbGxlZTogewogICAgICAgICBjb21w
aWxlR2V0Q2FsbGVlKG5vZGUpOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAK
aW5kZXggMjRiNTVlNzg4ZDlkZTliNTA2OTk2NzU1NzUzNzczOGIzMzJiZTM1Ny4uMGQ1OTAxODZk
ODNiZGI0NzQ1ZWY3YzdjMTU2NzQxMDI0NTIzOWVjNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAK
QEAgLTMyMiw2ICszMjIsNyBAQCBjbGFzcyBTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZSA6IHB1
YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICBzd2l0Y2ggKG1fbm9kZS0+b3AoKSkgewogICAgICAg
ICAgICAgY2FzZSBOZXdPYmplY3Q6CiAgICAgICAgICAgICBjYXNlIE5ld1Byb21pc2U6CisgICAg
ICAgICAgICBjYXNlIE5ld0dlbmVyYXRvcjoKICAgICAgICAgICAgIGNhc2UgTmV3QXJyYXk6CiAg
ICAgICAgICAgICBjYXNlIE5ld0FycmF5V2l0aFNpemU6CiAgICAgICAgICAgICBjYXNlIE5ld0Fy
cmF5QnVmZmVyOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBh
YmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMu
Y3BwCmluZGV4IDg0NWM0MTdlY2RiMTRiZjUwYTQ1ZjVlOGUwOWUzYWUyMzk5ZjlkODAuLmVhODQy
YzA2MTJjNmNjYjljNTA4ZWE1MTM2MDA4NjBkYzc3ZmMzMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKQEAgLTc1LDYgKzc1LDcgQEAgaW5saW5l
IENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBHZXRCdXR0
ZXJmbHk6CiAgICAgY2FzZSBOZXdPYmplY3Q6CiAgICAgY2FzZSBOZXdQcm9taXNlOgorICAgIGNh
c2UgTmV3R2VuZXJhdG9yOgogICAgIGNhc2UgTmV3U3RyaW5nT2JqZWN0OgogICAgIGNhc2UgTmV3
U3ltYm9sOgogICAgIGNhc2UgTmV3QXJyYXk6CkBAIC0zNzksNiArMzgwLDcgQEAgaW5saW5lIENh
cGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBGaWx0ZXJJbkJ5
SWRTdGF0dXM6CiAgICAgY2FzZSBDcmVhdGVUaGlzOgogICAgIGNhc2UgQ3JlYXRlUHJvbWlzZToK
KyAgICBjYXNlIENyZWF0ZUdlbmVyYXRvcjoKICAgICBjYXNlIERhdGFWaWV3R2V0SW50OgogICAg
IGNhc2UgRGF0YVZpZXdHZXRGbG9hdDoKICAgICBjYXNlIERhdGFWaWV3U2V0OgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDhjMDkxYzY2NDUx
YzAxNTUzMDBiNTJmNDlhMmE4MmU1MDI1MjQ0MjUuLjkwYTU4ZjdjM2VkYzA3OGVlNDNmNjVjMGRh
MjY1NjM2ZTQwNWY2YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2Vy
REZHVG9CMy5jcHAKQEAgLTc4LDYgKzc4LDcgQEAKICNpbmNsdWRlICJKU0FzeW5jRnVuY3Rpb24u
aCIKICNpbmNsdWRlICJKU0FzeW5jR2VuZXJhdG9yRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NJ
bmxpbmVzLmgiCisjaW5jbHVkZSAiSlNHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJKU0dlbmVyYXRv
ckZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNJbW11dGFibGVCdXR0ZXJmbHkuaCIKICNpbmNsdWRl
ICJKU0xleGljYWxFbnZpcm9ubWVudC5oIgpAQCAtMTA0OCw2ICsxMDQ5LDkgQEAgY2xhc3MgTG93
ZXJERkdUb0IzIHsKICAgICAgICAgY2FzZSBOZXdQcm9taXNlOgogICAgICAgICAgICAgY29tcGls
ZU5ld1Byb21pc2UoKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE5ld0dlbmVy
YXRvcjoKKyAgICAgICAgICAgIGNvbXBpbGVOZXdHZW5lcmF0b3IoKTsKKyAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBjYXNlIE5ld1N0cmluZ09iamVjdDoKICAgICAgICAgICAgIGNvbXBpbGVO
ZXdTdHJpbmdPYmplY3QoKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTA2Niw2ICsxMDcwLDkg
QEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgY2FzZSBDcmVhdGVQcm9taXNlOgogICAg
ICAgICAgICAgY29tcGlsZUNyZWF0ZVByb21pc2UoKTsKICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIENyZWF0ZUdlbmVyYXRvcjoKKyAgICAgICAgICAgIGNvbXBpbGVDcmVhdGVHZW5l
cmF0b3IoKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFNwcmVhZDoKICAgICAg
ICAgICAgIGNvbXBpbGVTcHJlYWQoKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNTkyNiw2ICs1
OTMzLDMwIEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIHNldEpTVmFsdWUobV9vdXQu
cGhpKHBvaW50ZXJUeXBlKCksIGZhc3RSZXN1bHQsIHNsb3dSZXN1bHQpKTsKICAgICB9CiAKKyAg
ICB2b2lkIGNvbXBpbGVOZXdHZW5lcmF0b3IoKQorICAgIHsKKyAgICAgICAgTEJhc2ljQmxvY2sg
c2xvd0Nhc2UgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9jayBjb250aW51
YXRpb24gPSBtX291dC5uZXdCbG9jaygpOworCisgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0
ID0gbV9vdXQuaW5zZXJ0TmV3QmxvY2tzQmVmb3JlKHNsb3dDYXNlKTsKKworICAgICAgICBMVmFs
dWUgZ2VuZXJhdG9yID0gYWxsb2NhdGVPYmplY3Q8SlNHZW5lcmF0b3I+KG1fbm9kZS0+c3RydWN0
dXJlKCksIG1fb3V0LmludFB0clplcm8sIHNsb3dDYXNlKTsKKyAgICAgICAgbV9vdXQuc3RvcmU2
NChtX291dC5jb25zdEludDY0KEpTVmFsdWU6OmVuY29kZShqc051bWJlcihzdGF0aWNfY2FzdDxp
bnQzMl90PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9yU3RhdGU6OkluaXQpKSkpLCBnZW5lcmF0b3Is
IG1faGVhcHMuSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbF9pbnRlcm5hbEZpZWxkc1tzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNHZW5lcmF0b3I6OkZpZWxkOjpTdGF0ZSldKTsKKyAgICAgICAgbV9v
dXQuc3RvcmU2NChtX291dC5jb25zdEludDY0KEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KSksIGdlbmVyYXRvciwgbV9oZWFwcy5KU0ludGVybmFsRmllbGRPYmplY3RJbXBsX2ludGVybmFs
RmllbGRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihKU0dlbmVyYXRvcjo6RmllbGQ6Ok5leHQpXSk7
CisgICAgICAgIG1fb3V0LnN0b3JlNjQobV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSkpLCBnZW5lcmF0b3IsIG1faGVhcHMuSlNJbnRlcm5hbEZpZWxkT2JqZWN0
SW1wbF9pbnRlcm5hbEZpZWxkc1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNHZW5lcmF0b3I6OkZp
ZWxkOjpUaGlzKV0pOworICAgICAgICBtX291dC5zdG9yZTY0KG1fb3V0LmNvbnN0SW50NjQoSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpKSwgZ2VuZXJhdG9yLCBtX2hlYXBzLkpTSW50ZXJu
YWxGaWVsZE9iamVjdEltcGxfaW50ZXJuYWxGaWVsZHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
R2VuZXJhdG9yOjpGaWVsZDo6RnJhbWUpXSk7CisgICAgICAgIG11dGF0b3JGZW5jZSgpOworICAg
ICAgICBWYWx1ZUZyb21CbG9jayBmYXN0UmVzdWx0ID0gbV9vdXQuYW5jaG9yKGdlbmVyYXRvcik7
CisgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAgICBtX291dC5hcHBl
bmRUbyhzbG93Q2FzZSwgY29udGludWF0aW9uKTsKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xv
d1Jlc3VsdCA9IG1fb3V0LmFuY2hvcih2bUNhbGwocG9pbnRlclR5cGUoKSwgbV9vdXQub3BlcmF0
aW9uKG9wZXJhdGlvbk5ld0dlbmVyYXRvciksIG1fY2FsbEZyYW1lLCBmcm96ZW5Qb2ludGVyKG1f
Z3JhcGguZnJlZXplU3Ryb25nKG1fbm9kZS0+c3RydWN0dXJlKCkuZ2V0KCkpKSkpOworICAgICAg
ICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29u
dGludWF0aW9uLCBsYXN0TmV4dCk7CisgICAgICAgIHNldEpTVmFsdWUobV9vdXQucGhpKHBvaW50
ZXJUeXBlKCksIGZhc3RSZXN1bHQsIHNsb3dSZXN1bHQpKTsKKyAgICB9CisKICAgICB2b2lkIGNv
bXBpbGVOZXdTdHJpbmdPYmplY3QoKQogICAgIHsKICAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVy
ZSBzdHJ1Y3R1cmUgPSBtX25vZGUtPnN0cnVjdHVyZSgpOwpAQCAtNjMzOCw2ICs2MzY5LDUyIEBA
IGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKICAgICB9
CiAKKyAgICB2b2lkIGNvbXBpbGVDcmVhdGVHZW5lcmF0b3IoKQorICAgIHsKKyAgICAgICAgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9k
ZS0+b3JpZ2luLnNlbWFudGljKTsKKworICAgICAgICBMVmFsdWUgY2FsbGVlID0gbG93Q2VsbCht
X25vZGUtPmNoaWxkMSgpKTsKKworICAgICAgICBMQmFzaWNCbG9jayBpc0Z1bmN0aW9uQmxvY2sg
PSBtX291dC5uZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9jayBoYXNSYXJlRGF0YSA9IG1f
b3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIGNoZWNrR2xvYmFsT2JqZWN0Q2Fz
ZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIGZhc3RBbGxvY2F0aW9u
Q2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIHNsb3dDYXNlID0g
bV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9v
dXQubmV3QmxvY2soKTsKKworICAgICAgICBtX291dC5icmFuY2goaXNGdW5jdGlvbihjYWxsZWUs
IHByb3ZlblR5cGUobV9ub2RlLT5jaGlsZDEoKSkpLCB1c3VhbGx5KGlzRnVuY3Rpb25CbG9jayks
IHJhcmVseShzbG93Q2FzZSkpOworCisgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9v
dXQuYXBwZW5kVG8oaXNGdW5jdGlvbkJsb2NrLCBoYXNSYXJlRGF0YSk7CisgICAgICAgIExWYWx1
ZSByYXJlRGF0YSA9IG1fb3V0LmxvYWRQdHIoY2FsbGVlLCBtX2hlYXBzLkpTRnVuY3Rpb25fcmFy
ZURhdGEpOworICAgICAgICBtX291dC5icmFuY2gobV9vdXQuaXNaZXJvNjQocmFyZURhdGEpLCBy
YXJlbHkoc2xvd0Nhc2UpLCB1c3VhbGx5KGhhc1JhcmVEYXRhKSk7CisKKyAgICAgICAgbV9vdXQu
YXBwZW5kVG8oaGFzUmFyZURhdGEsIGZhc3RBbGxvY2F0aW9uQ2FzZSk7CisgICAgICAgIExWYWx1
ZSBzdHJ1Y3R1cmUgPSBtX291dC5sb2FkUHRyKHJhcmVEYXRhLCBtX2hlYXBzLkZ1bmN0aW9uUmFy
ZURhdGFfaW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25Qcm9maWxlX3N0cnVjdHVyZSk7CisgICAg
ICAgIG1fb3V0LmJyYW5jaChtX291dC5lcXVhbChtX291dC5sb2FkUHRyKHN0cnVjdHVyZSwgbV9o
ZWFwcy5TdHJ1Y3R1cmVfY2xhc3NJbmZvKSwgbV9vdXQuY29uc3RJbnRQdHIoSlNHZW5lcmF0b3I6
OmluZm8oKSkpLCB1c3VhbGx5KGNoZWNrR2xvYmFsT2JqZWN0Q2FzZSksIHJhcmVseShzbG93Q2Fz
ZSkpOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNoZWNrR2xvYmFsT2JqZWN0Q2FzZSwgZmFz
dEFsbG9jYXRpb25DYXNlKTsKKyAgICAgICAgbV9vdXQuYnJhbmNoKG1fb3V0LmVxdWFsKG1fb3V0
LmxvYWRQdHIoc3RydWN0dXJlLCBtX2hlYXBzLlN0cnVjdHVyZV9nbG9iYWxPYmplY3QpLCB3ZWFr
UG9pbnRlcihnbG9iYWxPYmplY3QpKSwgdXN1YWxseShmYXN0QWxsb2NhdGlvbkNhc2UpLCByYXJl
bHkoc2xvd0Nhc2UpKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhmYXN0QWxsb2NhdGlvbkNh
c2UsIHNsb3dDYXNlKTsKKyAgICAgICAgTFZhbHVlIGdlbmVyYXRvciA9IGFsbG9jYXRlT2JqZWN0
PEpTR2VuZXJhdG9yPihzdHJ1Y3R1cmUsIG1fb3V0LmludFB0clplcm8sIHNsb3dDYXNlKTsKKyAg
ICAgICAgbV9vdXQuc3RvcmU2NChtX291dC5jb25zdEludDY0KEpTVmFsdWU6OmVuY29kZShqc051
bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9yU3RhdGU6Oklu
aXQpKSkpLCBnZW5lcmF0b3IsIG1faGVhcHMuSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbF9pbnRl
cm5hbEZpZWxkc1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNHZW5lcmF0b3I6OkZpZWxkOjpTdGF0
ZSldKTsKKyAgICAgICAgbV9vdXQuc3RvcmU2NChtX291dC5jb25zdEludDY0KEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKSksIGdlbmVyYXRvciwgbV9oZWFwcy5KU0ludGVybmFsRmllbGRP
YmplY3RJbXBsX2ludGVybmFsRmllbGRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihKU0dlbmVyYXRv
cjo6RmllbGQ6Ok5leHQpXSk7CisgICAgICAgIG1fb3V0LnN0b3JlNjQobV9vdXQuY29uc3RJbnQ2
NChKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSkpLCBnZW5lcmF0b3IsIG1faGVhcHMuSlNJ
bnRlcm5hbEZpZWxkT2JqZWN0SW1wbF9pbnRlcm5hbEZpZWxkc1tzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNHZW5lcmF0b3I6OkZpZWxkOjpUaGlzKV0pOworICAgICAgICBtX291dC5zdG9yZTY0KG1f
b3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpKSwgZ2VuZXJhdG9y
LCBtX2hlYXBzLkpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGxfaW50ZXJuYWxGaWVsZHNbc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTR2VuZXJhdG9yOjpGaWVsZDo6RnJhbWUpXSk7CisgICAgICAgIG11
dGF0b3JGZW5jZSgpOworICAgICAgICBWYWx1ZUZyb21CbG9jayBmYXN0UmVzdWx0ID0gbV9vdXQu
YW5jaG9yKGdlbmVyYXRvcik7CisgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKwor
ICAgICAgICBtX291dC5hcHBlbmRUbyhzbG93Q2FzZSwgY29udGludWF0aW9uKTsKKyAgICAgICAg
VmFsdWVGcm9tQmxvY2sgc2xvd1Jlc3VsdCA9IG1fb3V0LmFuY2hvcih2bUNhbGwoSW50NjQsIG1f
b3V0Lm9wZXJhdGlvbihvcGVyYXRpb25DcmVhdGVHZW5lcmF0b3IpLCBtX2NhbGxGcmFtZSwgY2Fs
bGVlLCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpKSk7CisgICAgICAgIG1fb3V0Lmp1bXAoY29u
dGludWF0aW9uKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3RO
ZXh0KTsKKyAgICAgICAgTFZhbHVlIHJlc3VsdCA9IG1fb3V0LnBoaShJbnQ2NCwgZmFzdFJlc3Vs
dCwgc2xvd1Jlc3VsdCk7CisKKyAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOworICAgIH0KKwog
ICAgIHZvaWQgY29tcGlsZVNwcmVhZCgpCiAgICAgewogICAgICAgICBpZiAobV9ub2RlLT5jaGls
ZDEoKS0+b3AoKSA9PSBQaGFudG9tTmV3QXJyYXlCdWZmZXIpIHsKQEAgLTE2MDU5LDggKzE2MTM2
LDEwIEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAKICAgICBMVmFsdWUgaXNDZWxsV2l0aFR5cGUo
TFZhbHVlIGNlbGwsIEpTVHlwZSBxdWVyaWVkVHlwZSwgU3BlY3VsYXRlZFR5cGUgc3BlY3VsYXRl
ZFR5cGVGb3JRdWVyeSwgU3BlY3VsYXRlZFR5cGUgdHlwZSA9IFNwZWNGdWxsVG9wKQogICAgIHsK
LSAgICAgICAgaWYgKExWYWx1ZSBwcm92ZW4gPSBpc1Byb3ZlblZhbHVlKHR5cGUgJiBTcGVjQ2Vs
bCwgc3BlY3VsYXRlZFR5cGVGb3JRdWVyeSkpCi0gICAgICAgICAgICByZXR1cm4gcHJvdmVuOwor
ICAgICAgICBpZiAoc3BlY3VsYXRlZFR5cGVGb3JRdWVyeSAhPSBTcGVjQ2VsbCkgeworICAgICAg
ICAgICAgaWYgKExWYWx1ZSBwcm92ZW4gPSBpc1Byb3ZlblZhbHVlKHR5cGUgJiBTcGVjQ2VsbCwg
c3BlY3VsYXRlZFR5cGVGb3JRdWVyeSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHByb3ZlbjsK
KyAgICAgICAgfQogICAgICAgICByZXR1cm4gbV9vdXQuZXF1YWwoCiAgICAgICAgICAgICBtX291
dC5sb2FkOFplcm9FeHQzMihjZWxsLCBtX2hlYXBzLkpTQ2VsbF90eXBlSW5mb1R5cGUpLAogICAg
ICAgICAgICAgbV9vdXQuY29uc3RJbnQzMihxdWVyaWVkVHlwZSkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuY3BwCmluZGV4IDM2ZGU1M2EwYmMzYTcyZjU1NThkMTllZGE2NDc2YWYwNDk0NmVjNmMu
LjgyNTQ2MzgxMmZiZTUzNmQwOTRjMTc5YjdlZmIyNjI4NWMxNDAyZjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5jcHAKQEAgLTMxMiw2ICszMTIsOCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBp
bGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9TTE9XX09QKGNyZWF0ZV9yZXN0KQogICAgICAg
ICBERUZJTkVfU0xPV19PUChjcmVhdGVfcHJvbWlzZSkKICAgICAgICAgREVGSU5FX1NMT1dfT1Ao
bmV3X3Byb21pc2UpCisgICAgICAgIERFRklORV9TTE9XX09QKGNyZWF0ZV9nZW5lcmF0b3IpCisg
ICAgICAgIERFRklORV9TTE9XX09QKG5ld19nZW5lcmF0b3IpCiAgICAgICAgIERFRklORV9TTE9X
X09QKHBvdykKIAogICAgICAgICBERUZJTkVfT1Aob3BfYWRkKQpAQCAtNTgwLDYgKzU4Miw3IEBA
IHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAgICAgICAgIERFRklORV9TTE9X
Q0FTRV9TTE9XX09QKGRpdikKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX1NMT1dfT1AoY3JlYXRl
X3RoaXMpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9TTE9XX09QKGNyZWF0ZV9wcm9taXNlKQor
ICAgICAgICBERUZJTkVfU0xPV0NBU0VfU0xPV19PUChjcmVhdGVfZ2VuZXJhdG9yKQogICAgICAg
ICBERUZJTkVfU0xPV0NBU0VfU0xPV19PUCh0b190aGlzKQogICAgICAgICBERUZJTkVfU0xPV0NB
U0VfU0xPV19PUCh0b19wcmltaXRpdmUpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9TTE9XX09Q
KHRvX251bWJlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3Bw
CmluZGV4IDdhZjRlZTMyNmNmMWU4OWU5YTUzZjlhMjc3YmQ1YzQwNTI2MzA4MDguLmVmYTI1NGNi
MmFmMDEyNTdlYWQ2MGNkMjI1ODk3YTYxYjcxMDkxNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtMTM5NCw2ICsxMzk0LDE0IEBAIEpTQ2VsbCog
SklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdJbnRlcm5hbFByb21pc2UoRXhlY1N0YXRlKiBleGVj
LCBTdHJ1Y3R1cmUqIHN0CiAgICAgcmV0dXJuIEpTSW50ZXJuYWxQcm9taXNlOjpjcmVhdGUodm0s
IHN0cnVjdHVyZSk7CiB9CiAKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdHZW5l
cmF0b3IoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK3sKKyAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4
ZWMpOworCisgICAgcmV0dXJuIEpTR2VuZXJhdG9yOjpjcmVhdGUodm0sIHN0cnVjdHVyZSk7Cit9
CisKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdSZWdleHAoRXhlY1N0YXRlKiBl
eGVjLCBKU0NlbGwqIHJlZ2V4cFB0cikKIHsKICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNh
bXBsZXJTY29wZShmYWxzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9u
cy5oCmluZGV4IDFjM2MyNzJjYmJhOGRkMzU2MmQ0ZDE1Y2YwOTUwZTZjOTI0Mjg3NjIuLjFiNzQ5
YjIzMGY4MDJkM2ZjNDJmY2ZhMTYwNDZiYTg5ZjMwYzhjNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCkBAIC00MjEsNiArNDIxLDcgQEAgdm9pZCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblNldEZ1bmN0aW9uTmFtZShFeGVjU3RhdGUqLCBKU0NlbGwqLCBFbmNv
ZGVkSlNWYWx1ZSkKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdPYmplY3QoRXhl
Y1N0YXRlKiwgU3RydWN0dXJlKikgV1RGX0lOVEVSTkFMOwogSlNDZWxsKiBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbk5ld1Byb21pc2UoRXhlY1N0YXRlKiwgU3RydWN0dXJlKikgV1RGX0lOVEVSTkFM
OwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0ludGVybmFsUHJvbWlzZShFeGVj
U3RhdGUqLCBTdHJ1Y3R1cmUqKSBXVEZfSU5URVJOQUw7CitKU0NlbGwqIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uTmV3R2VuZXJhdG9yKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSopIFdURl9JTlRFUk5B
TDsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdSZWdleHAoRXhlY1N0YXRlKiwg
SlNDZWxsKikgV1RGX0lOVEVSTkFMOwogVW51c2VkUHRyIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
SGFuZGxlVHJhcHMoRXhlY1N0YXRlKikgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblRocm93KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCmlu
ZGV4IDQwNzU4ZTdmMzBhY2M0ZDcyODJlYjg1MzVjYjRkMzFiYzhjMGU3NDIuLjM2OWNiMTBiMjI1
YzA5YTE0MmFmZTYyM2JlOTNkNWIwNGFmODBkYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCkBAIC0xMjQzLDcgKzEyNDMsNiBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9nZXRfaW50ZXJuYWxfZmllbGQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKICAgICBpbnQgZHN0ID0gYnl0ZWNvZGUubV9kc3Qub2Zmc2V0KCk7CiAg
ICAgaW50IGJhc2UgPSBieXRlY29kZS5tX2Jhc2Uub2Zmc2V0KCk7CiAgICAgdW5zaWduZWQgaW5k
ZXggPSBieXRlY29kZS5tX2luZGV4OwotICAgIEFTU0VSVChpbmRleCA8IEpTUHJvbWlzZTo6bnVt
YmVyT2ZJbnRlcm5hbEZpZWxkcyk7CiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2Us
IHJlZ1QxKTsKICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDEsIEpTSW50ZXJuYWxGaWVsZE9iamVj
dEltcGw8Pjo6b2Zmc2V0T2ZJbnRlcm5hbEZpZWxkKGluZGV4KSksIHJlZ1QwKTsKQEAgLTEyNTgs
NyArMTI1Nyw2IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9pbnRlcm5hbF9maWVsZChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGludCBiYXNlID0gYnl0ZWNvZGUu
bV9iYXNlLm9mZnNldCgpOwogICAgIGludCB2YWx1ZSA9IGJ5dGVjb2RlLm1fdmFsdWUub2Zmc2V0
KCk7CiAgICAgdW5zaWduZWQgaW5kZXggPSBieXRlY29kZS5tX2luZGV4OwotICAgIEFTU0VSVChp
bmRleCA8IEpTUHJvbWlzZTo6bnVtYmVyT2ZJbnRlcm5hbEZpZWxkcyk7CiAKICAgICBlbWl0R2V0
VmlydHVhbFJlZ2lzdGVyKGJhc2UsIHJlZ1QwKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVy
KHZhbHVlLCByZWdUMSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggZDIwNGI0MDdjMmRlNDhlNWRjYjJjYTEzMWE0YWIx
NGUzZDg5YjFjYy4uMjU3NmVmNDllMTE4MzEyNmNmZjhmMWUzNWVlYWVkYmZlMDQ2ZGVjZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIu
YXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
LmFzbQpAQCAtMTQ5NSw2ICsxNDk1LDcgQEAgc2xvd1BhdGhPcChjcmVhdGVfcmVzdCkKIHNsb3dQ
YXRoT3AoY3JlYXRlX3Njb3BlZF9hcmd1bWVudHMpCiBzbG93UGF0aE9wKGNyZWF0ZV90aGlzKQog
c2xvd1BhdGhPcChjcmVhdGVfcHJvbWlzZSkKK3Nsb3dQYXRoT3AoY3JlYXRlX2dlbmVyYXRvcikK
IHNsb3dQYXRoT3AoZGVmaW5lX2FjY2Vzc29yX3Byb3BlcnR5KQogc2xvd1BhdGhPcChkZWZpbmVf
ZGF0YV9wcm9wZXJ0eSkKIHNsb3dQYXRoT3AoZW51bWVyYXRvcl9nZW5lcmljX3BuYW1lKQpAQCAt
MTUzMCw2ICsxNTMxLDcgQEAgc2xvd1BhdGhPcCh0b19pbmRleF9zdHJpbmcpCiBzbG93UGF0aE9w
KHR5cGVvZikKIHNsb3dQYXRoT3AodW5yZWFjaGFibGUpCiBzbG93UGF0aE9wKG5ld19wcm9taXNl
KQorc2xvd1BhdGhPcChuZXdfZ2VuZXJhdG9yKQogCiBtYWNybyBsbGludFNsb3dQYXRoT3Aob3Bj
b2RlTmFtZSkKICAgICBsbGludE9wKG9wXyVvcGNvZGVOYW1lJSwgdW51c2VkLCBtYWNybyAodW51
c2VkLCB1bnVzZWQsIGRpc3BhdGNoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKaW5kZXggNjU4NjU3OTgyMzM0NDQ5OTcwMmJiYmRjNWQz
NWNiMjc1NDRlM2NlZi4uMTEyM2QxNzlmNjM5MDYyMzE1ZTU0MjQwNGExZTUyNWI0ODdlNmY1ZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhz
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMu
Y3BwCkBAIC0zMDksNiArMzA5LDM2IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uZXdfcHJv
bWlzZSkKICAgICBSRVRVUk4ocmVzdWx0KTsKIH0KIAorU0xPV19QQVRIX0RFQ0woc2xvd19wYXRo
X2NyZWF0ZV9nZW5lcmF0b3IpCit7CisgICAgQkVHSU4oKTsKKyAgICBhdXRvIGJ5dGVjb2RlID0g
cGMtPmFzPE9wQ3JlYXRlR2VuZXJhdG9yPigpOworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CisgICAgSlNPYmplY3QqIGNvbnN0
cnVjdG9yQXNPYmplY3QgPSBhc09iamVjdChHRVQoYnl0ZWNvZGUubV9jYWxsZWUpLmpzVmFsdWUo
KSk7CisKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rpb246OmNyZWF0
ZVN1YmNsYXNzU3RydWN0dXJlKGV4ZWMsIG51bGxwdHIsIGNvbnN0cnVjdG9yQXNPYmplY3QsIGds
b2JhbE9iamVjdC0+Z2VuZXJhdG9yU3RydWN0dXJlKCkpOworICAgIENIRUNLX0VYQ0VQVElPTigp
OworICAgIEpTR2VuZXJhdG9yKiByZXN1bHQgPSBKU0dlbmVyYXRvcjo6Y3JlYXRlKHZtLCBzdHJ1
Y3R1cmUpOworCisgICAgSlNGdW5jdGlvbiogY29uc3RydWN0b3IgPSBqc0R5bmFtaWNDYXN0PEpT
RnVuY3Rpb24qPih2bSwgY29uc3RydWN0b3JBc09iamVjdCk7CisgICAgaWYgKGNvbnN0cnVjdG9y
ICYmIGNvbnN0cnVjdG9yLT5jYW5Vc2VBbGxvY2F0aW9uUHJvZmlsZSgpKSB7CisgICAgICAgIFdy
aXRlQmFycmllcjxKU0NlbGw+JiBjYWNoZWRDYWxsZWUgPSBieXRlY29kZS5tZXRhZGF0YShleGVj
KS5tX2NhY2hlZENhbGxlZTsKKyAgICAgICAgaWYgKCFjYWNoZWRDYWxsZWUpCisgICAgICAgICAg
ICBjYWNoZWRDYWxsZWUuc2V0KHZtLCBleGVjLT5jb2RlQmxvY2soKSwgY29uc3RydWN0b3IpOwor
ICAgICAgICBlbHNlIGlmIChjYWNoZWRDYWxsZWUudW52YWxpZGF0ZWRHZXQoKSAhPSBKU0NlbGw6
OnNlZW5NdWx0aXBsZUNhbGxlZU9iamVjdHMoKSAmJiBjYWNoZWRDYWxsZWUuZ2V0KCkgIT0gY29u
c3RydWN0b3IpCisgICAgICAgICAgICBjYWNoZWRDYWxsZWUuc2V0V2l0aG91dFdyaXRlQmFycmll
cihKU0NlbGw6OnNlZW5NdWx0aXBsZUNhbGxlZU9iamVjdHMoKSk7CisgICAgfQorICAgIFJFVFVS
TihyZXN1bHQpOworfQorCitTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmV3X2dlbmVyYXRvcikK
K3sKKyAgICBCRUdJTigpOworICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BOZXdHZW5lcmF0
b3I+KCk7CisgICAgSlNHZW5lcmF0b3IqIHJlc3VsdCA9IEpTR2VuZXJhdG9yOjpjcmVhdGUodm0s
IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+Z2VuZXJhdG9yU3RydWN0dXJlKCkpOworICAg
IFJFVFVSTihyZXN1bHQpOworfQorCiBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfdG9fdGhpcykK
IHsKICAgICBCRUdJTigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uU2xvd1BhdGhzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25TbG93UGF0aHMuaAppbmRleCAyZmU3NWU2YzM2NTIzZWZjOWJhODJhNDYxNjU1MGRmZjc2MjNh
MTg4Li43ZjkwYjE0MGI4OTc5MGZlMTRjNDMwN2YxYTIwZjc0ZmQ5ZDNmYmIxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaApAQCAtMzg0LDYg
KzM4NCw3IEBAIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcmVzb2x2ZV9zY29wZSk7
CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2lzX3Zhcl9zY29wZSk7CiBTTE9XX1BB
VEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3Jlc29sdmVfc2NvcGVfZm9yX2hvaXN0aW5nX2Z1bmNf
ZGVjbF9pbl9ldmFsKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfY3JlYXRlX3By
b21pc2UpOworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jcmVhdGVfZ2VuZXJhdG9y
KTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfY3JlYXRlX3Jlc3QpOwogU0xPV19Q
QVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9nZXRfYnlfaWRfd2l0aF90aGlzKTsKIFNMT1dfUEFU
SF9ISURERU5fREVDTChzbG93X3BhdGhfZ2V0X2J5X3ZhbF93aXRoX3RoaXMpOwpAQCAtMzkzLDYg
KzM5NCw3IEBAIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZGVmaW5lX2RhdGFfcHJv
cGVydHkpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9kZWZpbmVfYWNjZXNzb3Jf
cHJvcGVydHkpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF90aHJvd19zdGF0aWNf
ZXJyb3IpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfcHJvbWlzZSk7CitT
TE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25ld19nZW5lcmF0b3IpOwogU0xPV19QQVRI
X0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfYXJyYXlfd2l0aF9zcHJlYWQpOwogU0xPV19QQVRI
X0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfYXJyYXlfYnVmZmVyKTsKIFNMT1dfUEFUSF9ISURE
RU5fREVDTChzbG93X3BhdGhfc3ByZWFkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHAKaW5kZXggZGQ0YTIyMDgwMGYxODM0MzE3MDEy
OWY5MzFiZTMxMmZmMzdmMTNkMi4uMjM4ZTU0MzMzZWFkY2NiZWY4NWIzZWI2MDQwM2Q1N2IwYmYz
ODliMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxG
dW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxG
dW5jdGlvbi5jcHAKQEAgLTExOSw3ICsxMTksNiBAQCBTdHJ1Y3R1cmUqIEludGVybmFsRnVuY3Rp
b246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlU2xvdyhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdQog
ewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwotICAgIEFTU0VSVCghbmV3VGFyZ2V0IHx8IG5ld1RhcmdldC5pc0NvbnN0
cnVjdG9yKHZtKSk7CiAKICAgICBBU1NFUlQoYmFzZUNsYXNzLT5oYXNNb25vUHJvdG8oKSk7CiAK
QEAgLTEzMyw3ICsxMzIsNyBAQCBTdHJ1Y3R1cmUqIEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1
YmNsYXNzU3RydWN0dXJlU2xvdyhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdQogICAgICAgICAgICAg
cmV0dXJuIHN0cnVjdHVyZTsKIAogICAgICAgICAvLyBOb3RlLCBSZWZsZWN0LmNvbnN0cnVjdCBt
aWdodCBjYXVzZSB0aGUgcHJvZmlsZSB0byBjaHVybiBidXQgd2UgZG9uJ3QgY2FyZS4KLSAgICAg
ICAgSlNWYWx1ZSBwcm90b3R5cGVWYWx1ZSA9IG5ld1RhcmdldC5nZXQoZXhlYywgdm0ucHJvcGVy
dHlOYW1lcy0+cHJvdG90eXBlKTsKKyAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGVWYWx1ZSA9IHRh
cmdldEZ1bmN0aW9uLT5nZXQoZXhlYywgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlKTsKICAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CiAgICAgICAgIGlmIChK
U09iamVjdCogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxKU09iamVjdCo+KHZtLCBwcm90b3R5
cGVWYWx1ZSkpCiAgICAgICAgICAgICByZXR1cm4gdGFyZ2V0RnVuY3Rpb24tPnJhcmVEYXRhKHZt
KS0+Y3JlYXRlSW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25TdHJ1Y3R1cmVGcm9tQmFzZSh2bSwg
Z2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIGJhc2VDbGFzcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmgKaW5kZXggOTMzNjg4OWZlZTgxNTAx
OGM5Y2FjYjQzNWM2NGE3OGFjMTBhZTczYi4uMWZhNDg1OGM3YzNlNmUyMWI1NGMwMzg3ZWI2YzQ4
NDNhODAxMzFmMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
ZXJuYWxGdW5jdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVy
bmFsRnVuY3Rpb24uaApAQCAtMTAyLDggKzEwMiw2IEBAIEFMV0FZU19JTkxJTkUgU3RydWN0dXJl
KiBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShFeGVjU3RhdGUqIGV4
CiB7CiAgICAgLy8gV2UgYWxsb3cgbmV3VGFyZ2V0ID09IEpTVmFsdWUoKSBiZWNhdXNlIHRoZSBB
UEkgbmVlZHMgdG8gYmUgYWJsZSB0byBjcmVhdGUgY2xhc3NlcyB3aXRob3V0IGhhdmluZyBhIHJl
YWwgSlMgZnJhbWUuCiAgICAgLy8gU2luY2Ugd2UgZG9uJ3QgYWxsb3cgc3ViY2xhc3NpbmcgaW4g
dGhlIEFQSSB3ZSBqdXN0IHRyZWF0IG5ld1RhcmdldCA9PSBKU1ZhbHVlKCkgYXMgbmV3VGFyZ2V0
ID09IGV4ZWMtPmpzQ2FsbGVlKCkKLSAgICBBU1NFUlQoIW5ld1RhcmdldCB8fCBuZXdUYXJnZXQu
aXNDb25zdHJ1Y3RvcihleGVjLT52bSgpKSk7Ci0KICAgICBpZiAobmV3VGFyZ2V0ICYmIG5ld1Rh
cmdldCAhPSBiYXNlQ2FsbGVlKQogICAgICAgICByZXR1cm4gY3JlYXRlU3ViY2xhc3NTdHJ1Y3R1
cmVTbG93KGV4ZWMsIG5ld1RhcmdldCwgYmFzZUNsYXNzKTsKICAgICByZXR1cm4gYmFzZUNsYXNz
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3Iu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3IuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmM0MDU0MmM5Njk1NWRmMDM0ZWQ2OGI1MmYyNTA2MTcxZTE0YWEyZGIKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRvci5jcHAK
QEAgLTAsMCArMSw3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJKU0dlbmVyYXRvci5oIgorCisjaW5jbHVkZSAiQnVpbHRpbk5hbWVzLmgiCisjaW5jbHVk
ZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlv
bi5oIgorI2luY2x1ZGUgIkpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGxJbmxpbmVzLmgiCisKK25h
bWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gSlNHZW5lcmF0b3I6OnNfaW5mbyA9IHsg
IkdlbmVyYXRvciIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRI
T0RfVEFCTEUoSlNHZW5lcmF0b3IpIH07CisKK0pTR2VuZXJhdG9yKiBKU0dlbmVyYXRvcjo6Y3Jl
YXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAgSlNHZW5lcmF0b3IqIGdl
bmVyYXRvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTR2VuZXJhdG9yPih2bS5oZWFw
KSkgSlNHZW5lcmF0b3Iodm0sIHN0cnVjdHVyZSk7CisgICAgZ2VuZXJhdG9yLT5maW5pc2hDcmVh
dGlvbih2bSk7CisgICAgcmV0dXJuIGdlbmVyYXRvcjsKK30KKworU3RydWN0dXJlKiBKU0dlbmVy
YXRvcjo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oSlNHZW5lcmF0b3JUeXBlLCBTdHJ1
Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK0pTR2VuZXJhdG9yOjpKU0dlbmVyYXRvcihWTSYg
dm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQorewor
fQorCit2b2lkIEpTR2VuZXJhdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7CisgICAgQmFz
ZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIGludGVybmFsRmllbGQoc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEZpZWxkOjpTdGF0ZSkpLnNldCh2bSwgdGhpcywganNOdW1iZXIoc3RhdGljX2Nhc3Q8
aW50MzJfdD4oR2VuZXJhdG9yU3RhdGU6OkluaXQpKSk7CisgICAgaW50ZXJuYWxGaWVsZChzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oRmllbGQ6Ok5leHQpKS5zZXQodm0sIHRoaXMsIGpzVW5kZWZpbmVk
KCkpOworICAgIGludGVybmFsRmllbGQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEZpZWxkOjpUaGlz
KSkuc2V0KHZtLCB0aGlzLCBqc1VuZGVmaW5lZCgpKTsKKyAgICBpbnRlcm5hbEZpZWxkKHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihGaWVsZDo6RnJhbWUpKS5zZXQodm0sIHRoaXMsIGpzVW5kZWZpbmVk
KCkpOworfQorCit2b2lkIEpTR2VuZXJhdG9yOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwg
U2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxK
U0dlbmVyYXRvcio+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09i
amVjdCwgaW5mbygpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0
b3IpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dlbmVyYXRvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY1YTRlY2I4ZTIxOWU1ZjYzNjBmOWY2OTc3
NGI3ZDY4ODIxODkzMGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dlbmVyYXRvci5oCkBAIC0wLDAgKzEsODAgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2luY2x1ZGUgIkpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGwuaCIKKworbmFt
ZXNwYWNlIEpTQyB7CisKK2NsYXNzIEpTRnVuY3Rpb247CisKK2NsYXNzIEpTR2VuZXJhdG9yIDog
cHVibGljIEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGw8ND4geworcHVibGljOgorICAgIHVzaW5n
IEJhc2UgPSBKU0ludGVybmFsRmllbGRPYmplY3RJbXBsPDQ+OworCisgICAgZW51bSBjbGFzcyBH
ZW5lcmF0b3JSZXN1bWVNb2RlIDogaW50MzJfdCB7CisgICAgICAgIE5vcm1hbE1vZGUgPSAwLAor
ICAgICAgICBSZXR1cm5Nb2RlID0gMSwKKyAgICAgICAgVGhyb3dNb2RlID0gMgorICAgIH07CisK
KyAgICBlbnVtIGNsYXNzIEdlbmVyYXRvclN0YXRlIDogaW50MzJfdCB7CisgICAgICAgIENvbXBs
ZXRlZCA9IC0xLAorICAgICAgICBFeGVjdXRpbmcgPSAtMiwKKyAgICAgICAgSW5pdCA9IDAsCisg
ICAgfTsKKworICAgIC8vIFt0aGlzXSwgQGdlbmVyYXRvciwgQGdlbmVyYXRvclN0YXRlLCBAZ2Vu
ZXJhdG9yVmFsdWUsIEBnZW5lcmF0b3JSZXN1bWVNb2RlLCBAZ2VuZXJhdG9yRnJhbWUuCisgICAg
ZW51bSBjbGFzcyBHZW5lcmF0b3JBcmd1bWVudCA6IGludDMyX3QgeworICAgICAgICBUaGlzVmFs
dWUgPSAwLAorICAgICAgICBHZW5lcmF0b3IgPSAxLAorICAgICAgICBTdGF0ZSA9IDIsCisgICAg
ICAgIFZhbHVlID0gMywKKyAgICAgICAgUmVzdW1lTW9kZSA9IDQsCisgICAgICAgIEZyYW1lID0g
NSwKKyAgICB9OworCisgICAgZW51bSBjbGFzcyBGaWVsZCA6IHVpbnQzMl90IHsKKyAgICAgICAg
U3RhdGUgPSAwLAorICAgICAgICBOZXh0LAorICAgICAgICBUaGlzLAorICAgICAgICBGcmFtZSwK
KyAgICB9OworICAgIHN0YXRpY19hc3NlcnQobnVtYmVyT2ZJbnRlcm5hbEZpZWxkcyA9PSA0KTsK
KworICAgIHN0YXRpYyBKU0dlbmVyYXRvciogY3JlYXRlKFZNJiwgU3RydWN0dXJlKik7CisgICAg
c3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBK
U1ZhbHVlKTsKKworICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CisKKyAgICBzdGF0aWMgdm9pZCB2
aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CisKK3Byb3RlY3RlZDoKKyAgICBK
U0dlbmVyYXRvcihWTSYsIFN0cnVjdHVyZSopOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0m
KTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5oCmluZGV4IGE0NTRiOTU4ODA2MWQ0OGI1
N2Y1NmIzMGVmZTA2M2M4NGYyNmIyOTMuLmVmZDI4OTBhMzFmYWY4MGRmYWM1MGI3NDQwYjlkMmYz
NDZlY2EyY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2Vu
ZXJhdG9yRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dl
bmVyYXRvckZ1bmN0aW9uLmgKQEAgLTQxLDI4ICs0MSw3IEBAIGNsYXNzIEpTR2VuZXJhdG9yRnVu
Y3Rpb24gZmluYWwgOiBwdWJsaWMgSlNGdW5jdGlvbiB7CiAjZW5kaWYKICAgICBmcmllbmQgY2xh
c3MgVk07CiBwdWJsaWM6Ci0gICAgdHlwZWRlZiBKU0Z1bmN0aW9uIEJhc2U7Ci0KLSAgICBlbnVt
IGNsYXNzIEdlbmVyYXRvclJlc3VtZU1vZGUgOiBpbnQzMl90IHsKLSAgICAgICAgTm9ybWFsTW9k
ZSA9IDAsCi0gICAgICAgIFJldHVybk1vZGUgPSAxLAotICAgICAgICBUaHJvd01vZGUgPSAyCi0g
ICAgfTsKLQotICAgIGVudW0gY2xhc3MgR2VuZXJhdG9yU3RhdGUgOiBpbnQzMl90IHsKLSAgICAg
ICAgQ29tcGxldGVkID0gLTEsCi0gICAgICAgIEV4ZWN1dGluZyA9IC0yLAotICAgIH07Ci0KLSAg
ICAvLyBbdGhpc10sIEBnZW5lcmF0b3IsIEBnZW5lcmF0b3JTdGF0ZSwgQGdlbmVyYXRvclZhbHVl
LCBAZ2VuZXJhdG9yUmVzdW1lTW9kZSwgQGdlbmVyYXRvckZyYW1lLgotICAgIGVudW0gY2xhc3Mg
R2VuZXJhdG9yQXJndW1lbnQgOiBpbnQzMl90IHsKLSAgICAgICAgVGhpc1ZhbHVlID0gMCwKLSAg
ICAgICAgR2VuZXJhdG9yID0gMSwKLSAgICAgICAgU3RhdGUgPSAyLAotICAgICAgICBWYWx1ZSA9
IDMsCi0gICAgICAgIFJlc3VtZU1vZGUgPSA0LAotICAgICAgICBGcmFtZSA9IDUsCi0gICAgfTsK
KyAgICB1c2luZyBCYXNlID0gSlNGdW5jdGlvbjsKIAogICAgIGNvbnN0IHN0YXRpYyB1bnNpZ25l
ZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggYzZhYjg2Yjgw
MTdmOTA2Mjg1YWJhMjI3Y2RjZDE1OGZmMTc3NjY5MS4uNjNiODUyNDU4NTg0YWJmNTRiNzI5YWE1
MTBjNmVlYzUzMTJjYjAzZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtODE5LDYgKzgxOSw3IEBAIGNhcGl0YWxOYW1lICMjIENv
bnN0cnVjdG9yKiBsb3dlck5hbWUgIyMgQ29uc3RydWN0b3IgPSBmZWF0dXJlRmxhZyA/IGNhcGl0
YWxOYW1lCiAKICAgICBtX2dlbmVyYXRvclByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5z
aXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBtX2dlbmVyYXRvckZ1bmN0
aW9uUHJvdG90eXBlLmdldCgpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOwogICAgIG1fZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUt
PnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5
cGUsIG1fZ2VuZXJhdG9yUHJvdG90eXBlLmdldCgpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOworICAgIG1fZ2VuZXJhdG9yU3RydWN0
dXJlLnNldCh2bSwgdGhpcywgSlNHZW5lcmF0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywg
bV9nZW5lcmF0b3JQcm90b3R5cGUuZ2V0KCkpKTsKIAogICAgIG1fYXN5bmNGdW5jdGlvblByb3Rv
dHlwZS5zZXQodm0sIHRoaXMsIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGU6OmNyZWF0ZSh2bSwgQXN5
bmNGdW5jdGlvblByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9u
UHJvdG90eXBlLmdldCgpKSkpOwogICAgIEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3RvciogYXN5bmNG
dW5jdGlvbkNvbnN0cnVjdG9yID0gQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGUodm0s
IEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBmdW5j
dGlvbkNvbnN0cnVjdG9yKSwgbV9hc3luY0Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKTsKQEAgLTE3
NjcsNiArMTc2OCw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxs
KiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2Jq
ZWN0LT5tX2dlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCh0
aGlzT2JqZWN0LT5tX2FzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5k
KHRoaXNPYmplY3QtPm1fYXN5bmNHZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZSk7CisgICAgdmlz
aXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9nZW5lcmF0b3JTdHJ1Y3R1cmUpOwogICAgIHRoaXNP
YmplY3QtPm1faXRlcmF0b3JSZXN1bHRPYmplY3RTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CiAg
ICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1
cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fcmVnRXhwTWF0Y2hlc0FycmF5
V2l0aEdyb3Vwc1N0cnVjdHVyZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuaAppbmRleCAxMDVkNTZhOGM4YzNkMGExNDFjNDQwYWY3NGIwODllNzdi
YWE0Y2I5Li4yYWQ5MWE1M2Y4ZWFlOGM0NDY1YzEzNzNhODg0MzNlOTZiOTgzNzIxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTM3NCw2
ICszNzQsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlh
YmxlT2JqZWN0IHsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2FzeW5jRnVuY3Rpb25T
dHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9hc3luY0dlbmVyYXRvckZ1
bmN0aW9uU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fZ2VuZXJhdG9y
RnVuY3Rpb25TdHJ1Y3R1cmU7CisgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9nZW5lcmF0
b3JTdHJ1Y3R1cmU7CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+
IG1faXRlcmF0b3JSZXN1bHRPYmplY3RTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVj
dHVyZT4gbV9yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0
cnVjdHVyZT4gbV9yZWdFeHBNYXRjaGVzQXJyYXlXaXRoR3JvdXBzU3RydWN0dXJlOwpAQCAtNzUy
LDYgKzc1Myw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFy
aWFibGVPYmplY3QgewogICAgIFN0cnVjdHVyZSogbnVtYmVyT2JqZWN0U3RydWN0dXJlKCkgY29u
c3QgeyByZXR1cm4gbV9udW1iZXJPYmplY3RTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CiAgICAgU3Ry
dWN0dXJlKiBtYXBTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX21hcFN0cnVjdHVyZS5nZXQo
KTsgfQogICAgIFN0cnVjdHVyZSogcmVnRXhwU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9y
ZWdFeHBTdHJ1Y3R1cmUuZ2V0KCk7IH0KKyAgICBTdHJ1Y3R1cmUqIGdlbmVyYXRvclN0cnVjdHVy
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZ2VuZXJhdG9yU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3Ry
dWN0dXJlKiBnZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fZ2Vu
ZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIGFzeW5jRnVu
Y3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2FzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUu
Z2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIGFzeW5jR2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUo
KSBjb25zdCB7IHJldHVybiBtX2FzeW5jR2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuY3BwCmluZGV4IDg0OWIzNzkx
ODhlZmNlNTcwOTIzZjVhMWE1YTRmNzFiYzlkOTk0NzYuLmRhYzVlNjlkYTIwNDUxYjkwZmQ0OGIw
N2E3MGMxMTIyM2Y1NzA3NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTVHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBl
LmNwcApAQCAtOTYsNiArOTYsNyBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91
dCwgSlNDOjpKU1R5cGUgdHlwZSkKICAgICBDQVNFKFdpdGhTY29wZVR5cGUpCiAgICAgQ0FTRShS
ZWdFeHBPYmplY3RUeXBlKQogICAgIENBU0UoUHJveHlPYmplY3RUeXBlKQorICAgIENBU0UoSlNH
ZW5lcmF0b3JUeXBlKQogICAgIENBU0UoSlNQcm9taXNlVHlwZSkKICAgICBDQVNFKEpTTWFwVHlw
ZSkKICAgICBDQVNFKEpTU2V0VHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTVHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBl
LmgKaW5kZXggOGQzNWFjNzc5ODM3MzliMWEzZmU1ZDUwYTZmOTFiOTAxMjlmZjc3ZC4uMDFlNzAy
MjczNDc2NGIxOGQ5ZTMxYTkxZWU4Y2Q2MGE5OTU5MjVlYSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNUeXBlLmgKQEAgLTEwOCw2ICsxMDgsNyBAQCBlbnVtIEpTVHlwZSA6IHVpbnQ4
X3QgewogCiAgICAgUmVnRXhwT2JqZWN0VHlwZSwKICAgICBQcm94eU9iamVjdFR5cGUsCisgICAg
SlNHZW5lcmF0b3JUeXBlLAogICAgIEpTUHJvbWlzZVR5cGUsCiAgICAgSlNNYXBUeXBlLAogICAg
IEpTU2V0VHlwZSwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378357</attachid>
            <date>2019-09-09 02:19:02 -0700</date>
            <delta_ts>2019-09-09 15:48:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201159-20190909021901.patch</filename>
            <type>text/plain</type>
            <size>104785</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5NjA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
MWFiMGFiYjE5NmM5NGE1OTljMjMzNDA2OWE1MzlhMWM4ZjIyZDk5Li40MGMwNGE3ZTkzNDY5ZGQx
ZjUyOWZkZDNlOTE1ZmVkNDBkYjUwNGM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMjggQEAKKzIwMTktMDktMDkgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBHZW5lcmF0b3Igc2hvdWxkIGhhdmUgaW50ZXJuYWwgZmllbGRz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDExNTkK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEphdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogU291cmNlcy50
eHQ6CisgICAgICAgICogYnVpbHRpbnMvQXN5bmNGdW5jdGlvblByb3RvdHlwZS5qczoKKyAgICAg
ICAgKGdsb2JhbFByaXZhdGUuYXN5bmNGdW5jdGlvblJlc3VtZSk6CisgICAgICAgICogYnVpbHRp
bnMvR2VuZXJhdG9yUHJvdG90eXBlLmpzOgorICAgICAgICAoZ2xvYmFsUHJpdmF0ZS5nZW5lcmF0
b3JSZXN1bWUpOgorICAgICAgICAobmV4dCk6CisgICAgICAgIChyZXR1cm4pOgorICAgICAgICAo
dGhyb3cpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNw
cDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb246OnJ1bik6CisgICAg
ICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5jcHA6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6OkJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkp
OgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuaDoKKyAgICAg
ICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3QucmI6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNv
ZGVVc2VEZWYuaDoKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCk6
CisgICAgICAgIChKU0M6OmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAq
IGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluaXNo
Q3JlYXRpb24pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmFsaXplTExJbnRJbmxpbmVD
YWNoZXMpOgorICAgICAgICAqIGJ5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcDoKKyAgICAgICAg
KEpTQzo6c3BlY3VsYXRpb25Gcm9tSlNUeXBlKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Qnl0
ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1
dEdlbmVyYXRvckZpZWxkcyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
Q3JlYXRlR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRO
ZXdHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFlpZWxk
KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWxlZ2F0ZVlpZWxkKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZW5lcmF0b3JTdGF0ZUNoYW5n
ZSk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXNHZW5lcmF0b3IpOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdG9yU3RhdGVSZWdpc3Rlcik6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0b3JWYWx1ZVJlZ2lzdGVyKToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3Rlcik6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0b3JGcmFtZVJlZ2lzdGVyKToK
KyAgICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6
Z2VuZXJhdG9ySW50ZXJuYWxGaWVsZEluZGV4KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVJbnRy
aW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19nZXRHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19wdXRHZW5l
cmF0b3JJbnRlcm5hbEZpZWxkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVJbnRyaW5zaWNOb2Rl
OjplbWl0X2ludHJpbnNpY19pc0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uTm9k
ZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklu
bGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0
U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sp
OgorICAgICAgICAqIGRmZy9ERkdDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OmNhcGFiaWxpdHlMZXZlbCk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAgICAg
ICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcnNFeGl0
U3RhdGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJzRXhpdFN0YXRlKToKKyAgICAg
ICAgKiBkZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OkNvbnN0YW50Rm9sZGluZ1BoYXNlOjpmb2xkQ29uc3RhbnRzKToKKyAgICAgICAgKiBkZmcvREZH
RG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAgICAqIGRmZy9E
RkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5v
ZGUpOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwSXNDZWxsV2l0aFR5cGUp
OgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6Y29u
dmVydFRvTmV3R2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNTdHJ1Y3R1
cmUpOgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdPcGVy
YXRpb25zLmNwcDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGRm
Zy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1Nh
ZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAg
ICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjb21waWxlQ3JlYXRlR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0dlbmVyYXRvcik6CisgICAgICAgICogZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmg6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAg
KiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRp
b25QaGFzZS5jcHA6CisgICAgICAgICogZnRsL0ZUTENhcGFiaWxpdGllcy5jcHA6CisgICAgICAg
IChKU0M6OkZUTDo6Y2FuQ29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5j
cHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOb2RlKToK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5ld0dlbmVyYXRv
cik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDcmVhdGVH
ZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjppc0NlbGxX
aXRoVHlwZSk6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJp
dmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVT
bG93Q2FzZXMpOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBq
aXQvSklUT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfaW50ZXJuYWxfZmllbGQpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2ludGVybmFsX2ZpZWxkKToKKyAgICAgICAgKiBsbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQ
YXRocy5jcHA6CisgICAgICAgIChKU0M6OlNMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBydW50
aW1lL0NvbW1vblNsb3dQYXRocy5oOgorICAgICAgICAqIHJ1bnRpbWUvSW50ZXJuYWxGdW5jdGlv
bi5jcHA6CisgICAgICAgIChKU0M6OkludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3Ry
dWN0dXJlU2xvdyk6CisgICAgICAgICogcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmg6CisgICAg
ICAgIChKU0M6OkludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKToKKyAg
ICAgICAgKiBydW50aW1lL0pTR2VuZXJhdG9yLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkpT
R2VuZXJhdG9yOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpKU0dlbmVyYXRvcjo6Y3JlYXRlU3Ry
dWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmF0b3I6OkpTR2VuZXJhdG9yKToKKyAgICAg
ICAgKEpTQzo6SlNHZW5lcmF0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNH
ZW5lcmF0b3I6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmF0b3Iu
aDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3JG
dW5jdGlvbi5oLgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5oOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2Jh
bE9iamVjdDo6aW5pdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxk
cmVuKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6
OkpTR2xvYmFsT2JqZWN0OjpnZW5lcmF0b3JTdHJ1Y3R1cmUgY29uc3QpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNUeXBlLmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAg
ICogcnVudGltZS9KU1R5cGUuaDoKKwogMjAxOS0wOS0wNiAgTWFyayBMYW0gIDxtYXJrLmxhbUBh
cHBsZS5jb20+CiAKICAgICAgICAgSGFyZGVuIHByb3RlY3Rpb24gb2YgdGhlIEdpZ2FjYWdlIENv
bmZpZyBwYXJhbWV0ZXJzLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAwZDg4YjU0
NGNhYzFmNzhmOGU4ZTY5NzZlZjAyMGJjM2FlZGY4N2Q2Li4yNTMwNDAzMTlmMGQyYmQzMzYyYmM1
NjIwODRjNDVkODQ1ZmVlMzU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTgw
NCw2ICsxODA0LDcgQEAKIAkJRTM0MDBFQzEyMkExQ0M3QjAwOURFRDU0IC8qIEZ1bmN0aW9uRXhl
Y3V0YWJsZUlubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUzNDAwRUMwMjJBMUNDNzgwMDlERUQ1NCAvKiBGdW5jdGlvbkV4ZWN1dGFibGVJbmxp
bmVzLmggKi87IH07CiAJCUUzNEU2NTc1MjA2NjhFQUEwMEZCODFBQyAvKiBQYXJzZUhhc2guaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNEU2NTczMjA2
NjhFOEQwMEZCODFBQyAvKiBQYXJzZUhhc2guaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzRFREJGNzFEQjVGRkM5MDBEQzg3QTUgLyogRnJhbWVU
cmFjZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
MzRFREJGNjFEQjVGRkMxMDBEQzg3QTUgLyogRnJhbWVUcmFjZXJzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTM0RjkzMEUyMzIyRDg4MjAwMkI4
REI0IC8qIEpTR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFMzRGOTMwQzIzMjJEODgxMDAyQjhEQjQgLyogSlNHZW5lcmF0b3IuaCAqLzsg
fTsKIAkJRTM1MDcwOEExREM0OUJCRjAwODlCQ0Q2IC8qIERPTUpJVFNpZ25hdHVyZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1MDcwODkxREM0OUJC
NjAwODlCQ0Q2IC8qIERPTUpJVFNpZ25hdHVyZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzNTQ2MjJCMUI2MDY1RDEwMDU0NTM4NiAvKiBDb25z
dHJ1Y3RBYmlsaXR5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMzU0NjIyQTFCNjA2NUQxMDA1NDUzODYgLyogQ29uc3RydWN0QWJpbGl0eS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzNTU1QjhBMURB
RTAzQTUwMEYzNjkyMSAvKiBET01KSVRDYWxsRE9NR2V0dGVyU25pcHBldC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1NTVCODkxREFFMDNBMjAwRjM2
OTIxIC8qIERPTUpJVENhbGxET01HZXR0ZXJTbmlwcGV0LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTQ4OTksNiArNDkwMCw4IEBACiAJCUUzNEU2
NTczMjA2NjhFOEQwMEZCODFBQyAvKiBQYXJzZUhhc2guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUGFyc2VIYXNoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUz
NEU2NTc0MjA2NjhFOEUwMEZCODFBQyAvKiBQYXJzZUhhc2guY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gUGFyc2VIYXNoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRTM0RURCRjYxREI1RkZDMTAwREM4N0E1IC8qIEZyYW1lVHJhY2Vycy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGcmFtZVRyYWNlcnMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRTM0RjkzMEIyMzIyRDg4MTAwMkI4REI0IC8qIEpTR2VuZXJhdG9y
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTR2VuZXJhdG9yLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM0RjkzMEMyMzIyRDg4MTAwMkI4REI0
IC8qIEpTR2VuZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTR2Vu
ZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNTA3MDg5MURDNDlCQjYw
MDg5QkNENiAvKiBET01KSVRTaWduYXR1cmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRE9NSklUU2lnbmF0dXJlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUz
NTQ2MjJBMUI2MDY1RDEwMDU0NTM4NiAvKiBDb25zdHJ1Y3RBYmlsaXR5LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbnN0cnVjdEFiaWxpdHkuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRTM1NTVCODkxREFFMDNBMjAwRjM2OTIxIC8qIERPTUpJVENhbGxET01H
ZXR0ZXJTbmlwcGV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUpJVENh
bGxET01HZXR0ZXJTbmlwcGV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03MTcw
LDYgKzcxNzMsOCBAQAogCQkJCUY2OTJBODVFMDI1NTU5N0QwMUZGNjBGNyAvKiBKU0Z1bmN0aW9u
LmNwcCAqLywKIAkJCQlGNjkyQTg1RjAyNTU1OTdEMDFGRjYwRjcgLyogSlNGdW5jdGlvbi5oICov
LAogCQkJCUE3MjAyOEI5MTc5NzYwM0QwMDk4MDI4QyAvKiBKU0Z1bmN0aW9uSW5saW5lcy5oICov
LAorCQkJCUUzNEY5MzBCMjMyMkQ4ODEwMDJCOERCNCAvKiBKU0dlbmVyYXRvci5jcHAgKi8sCisJ
CQkJRTM0RjkzMEMyMzIyRDg4MTAwMkI4REI0IC8qIEpTR2VuZXJhdG9yLmggKi8sCiAJCQkJNzBC
NzkxOEMxQzAyNDQ2MjAwMjQ4MUUyIC8qIEpTR2VuZXJhdG9yRnVuY3Rpb24uY3BwICovLAogCQkJ
CTcwQjc5MThEMUMwMjQ0NjIwMDI0ODFFMiAvKiBKU0dlbmVyYXRvckZ1bmN0aW9uLmggKi8sCiAJ
CQkJMEYyQjY2QzMxN0I2QjVBQjAwQTdBRTNGIC8qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Lmgg
Ki8sCkBAIC05NjI5LDYgKzk2MzQsNyBAQAogCQkJCTBGMkI2NkYwMTdCNkI1QUIwMEE3QUUzRiAv
KiBKU0Zsb2F0NjRBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MUYwRTE2RjVDRDAw
QjM0NDYwIC8qIEpTRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUE3MjAyOEJBMTc5NzYw
M0QwMDk4MDI4QyAvKiBKU0Z1bmN0aW9uSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM0
RjkzMEUyMzIyRDg4MjAwMkI4REI0IC8qIEpTR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk3MEI3OTE5QzFDMDI0QTQ5MDAyNDgxRTIgLyogSlNHZW5lcmF0b3JGdW5jdGlvbi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEYyQjY2RjExN0I2QjVBQjAwQTdBRTNGIC8qIEpTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCNjZGMjE3QjZCNUFCMDBBN0FFM0Yg
LyogSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvU291cmNlcy50eHQKaW5kZXggMjYyMTkzYjIzODUxMmY4ZTk1ZGVkMTRhYjI4
OTBjNTFkYmM1ZTljMC4uZDEwMTIwMjI3YTBjMWJlYTU5ODkyYTI2OWRhY2I0Zjg1NDBiNWY5YyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dApAQCAtODI0LDYgKzgyNCw3IEBAIHJ1bnRpbWUv
SlNEYXRlTWF0aC5jcHAKIHJ1bnRpbWUvSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUu
Y3BwCiBydW50aW1lL0pTRml4ZWRBcnJheS5jcHAKIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHAKK3J1
bnRpbWUvSlNHZW5lcmF0b3IuY3BwCiBydW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uY3BwCiBy
dW50aW1lL0pTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50LmNwcAogcnVudGltZS9KU0dsb2JhbE9i
amVjdC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Bc3lu
Y0Z1bmN0aW9uUHJvdG90eXBlLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0Fz
eW5jRnVuY3Rpb25Qcm90b3R5cGUuanMKaW5kZXggNTIxNGJkNmYzYTFiNGUyZTVmMWU5NWFhMWM5
OTExODk5Yjg5NTAwZi4uOTY4Y2YxZTczNDYxOTJmMWQ0NThjMzc5OGVjMzdjOGQxYmM5MWQwMiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0FzeW5jRnVuY3Rpb25Q
cm90b3R5cGUuanMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0FzeW5jRnVu
Y3Rpb25Qcm90b3R5cGUuanMKQEAgLTMxLDIyICszMSwyMiBAQCBmdW5jdGlvbiBhc3luY0Z1bmN0
aW9uUmVzdW1lKGdlbmVyYXRvciwgcHJvbWlzZSwgc2VudFZhbHVlLCByZXN1bWVNb2RlKQogCiAg
ICAgQGFzc2VydChAaXNQcm9taXNlKHByb21pc2UpKTsKIAotICAgIHZhciBzdGF0ZSA9IEBnZXRC
eUlkRGlyZWN0UHJpdmF0ZShnZW5lcmF0b3IsICJnZW5lcmF0b3JTdGF0ZSIpOworICAgIHZhciBz
dGF0ZSA9IEBnZXRHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKGdlbmVyYXRvciwgQGdlbmVyYXRvckZp
ZWxkU3RhdGUpOwogICAgIHZhciB2YWx1ZSA9IEB1bmRlZmluZWQ7CiAKICAgICBpZiAoc3RhdGUg
PT09IEBHZW5lcmF0b3JTdGF0ZUNvbXBsZXRlZCB8fCAocmVzdW1lTW9kZSAhPT0gQEdlbmVyYXRv
clJlc3VtZU1vZGVOb3JtYWwgJiYgcmVzdW1lTW9kZSAhPT0gQEdlbmVyYXRvclJlc3VtZU1vZGVU
aHJvdykpCiAgICAgICAgIEB0aHJvd1R5cGVFcnJvcigiQXN5bmMgZnVuY3Rpb24gaWxsZWdhbGx5
IHJlc3VtZWQiKTsKIAogICAgIHRyeSB7Ci0gICAgICAgIEBwdXRCeUlkRGlyZWN0UHJpdmF0ZShn
ZW5lcmF0b3IsICJnZW5lcmF0b3JTdGF0ZSIsIEBHZW5lcmF0b3JTdGF0ZUV4ZWN1dGluZyk7Ci0g
ICAgICAgIHZhbHVlID0gQGdldEJ5SWREaXJlY3RQcml2YXRlKGdlbmVyYXRvciwgImdlbmVyYXRv
ck5leHQiKS5AY2FsbChAZ2V0QnlJZERpcmVjdFByaXZhdGUoZ2VuZXJhdG9yLCAiZ2VuZXJhdG9y
VGhpcyIpLCBnZW5lcmF0b3IsIHN0YXRlLCBzZW50VmFsdWUsIHJlc3VtZU1vZGUsIEBnZXRCeUlk
RGlyZWN0UHJpdmF0ZShnZW5lcmF0b3IsICJnZW5lcmF0b3JGcmFtZSIpKTsKLSAgICAgICAgaWYg
KEBnZXRCeUlkRGlyZWN0UHJpdmF0ZShnZW5lcmF0b3IsICJnZW5lcmF0b3JTdGF0ZSIpID09PSBA
R2VuZXJhdG9yU3RhdGVFeGVjdXRpbmcpIHsKLSAgICAgICAgICAgIEBwdXRCeUlkRGlyZWN0UHJp
dmF0ZShnZW5lcmF0b3IsICJnZW5lcmF0b3JTdGF0ZSIsIEBHZW5lcmF0b3JTdGF0ZUNvbXBsZXRl
ZCk7CisgICAgICAgIEBwdXRHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKGdlbmVyYXRvciwgQGdlbmVy
YXRvckZpZWxkU3RhdGUsIEBHZW5lcmF0b3JTdGF0ZUV4ZWN1dGluZyk7CisgICAgICAgIHZhbHVl
ID0gQGdldEdlbmVyYXRvckludGVybmFsRmllbGQoZ2VuZXJhdG9yLCBAZ2VuZXJhdG9yRmllbGRO
ZXh0KS5AY2FsbChAZ2V0R2VuZXJhdG9ySW50ZXJuYWxGaWVsZChnZW5lcmF0b3IsIEBnZW5lcmF0
b3JGaWVsZFRoaXMpLCBnZW5lcmF0b3IsIHN0YXRlLCBzZW50VmFsdWUsIHJlc3VtZU1vZGUsIEBn
ZXRHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKGdlbmVyYXRvciwgQGdlbmVyYXRvckZpZWxkRnJhbWUp
KTsKKyAgICAgICAgaWYgKEBnZXRHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKGdlbmVyYXRvciwgQGdl
bmVyYXRvckZpZWxkU3RhdGUpID09PSBAR2VuZXJhdG9yU3RhdGVFeGVjdXRpbmcpIHsKKyAgICAg
ICAgICAgIEBwdXRHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKGdlbmVyYXRvciwgQGdlbmVyYXRvckZp
ZWxkU3RhdGUsIEBHZW5lcmF0b3JTdGF0ZUNvbXBsZXRlZCk7CiAgICAgICAgICAgICBAcmVzb2x2
ZVByb21pc2VXaXRoRmlyc3RSZXNvbHZpbmdGdW5jdGlvbkNhbGxDaGVjayhwcm9taXNlLCB2YWx1
ZSk7CiAgICAgICAgICAgICByZXR1cm4gcHJvbWlzZTsKICAgICAgICAgfQogICAgIH0gY2F0Y2gg
KGVycm9yKSB7Ci0gICAgICAgIEBwdXRCeUlkRGlyZWN0UHJpdmF0ZShnZW5lcmF0b3IsICJnZW5l
cmF0b3JTdGF0ZSIsIEBHZW5lcmF0b3JTdGF0ZUNvbXBsZXRlZCk7CisgICAgICAgIEBwdXRHZW5l
cmF0b3JJbnRlcm5hbEZpZWxkKGdlbmVyYXRvciwgQGdlbmVyYXRvckZpZWxkU3RhdGUsIEBHZW5l
cmF0b3JTdGF0ZUNvbXBsZXRlZCk7CiAgICAgICAgIEByZWplY3RQcm9taXNlV2l0aEZpcnN0UmVz
b2x2aW5nRnVuY3Rpb25DYWxsQ2hlY2socHJvbWlzZSwgZXJyb3IpOwogICAgICAgICByZXR1cm4g
cHJvbWlzZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRp
bnMvR2VuZXJhdG9yUHJvdG90eXBlLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5z
L0dlbmVyYXRvclByb3RvdHlwZS5qcwppbmRleCBiMjgwMWRmODgyYjhhOGJjNmUxNWU2ZTE0YTlm
Mjk2Y2QxYzY5MjVkLi44MzkzZWEyOGFlODk5NzY5MmNmZWI2ZWUyNTRiYWY3OTUyNzFjMDhkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvR2VuZXJhdG9yUHJvdG90
eXBlLmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9HZW5lcmF0b3JQcm90
b3R5cGUuanMKQEAgLTM0LDE0ICszNCwxNCBAQCBmdW5jdGlvbiBnZW5lcmF0b3JSZXN1bWUoZ2Vu
ZXJhdG9yLCBzdGF0ZSwgZ2VuZXJhdG9yVGhpcywgc2VudFZhbHVlLCB2YWx1ZSwgcmVzdQogICAg
IHZhciBkb25lID0gc3RhdGUgPT09IEBHZW5lcmF0b3JTdGF0ZUNvbXBsZXRlZDsKICAgICBpZiAo
IWRvbmUpIHsKICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIEBwdXRCeUlkRGlyZWN0UHJpdmF0
ZShnZW5lcmF0b3IsICJnZW5lcmF0b3JTdGF0ZSIsIEBHZW5lcmF0b3JTdGF0ZUV4ZWN1dGluZyk7
Ci0gICAgICAgICAgICB2YWx1ZSA9IEBnZXRCeUlkRGlyZWN0UHJpdmF0ZShnZW5lcmF0b3IsICJn
ZW5lcmF0b3JOZXh0IikuQGNhbGwoZ2VuZXJhdG9yVGhpcywgZ2VuZXJhdG9yLCBzdGF0ZSwgc2Vu
dFZhbHVlLCByZXN1bWVNb2RlLCBAZ2V0QnlJZERpcmVjdFByaXZhdGUoZ2VuZXJhdG9yLCAiZ2Vu
ZXJhdG9yRnJhbWUiKSk7Ci0gICAgICAgICAgICBpZiAoQGdldEJ5SWREaXJlY3RQcml2YXRlKGdl
bmVyYXRvciwgImdlbmVyYXRvclN0YXRlIikgPT09IEBHZW5lcmF0b3JTdGF0ZUV4ZWN1dGluZykg
ewotICAgICAgICAgICAgICAgIEBwdXRCeUlkRGlyZWN0UHJpdmF0ZShnZW5lcmF0b3IsICJnZW5l
cmF0b3JTdGF0ZSIsIEBHZW5lcmF0b3JTdGF0ZUNvbXBsZXRlZCk7CisgICAgICAgICAgICBAcHV0
R2VuZXJhdG9ySW50ZXJuYWxGaWVsZChnZW5lcmF0b3IsIEBnZW5lcmF0b3JGaWVsZFN0YXRlLCBA
R2VuZXJhdG9yU3RhdGVFeGVjdXRpbmcpOworICAgICAgICAgICAgdmFsdWUgPSBAZ2V0R2VuZXJh
dG9ySW50ZXJuYWxGaWVsZChnZW5lcmF0b3IsIEBnZW5lcmF0b3JGaWVsZE5leHQpLkBjYWxsKGdl
bmVyYXRvclRoaXMsIGdlbmVyYXRvciwgc3RhdGUsIHNlbnRWYWx1ZSwgcmVzdW1lTW9kZSwgQGdl
dEdlbmVyYXRvckludGVybmFsRmllbGQoZ2VuZXJhdG9yLCBAZ2VuZXJhdG9yRmllbGRGcmFtZSkp
OworICAgICAgICAgICAgaWYgKEBnZXRHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKGdlbmVyYXRvciwg
QGdlbmVyYXRvckZpZWxkU3RhdGUpID09PSBAR2VuZXJhdG9yU3RhdGVFeGVjdXRpbmcpIHsKKyAg
ICAgICAgICAgICAgICBAcHV0R2VuZXJhdG9ySW50ZXJuYWxGaWVsZChnZW5lcmF0b3IsIEBnZW5l
cmF0b3JGaWVsZFN0YXRlLCBAR2VuZXJhdG9yU3RhdGVDb21wbGV0ZWQpOwogICAgICAgICAgICAg
ICAgIGRvbmUgPSB0cnVlOwogICAgICAgICAgICAgfQogICAgICAgICB9IGNhdGNoIChlcnJvcikg
ewotICAgICAgICAgICAgQHB1dEJ5SWREaXJlY3RQcml2YXRlKGdlbmVyYXRvciwgImdlbmVyYXRv
clN0YXRlIiwgQEdlbmVyYXRvclN0YXRlQ29tcGxldGVkKTsKKyAgICAgICAgICAgIEBwdXRHZW5l
cmF0b3JJbnRlcm5hbEZpZWxkKGdlbmVyYXRvciwgQGdlbmVyYXRvckZpZWxkU3RhdGUsIEBHZW5l
cmF0b3JTdGF0ZUNvbXBsZXRlZCk7CiAgICAgICAgICAgICB0aHJvdyBlcnJvcjsKICAgICAgICAg
fQogICAgIH0KQEAgLTUyLDQzICs1Miw0MyBAQCBmdW5jdGlvbiBuZXh0KHZhbHVlKQogewogICAg
ICJ1c2Ugc3RyaWN0IjsKIAotICAgIHZhciBzdGF0ZSA9IEBnZXRCeUlkRGlyZWN0UHJpdmF0ZSh0
aGlzLCAiZ2VuZXJhdG9yU3RhdGUiKTsKLSAgICBpZiAodHlwZW9mIHN0YXRlICE9PSAibnVtYmVy
IikKKyAgICBpZiAoIUBpc0dlbmVyYXRvcih0aGlzKSkKICAgICAgICAgQHRocm93VHlwZUVycm9y
KCJ8dGhpc3wgc2hvdWxkIGJlIGEgZ2VuZXJhdG9yIik7CiAKKyAgICB2YXIgc3RhdGUgPSBAZ2V0
R2VuZXJhdG9ySW50ZXJuYWxGaWVsZCh0aGlzLCBAZ2VuZXJhdG9yRmllbGRTdGF0ZSk7CiAgICAg
aWYgKHN0YXRlID09PSBAR2VuZXJhdG9yU3RhdGVFeGVjdXRpbmcpCiAgICAgICAgIEB0aHJvd1R5
cGVFcnJvcigiR2VuZXJhdG9yIGlzIGV4ZWN1dGluZyIpOwogCi0gICAgcmV0dXJuIEBnZW5lcmF0
b3JSZXN1bWUodGhpcywgc3RhdGUsIEBnZXRCeUlkRGlyZWN0UHJpdmF0ZSh0aGlzLCAiZ2VuZXJh
dG9yVGhpcyIpLCB2YWx1ZSwgQHVuZGVmaW5lZCwgQEdlbmVyYXRvclJlc3VtZU1vZGVOb3JtYWwp
OworICAgIHJldHVybiBAZ2VuZXJhdG9yUmVzdW1lKHRoaXMsIHN0YXRlLCBAZ2V0R2VuZXJhdG9y
SW50ZXJuYWxGaWVsZCh0aGlzLCBAZ2VuZXJhdG9yRmllbGRUaGlzKSwgdmFsdWUsIEB1bmRlZmlu
ZWQsIEBHZW5lcmF0b3JSZXN1bWVNb2RlTm9ybWFsKTsKIH0KIAogZnVuY3Rpb24gcmV0dXJuKHZh
bHVlKQogewogICAgICJ1c2Ugc3RyaWN0IjsKIAotICAgIHZhciBzdGF0ZSA9IEBnZXRCeUlkRGly
ZWN0UHJpdmF0ZSh0aGlzLCAiZ2VuZXJhdG9yU3RhdGUiKTsKLSAgICBpZiAodHlwZW9mIHN0YXRl
ICE9PSAibnVtYmVyIikKKyAgICBpZiAoIUBpc0dlbmVyYXRvcih0aGlzKSkKICAgICAgICAgQHRo
cm93VHlwZUVycm9yKCJ8dGhpc3wgc2hvdWxkIGJlIGEgZ2VuZXJhdG9yIik7CiAKKyAgICB2YXIg
c3RhdGUgPSBAZ2V0R2VuZXJhdG9ySW50ZXJuYWxGaWVsZCh0aGlzLCBAZ2VuZXJhdG9yRmllbGRT
dGF0ZSk7CiAgICAgaWYgKHN0YXRlID09PSBAR2VuZXJhdG9yU3RhdGVFeGVjdXRpbmcpCiAgICAg
ICAgIEB0aHJvd1R5cGVFcnJvcigiR2VuZXJhdG9yIGlzIGV4ZWN1dGluZyIpOwogCi0gICAgcmV0
dXJuIEBnZW5lcmF0b3JSZXN1bWUodGhpcywgc3RhdGUsIEBnZXRCeUlkRGlyZWN0UHJpdmF0ZSh0
aGlzLCAiZ2VuZXJhdG9yVGhpcyIpLCB2YWx1ZSwgdmFsdWUsIEBHZW5lcmF0b3JSZXN1bWVNb2Rl
UmV0dXJuKTsKKyAgICByZXR1cm4gQGdlbmVyYXRvclJlc3VtZSh0aGlzLCBzdGF0ZSwgQGdldEdl
bmVyYXRvckludGVybmFsRmllbGQodGhpcywgQGdlbmVyYXRvckZpZWxkVGhpcyksIHZhbHVlLCB2
YWx1ZSwgQEdlbmVyYXRvclJlc3VtZU1vZGVSZXR1cm4pOwogfQogCiBmdW5jdGlvbiB0aHJvdyhl
eGNlcHRpb24pCiB7CiAgICAgInVzZSBzdHJpY3QiOwogCi0gICAgdmFyIHN0YXRlID0gQGdldEJ5
SWREaXJlY3RQcml2YXRlKHRoaXMsICJnZW5lcmF0b3JTdGF0ZSIpOwotICAgIGlmICh0eXBlb2Yg
c3RhdGUgIT09ICJudW1iZXIiKQorICAgIGlmICghQGlzR2VuZXJhdG9yKHRoaXMpKQogICAgICAg
ICBAdGhyb3dUeXBlRXJyb3IoInx0aGlzfCBzaG91bGQgYmUgYSBnZW5lcmF0b3IiKTsKIAorICAg
IHZhciBzdGF0ZSA9IEBnZXRHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKHRoaXMsIEBnZW5lcmF0b3JG
aWVsZFN0YXRlKTsKICAgICBpZiAoc3RhdGUgPT09IEBHZW5lcmF0b3JTdGF0ZUV4ZWN1dGluZykK
ICAgICAgICAgQHRocm93VHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgZXhlY3V0aW5nIik7CiAKICAg
ICBpZiAoc3RhdGUgPT09IEBHZW5lcmF0b3JTdGF0ZUNvbXBsZXRlZCkKICAgICAgICAgdGhyb3cg
ZXhjZXB0aW9uOwogCi0gICAgcmV0dXJuIEBnZW5lcmF0b3JSZXN1bWUodGhpcywgc3RhdGUsIEBn
ZXRCeUlkRGlyZWN0UHJpdmF0ZSh0aGlzLCAiZ2VuZXJhdG9yVGhpcyIpLCBleGNlcHRpb24sIEB1
bmRlZmluZWQsIEBHZW5lcmF0b3JSZXN1bWVNb2RlVGhyb3cpOworICAgIHJldHVybiBAZ2VuZXJh
dG9yUmVzdW1lKHRoaXMsIHN0YXRlLCBAZ2V0R2VuZXJhdG9ySW50ZXJuYWxGaWVsZCh0aGlzLCBA
Z2VuZXJhdG9yRmllbGRUaGlzKSwgZXhjZXB0aW9uLCBAdW5kZWZpbmVkLCBAR2VuZXJhdG9yUmVz
dW1lTW9kZVRocm93KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwCmluZGV4IDk1NDRiY2I0
Yzg4NjliMzQ1ODZmMTY2Yzg3NGNiYjA4MTUwM2VmZGYuLjI4NjA1MWNjOTVlYTRkOGZkYTY2ZmIw
OTk3YmI1OTNlZGU3ZTMyYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcApAQCAtMzYsNyAr
MzYsNyBAQAogI2luY2x1ZGUgIkludGVycHJldGVySW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ0lu
bGluZXMuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgotI2luY2x1ZGUgIkpTR2Vu
ZXJhdG9yRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0dlbmVyYXRvci5oIgogI2luY2x1ZGUgIkxh
YmVsLmgiCiAjaW5jbHVkZSAiU3Ryb25nSW5saW5lcy5oIgogI2luY2x1ZGUgIlVubGlua2VkQ29k
ZUJsb2NrLmgiCkBAIC0yMjMsNyArMjIzLDcgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcmlmaWNh
dGlvbjo6cnVuKCkKICAgICB7CiAgICAgICAgIGF1dG8gbmV4dFRvRW50ZXJQb2ludCA9IGVudGVy
UG9pbnQoKS5uZXh0KCk7CiAgICAgICAgIHVuc2lnbmVkIHN3aXRjaFRhYmxlSW5kZXggPSBtX2Nv
ZGVCbG9jay0+bnVtYmVyT2ZTd2l0Y2hKdW1wVGFibGVzKCk7Ci0gICAgICAgIFZpcnR1YWxSZWdp
c3RlciBzdGF0ZSA9IHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KHN0YXRpY19jYXN0PGludDMy
X3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvckFyZ3VtZW50OjpTdGF0ZSkpOworICAg
ICAgICBWaXJ0dWFsUmVnaXN0ZXIgc3RhdGUgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChz
dGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9yQXJndW1lbnQ6OlN0YXRl
KSk7CiAgICAgICAgIGF1dG8mIGp1bXBUYWJsZSA9IG1fY29kZUJsb2NrLT5hZGRTd2l0Y2hKdW1w
VGFibGUoKTsKICAgICAgICAganVtcFRhYmxlLm1pbiA9IDA7CiAgICAgICAgIGp1bXBUYWJsZS5i
cmFuY2hPZmZzZXRzLnJlc2l6ZShtX3lpZWxkcy5zaXplKCkgKyAxKTsKQEAgLTIzOCw3ICsyMzgs
NyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uOjpydW4oKQogICAgIH0KIAogICAg
IGZvciAoY29uc3QgWWllbGREYXRhJiBkYXRhIDogbV95aWVsZHMpIHsKLSAgICAgICAgVmlydHVh
bFJlZ2lzdGVyIHNjb3BlID0gdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoc3RhdGljX2Nhc3Q8
aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yQXJndW1lbnQ6OkZyYW1lKSk7
CisgICAgICAgIFZpcnR1YWxSZWdpc3RlciBzY29wZSA9IHZpcnR1YWxSZWdpc3RlckZvckFyZ3Vt
ZW50KHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpHZW5lcmF0b3JBcmd1bWVudDo6
RnJhbWUpKTsKIAogICAgICAgICBhdXRvIGluc3RydWN0aW9uID0gbV9pbnN0cnVjdGlvbnMuYXQo
ZGF0YS5wb2ludCk7CiAgICAgICAgIC8vIEVtaXQgc2F2ZSBzZXF1ZW5jZS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1Jl
Z2lzdHJ5LmNwcAppbmRleCAxOTg0NDNkNTMxZmM2Yzc5ZTdlYTE1NTM4YjIzMDFmZWJmZjQ1ZjZk
Li4zYWQyYmFkNDUzNWYyMjBmZGU0YzNjYWE3NGYzYjA4MzVmMzlhMDAzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2lj
UmVnaXN0cnkuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSAiSXRlcmF0aW9uS2luZC5o
IgogI2luY2x1ZGUgIkpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQ0lu
bGluZXMuaCIKLSNpbmNsdWRlICJKU0dlbmVyYXRvckZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNH
ZW5lcmF0b3IuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTTW9k
dWxlTG9hZGVyLmgiCiAjaW5jbHVkZSAiSlNQcm9taXNlLmgiCkBAIC03NCwxMSArNzQsMTUgQEAg
Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeShWTSYg
dm0pCiAgICAgbV9wcm9taXNlRmxhZ3NJc0ZpcnN0UmVzb2x2aW5nRnVuY3Rpb25DYWxsZWQuc2V0
KG1fdm0sIGpzTnVtYmVyKEpTUHJvbWlzZTo6aXNGaXJzdFJlc29sdmluZ0Z1bmN0aW9uQ2FsbGVk
RmxhZykpOwogICAgIG1fcHJvbWlzZUZpZWxkRmxhZ3Muc2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU1Byb21pc2U6OkZpZWxkOjpGbGFncykpKTsKICAgICBtX3Byb21p
c2VGaWVsZFJlYWN0aW9uc09yUmVzdWx0LnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNQcm9taXNlOjpGaWVsZDo6UmVhY3Rpb25zT3JSZXN1bHQpKSk7Ci0gICAgbV9H
ZW5lcmF0b3JSZXN1bWVNb2RlTm9ybWFsLnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDxp
bnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JSZXN1bWVNb2RlOjpOb3JtYWxN
b2RlKSkpOwotICAgIG1fR2VuZXJhdG9yUmVzdW1lTW9kZVRocm93LnNldChtX3ZtLCBqc051bWJl
cihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JSZXN1
bWVNb2RlOjpUaHJvd01vZGUpKSk7Ci0gICAgbV9HZW5lcmF0b3JSZXN1bWVNb2RlUmV0dXJuLnNl
dChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9u
OjpHZW5lcmF0b3JSZXN1bWVNb2RlOjpSZXR1cm5Nb2RlKSkpOwotICAgIG1fR2VuZXJhdG9yU3Rh
dGVDb21wbGV0ZWQuc2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2Vu
ZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvclN0YXRlOjpDb21wbGV0ZWQpKSk7Ci0gICAgbV9HZW5l
cmF0b3JTdGF0ZUV4ZWN1dGluZy5zZXQobV92bSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJf
dD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yU3RhdGU6OkV4ZWN1dGluZykpKTsKKyAg
ICBtX2dlbmVyYXRvckZpZWxkU3RhdGUuc2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0dlbmVyYXRvcjo6RmllbGQ6OlN0YXRlKSkpOworICAgIG1fZ2VuZXJhdG9yRmll
bGROZXh0LnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNHZW5lcmF0
b3I6OkZpZWxkOjpOZXh0KSkpOworICAgIG1fZ2VuZXJhdG9yRmllbGRUaGlzLnNldChtX3ZtLCBq
c051bWJlcihzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNHZW5lcmF0b3I6OkZpZWxkOjpUaGlzKSkp
OworICAgIG1fZ2VuZXJhdG9yRmllbGRGcmFtZS5zZXQobV92bSwganNOdW1iZXIoc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTR2VuZXJhdG9yOjpGaWVsZDo6RnJhbWUpKSk7CisgICAgbV9HZW5lcmF0
b3JSZXN1bWVNb2RlTm9ybWFsLnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90
PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9yUmVzdW1lTW9kZTo6Tm9ybWFsTW9kZSkpKTsKKyAgICBt
X0dlbmVyYXRvclJlc3VtZU1vZGVUaHJvdy5zZXQobV92bSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8
aW50MzJfdD4oSlNHZW5lcmF0b3I6OkdlbmVyYXRvclJlc3VtZU1vZGU6OlRocm93TW9kZSkpKTsK
KyAgICBtX0dlbmVyYXRvclJlc3VtZU1vZGVSZXR1cm4uc2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRp
Y19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpHZW5lcmF0b3JSZXN1bWVNb2RlOjpSZXR1cm5N
b2RlKSkpOworICAgIG1fR2VuZXJhdG9yU3RhdGVDb21wbGV0ZWQuc2V0KG1fdm0sIGpzTnVtYmVy
KHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpHZW5lcmF0b3JTdGF0ZTo6Q29tcGxl
dGVkKSkpOworICAgIG1fR2VuZXJhdG9yU3RhdGVFeGVjdXRpbmcuc2V0KG1fdm0sIGpzTnVtYmVy
KHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpHZW5lcmF0b3JTdGF0ZTo6RXhlY3V0
aW5nKSkpOwogICAgIG1fQXN5bmNHZW5lcmF0b3JTdGF0ZUNvbXBsZXRlZC5zZXQobV92bSwganNO
dW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uOjpBc3lu
Y0dlbmVyYXRvclN0YXRlOjpDb21wbGV0ZWQpKSk7CiAgICAgbV9Bc3luY0dlbmVyYXRvclN0YXRl
RXhlY3V0aW5nLnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0FzeW5j
R2VuZXJhdG9yRnVuY3Rpb246OkFzeW5jR2VuZXJhdG9yU3RhdGU6OkV4ZWN1dGluZykpKTsKICAg
ICBtX0FzeW5jR2VuZXJhdG9yU3RhdGVTdXNwZW5kZWRTdGFydC5zZXQobV92bSwganNOdW1iZXIo
c3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uOjpBc3luY0dlbmVy
YXRvclN0YXRlOjpTdXNwZW5kZWRTdGFydCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5oCmluZGV4IGQ1
ZjZjM2IwNWVlYjg5NjU5YWNkOTg3YjE2ZjIwYzk0MzZiYmE3NTAuLjI4MGI3ZjkwNmQ2NWU1MGZm
Yjc2NzVlMTFlYTJlMjkzYjdkNTdlYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuaApAQCAtNDIsMTEg
KzQyLDEzIEBAIGNsYXNzIFJlZ2lzdGVySUQ7CiAgICAgbWFjcm8oZ2V0QnlJZERpcmVjdCkgXAog
ICAgIG1hY3JvKGdldEJ5SWREaXJlY3RQcml2YXRlKSBcCiAgICAgbWFjcm8oZ2V0UHJvbWlzZUlu
dGVybmFsRmllbGQpIFwKKyAgICBtYWNybyhnZXRHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKSBcCiAg
ICAgbWFjcm8oaWRXaXRoUHJvZmlsZSkgXAogICAgIG1hY3JvKGlzT2JqZWN0KSBcCiAgICAgbWFj
cm8oaXNKU0FycmF5KSBcCiAgICAgbWFjcm8oaXNQcm94eU9iamVjdCkgXAogICAgIG1hY3JvKGlz
RGVyaXZlZEFycmF5KSBcCisgICAgbWFjcm8oaXNHZW5lcmF0b3IpIFwKICAgICBtYWNybyhpc1By
b21pc2UpIFwKICAgICBtYWNybyhpc1JlZ0V4cE9iamVjdCkgXAogICAgIG1hY3JvKGlzTWFwKSBc
CkBAIC02MSw2ICs2Myw3IEBAIGNsYXNzIFJlZ2lzdGVySUQ7CiAgICAgbWFjcm8ocHV0QnlJZERp
cmVjdFByaXZhdGUpIFwKICAgICBtYWNybyhwdXRCeVZhbERpcmVjdCkgXAogICAgIG1hY3JvKHB1
dFByb21pc2VJbnRlcm5hbEZpZWxkKSBcCisgICAgbWFjcm8ocHV0R2VuZXJhdG9ySW50ZXJuYWxG
aWVsZCkgXAogICAgIG1hY3JvKHRvTnVtYmVyKSBcCiAgICAgbWFjcm8odG9TdHJpbmcpIFwKICAg
ICBtYWNybyh0b09iamVjdCkgXApAQCAtOTgsNiArMTAxLDEwIEBAIGNsYXNzIFJlZ2lzdGVySUQ7
CiAgICAgbWFjcm8ocHJvbWlzZUZsYWdzSXNGaXJzdFJlc29sdmluZ0Z1bmN0aW9uQ2FsbGVkKSBc
CiAgICAgbWFjcm8ocHJvbWlzZUZpZWxkRmxhZ3MpIFwKICAgICBtYWNybyhwcm9taXNlRmllbGRS
ZWFjdGlvbnNPclJlc3VsdCkgXAorICAgIG1hY3JvKGdlbmVyYXRvckZpZWxkU3RhdGUpIFwKKyAg
ICBtYWNybyhnZW5lcmF0b3JGaWVsZE5leHQpIFwKKyAgICBtYWNybyhnZW5lcmF0b3JGaWVsZFRo
aXMpIFwKKyAgICBtYWNybyhnZW5lcmF0b3JGaWVsZEZyYW1lKSBcCiAgICAgbWFjcm8oR2VuZXJh
dG9yUmVzdW1lTW9kZU5vcm1hbCkgXAogICAgIG1hY3JvKEdlbmVyYXRvclJlc3VtZU1vZGVUaHJv
dykgXAogICAgIG1hY3JvKEdlbmVyYXRvclJlc3VtZU1vZGVSZXR1cm4pIFwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCmluZGV4IDNiMzk5OGFiNTBj
ZDYyMDMwOWJhYzZkNjdmZDY5MThmZjRhMDFhNzUuLjFiYTQxZjEwNmI3YTExNTEyNTU3MTJmNmEz
ZDkzMzc3MGYyZDczZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUxpc3QucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlTGlzdC5yYgpAQCAtMTM0LDYgKzEzNCwyMCBAQAogICAgICAgICBpc0ludGVybmFsUHJv
bWlzZTogYm9vbCwKICAgICB9CiAKK29wIDpjcmVhdGVfZ2VuZXJhdG9yLAorICAgIGFyZ3M6IHsK
KyAgICAgICAgZHN0OiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgICAgIGNhbGxlZTogVmlydHVhbFJl
Z2lzdGVyLAorICAgIH0sCisgICAgbWV0YWRhdGE6IHsKKyAgICAgICAgY2FjaGVkQ2FsbGVlOiBX
cml0ZUJhcnJpZXJbSlNDZWxsXQorICAgIH0KKworb3AgOm5ld19nZW5lcmF0b3IsCisgICAgYXJn
czogeworICAgICAgICBkc3Q6IFZpcnR1YWxSZWdpc3RlciwKKyAgICB9CisKIG9wIDpnZXRfYXJn
dW1lbnQsCiAgICAgYXJnczogewogICAgICAgICBkc3Q6IFZpcnR1YWxSZWdpc3RlciwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKaW5kZXggYmUw
ODU5NjQwZmIxMDdkZThiNzgyYmNmYTUwODFiYzdkMWM3OWJjMi4uNDA3OTI0OTk2NWQ1NjE4ZTkz
Zjk4NjcyNDcyNGVjYzM3MzIwMTVjNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKQEAgLTgwLDYgKzgwLDcgQEAgdm9pZCBjb21wdXRlVXNl
c0ZvckJ5dGVjb2RlT2Zmc2V0KEJsb2NrKiBjb2RlQmxvY2ssIE9wY29kZUlEIG9wY29kZUlELCBj
b25zdCBJbnMKICAgICBjYXNlIG9wX2ptcDoKICAgICBjYXNlIG9wX25ld19vYmplY3Q6CiAgICAg
Y2FzZSBvcF9uZXdfcHJvbWlzZToKKyAgICBjYXNlIG9wX25ld19nZW5lcmF0b3I6CiAgICAgY2Fz
ZSBvcF9lbnRlcjoKICAgICBjYXNlIG9wX2FyZ3VtZW50X2NvdW50OgogICAgIGNhc2Ugb3BfY2F0
Y2g6CkBAIC0xOTQsNiArMTk1LDcgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0
KEJsb2NrKiBjb2RlQmxvY2ssIE9wY29kZUlEIG9wY29kZUlELCBjb25zdCBJbnMKICAgICBVU0VT
KE9wTmV3QXJyYXlXaXRoU2l6ZSwgbGVuZ3RoKQogICAgIFVTRVMoT3BDcmVhdGVUaGlzLCBjYWxs
ZWUpCiAgICAgVVNFUyhPcENyZWF0ZVByb21pc2UsIGNhbGxlZSkKKyAgICBVU0VTKE9wQ3JlYXRl
R2VuZXJhdG9yLCBjYWxsZWUpCiAgICAgVVNFUyhPcERlbEJ5SWQsIGJhc2UpCiAgICAgVVNFUyhP
cE5ld0Z1bmMsIHNjb3BlKQogICAgIFVTRVMoT3BOZXdBc3luY0dlbmVyYXRvckZ1bmMsIHNjb3Bl
KQpAQCAtMzg1LDYgKzM4Nyw3IEBAIHZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChC
bG9jayogY29kZUJsb2NrLCBPcGNvZGVJRCBvcGNvZGVJRCwgY29uc3QgSW5zCiAgICAgREVGUyhP
cFRvUHJpbWl0aXZlLCBkc3QpCiAgICAgREVGUyhPcENyZWF0ZVRoaXMsIGRzdCkKICAgICBERUZT
KE9wQ3JlYXRlUHJvbWlzZSwgZHN0KQorICAgIERFRlMoT3BDcmVhdGVHZW5lcmF0b3IsIGRzdCkK
ICAgICBERUZTKE9wTmV3QXJyYXksIGRzdCkKICAgICBERUZTKE9wTmV3QXJyYXlXaXRoU3ByZWFk
LCBkc3QpCiAgICAgREVGUyhPcFNwcmVhZCwgZHN0KQpAQCAtNDY1LDYgKzQ2OCw3IEBAIHZvaWQg
Y29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChCbG9jayogY29kZUJsb2NrLCBPcGNvZGVJRCBv
cGNvZGVJRCwgY29uc3QgSW5zCiAgICAgREVGUyhPcE1vdiwgZHN0KQogICAgIERFRlMoT3BOZXdP
YmplY3QsIGRzdCkKICAgICBERUZTKE9wTmV3UHJvbWlzZSwgZHN0KQorICAgIERFRlMoT3BOZXdH
ZW5lcmF0b3IsIGRzdCkKICAgICBERUZTKE9wVG9UaGlzLCBzcmNEc3QpCiAgICAgREVGUyhPcEdl
dFNjb3BlLCBkc3QpCiAgICAgREVGUyhPcENyZWF0ZURpcmVjdEFyZ3VtZW50cywgZHN0KQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCAyOTQzYjJi
MTAwM2M1ZjhmMWEzMGNlNTY1MjY4NGQ0NDM2ZTc4ZWEzLi4zYTcxOTk2YzVjZDE3OTAxYzY3MDdh
NjI3ZDhhZTlhYzY4YzgyNjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcApAQCAtNTY4LDYgKzU2OCw3IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hD
cmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5r
CiAgICAgICAgIExJTksoT3BQdXRCeUlkKQogICAgICAgICBMSU5LKE9wQ3JlYXRlVGhpcykKICAg
ICAgICAgTElOSyhPcENyZWF0ZVByb21pc2UpCisgICAgICAgIExJTksoT3BDcmVhdGVHZW5lcmF0
b3IpCiAKICAgICAgICAgTElOSyhPcEFkZCkKICAgICAgICAgTElOSyhPcE11bCkKQEAgLTEzMDcs
NiArMTMwOCwxOSBAQCB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVMTEludElubGluZUNhY2hlcygp
CiAgICAgICAgICAgICBjYWNoZVdyaXRlQmFycmllci5jbGVhcigpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9jcmVhdGVfZ2VuZXJhdG9yOiB7CisgICAg
ICAgICAgICBhdXRvJiBtZXRhZGF0YSA9IGN1ckluc3RydWN0aW9uLT5hczxPcENyZWF0ZUdlbmVy
YXRvcj4oKS5tZXRhZGF0YSh0aGlzKTsKKyAgICAgICAgICAgIGF1dG8mIGNhY2hlV3JpdGVCYXJy
aWVyID0gbWV0YWRhdGEubV9jYWNoZWRDYWxsZWU7CisgICAgICAgICAgICBpZiAoIWNhY2hlV3Jp
dGVCYXJyaWVyIHx8IGNhY2hlV3JpdGVCYXJyaWVyLnVudmFsaWRhdGVkR2V0KCkgPT0gSlNDZWxs
OjpzZWVuTXVsdGlwbGVDYWxsZWVPYmplY3RzKCkpCisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICBKU0NlbGwqIGNhY2hlZEZ1bmN0aW9uID0gY2FjaGVXcml0ZUJhcnJpZXIuZ2V0
KCk7CisgICAgICAgICAgICBpZiAodm0uaGVhcC5pc01hcmtlZChjYWNoZWRGdW5jdGlvbikpCisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBpZiAoT3B0aW9uczo6dmVyYm9zZU9T
UigpKQorICAgICAgICAgICAgICAgIGRhdGFMb2dGKCJDbGVhcmluZyBMTEludCBjcmVhdGVfZ2Vu
ZXJhdG9yIHdpdGggY2FjaGVkIGNhbGxlZSAlcC5cbiIsIGNhY2hlZEZ1bmN0aW9uKTsKKyAgICAg
ICAgICAgIGNhY2hlV3JpdGVCYXJyaWVyLmNsZWFyKCk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQogICAgICAgICBjYXNlIG9wX3Jlc29sdmVfc2NvcGU6IHsKICAgICAgICAgICAgIC8v
IFJpZ2h0IG5vdyB0aGlzIGlzbid0IHN0cmljdGx5IG5lY2Vzc2FyeS4gQW55IHN5bWJvbCB0YWJs
ZXMgdGhhdCB0aGlzIHdpbGwgcmVmZXIgdG8KICAgICAgICAgICAgIC8vIGFyZSBmb3Igb3V0ZXIg
ZnVuY3Rpb25zLCBhbmQgd2UgcmVmZXIgdG8gdGhvc2UgZnVuY3Rpb25zIHN0cm9uZ2x5LCBhbmQg
dGhleSByZWZlcgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Nw
ZWN1bGF0ZWRUeXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxh
dGVkVHlwZS5jcHAKaW5kZXggNDJiNjI2YzA1ZWUxZjUxODQ2MDZlYTZkYTk0MGZmMTlhYTIzMDI3
OC4uMzUzZTU2Y2ZjOGViMDk1ZDc5NmZhYWFiZGIxMjU0ZWJiMDNkY2U1YyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3BwCkBAIC02MDks
OSArNjA5LDggQEAgU3BlY3VsYXRlZFR5cGUgc3BlY3VsYXRpb25Gcm9tSlNUeXBlKEpTVHlwZSB0
eXBlKQogICAgIGNhc2UgRGF0YVZpZXdUeXBlOgogICAgICAgICByZXR1cm4gU3BlY0RhdGFWaWV3
T2JqZWN0OwogICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICByZXR1cm4gU3BlY0NlbGw7CiAgICAgfQotICAgIHJldHVybiBTcGVjTm9uZTsKIH0KIAog
U3BlY3VsYXRlZFR5cGUgbGVhc3RVcHBlckJvdW5kT2ZTdHJpY3RseUVxdWl2YWxlbnRTcGVjdWxh
dGlvbnMoU3BlY3VsYXRlZFR5cGUgdHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggZWE3YTRhYzQ2
MDg3NGY4OWYwOWZjNTY5NDBhNDFiMGIxNjExMjYxNy4uZGVjNWNmMGEwY2NiODM2OTMwYjRhODc1
YWEwNjVkYzk3MjY5Y2JhYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTY4Myw3ICs2ODMsMTcgQEAg
Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2Rl
KiBmdW5jdGlvbk5vZGUsIFVubGlua2UKIAogICAgIHN3aXRjaCAocGFyc2VNb2RlKSB7CiAgICAg
Y2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvcldyYXBwZXJGdW5jdGlvbk1vZGU6Ci0gICAg
Y2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvcldyYXBwZXJNZXRob2RNb2RlOgorICAgIGNh
c2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JXcmFwcGVyTWV0aG9kTW9kZTogeworICAgICAg
ICBtX2dlbmVyYXRvclJlZ2lzdGVyID0gYWRkVmFyKCk7CisKKyAgICAgICAgLy8gRklYTUU6IEVt
aXQgdG9fdGhpcyBvbmx5IHdoZW4gR2VuZXJhdG9yIHVzZXMgaXQuCisgICAgICAgIC8vIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1ODYKKyAgICAgICAgZW1pdFRv
VGhpcygpOworCisgICAgICAgIGVtaXRDcmVhdGVHZW5lcmF0b3IobV9nZW5lcmF0b3JSZWdpc3Rl
ciwgJm1fY2FsbGVlUmVnaXN0ZXIpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNl
IFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNHZW5lcmF0b3JXcmFwcGVyTWV0aG9kTW9kZToKICAgICBj
YXNlIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNHZW5lcmF0b3JXcmFwcGVyRnVuY3Rpb25Nb2RlOiB7
CiAgICAgICAgIG1fZ2VuZXJhdG9yUmVnaXN0ZXIgPSBhZGRWYXIoKTsKQEAgLTcxMSw3ICs3MjEs
NyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlv
bk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgICAgICAgICAgZW1pdFRvVGhpcygpOwog
ICAgICAgICB9CiAKLSAgICAgICAgZW1pdE5ld09iamVjdChtX2dlbmVyYXRvclJlZ2lzdGVyKTsK
KyAgICAgICAgZW1pdE5ld0dlbmVyYXRvcihtX2dlbmVyYXRvclJlZ2lzdGVyKTsKICAgICAgICAg
ZW1pdE5ld1Byb21pc2UocHJvbWlzZVJlZ2lzdGVyKCksIG1faXNCdWlsdGluRnVuY3Rpb24pOwog
ICAgICAgICBicmVhazsKICAgICB9CkBAIC04NjYsNyArODc2LDEwIEBAIEJ5dGVjb2RlR2VuZXJh
dG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2Rl
LCBVbmxpbmtlCiAgICAgICAgICAgICAvLyBHZW5lcmF0b3JpZmljYXRpb24gaW5zZXJ0cyBsZXhp
Y2FsIGVudmlyb25tZW50IGNyZWF0aW9uIGlmIG5lY2Vzc2FyeS4gT3RoZXJ3aXNlLCB3ZSBjb252
ZXJ0IGl0IHRvIG9wX21vdiBmcmFtZSwgYHVuZGVmaW5lZGAuCiAgICAgICAgICAgICBPcENyZWF0
ZUdlbmVyYXRvckZyYW1lRW52aXJvbm1lbnQ6OmVtaXQodGhpcywgZ2VuZXJhdG9yRnJhbWVSZWdp
c3RlcigpLCBzY29wZVJlZ2lzdGVyKCksIFZpcnR1YWxSZWdpc3RlciB7IHN5bWJvbFRhYmxlQ29u
c3RhbnRJbmRleCB9LCBhZGRDb25zdGFudFZhbHVlKGpzVW5kZWZpbmVkKCkpKTsKICAgICAgICAg
fQotICAgICAgICBlbWl0UHV0QnlJZChnZW5lcmF0b3JSZWdpc3RlcigpLCBwcm9wZXJ0eU5hbWVz
KCkuYnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSgpLCBnZW5lcmF0b3JG
cmFtZVJlZ2lzdGVyKCkpOworICAgICAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9k
ZTo6QXN5bmNHZW5lcmF0b3JCb2R5TW9kZSkKKyAgICAgICAgICAgIGVtaXRQdXRCeUlkKGdlbmVy
YXRvclJlZ2lzdGVyKCksIHByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JG
cmFtZVByaXZhdGVOYW1lKCksIGdlbmVyYXRvckZyYW1lUmVnaXN0ZXIoKSk7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIGVtaXRQdXRJbnRlcm5hbEZpZWxkKGdlbmVyYXRvclJlZ2lzdGVyKCks
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0dlbmVyYXRvcjo6RmllbGQ6OkZyYW1lKSwgZ2VuZXJh
dG9yRnJhbWVSZWdpc3RlcigpKTsKICAgICB9CiAKICAgICBib29sIHNob3VsZEluaXRpYWxpemVC
bG9ja1Njb3BlZEZ1bmN0aW9ucyA9IGZhbHNlOyAvLyBXZSBnZW5lcmF0ZSB0b3AtbGV2ZWwgZnVu
Y3Rpb24gZGVjbGFyYXRpb25zIGluIDo6Z2VuZXJhdGUoKS4KQEAgLTI3MDYsMjAgKzI3MTksMTIg
QEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dFNldHRlckJ5VmFsKFJlZ2lzdGVySUQq
IGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnQKIAogdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dFB1dEdlbmVyYXRvckZpZWxkcyhSZWdpc3RlcklEKiBuZXh0RnVuY3Rpb24pCiB7Ci0gICAgLy8g
RklYTUU6IEN1cnJlbnRseSwgd2UganVzdCBjcmVhdGUgYW4gb2JqZWN0IGFuZCBzdG9yZSBnZW5l
cmF0b3IgcmVsYXRlZCBmaWVsZHMgYXMgaXRzIHByb3BlcnRpZXMgZm9yIGVhc2UuCi0gICAgLy8g
QnV0IHRvIG1ha2UgaXQgZWZmaWNpZW50LCB3ZSB3aWxsIGludHJvZHVjZSBKU0dlbmVyYXRvciBj
bGFzcywgYWRkIG9wY29kZSBuZXdfZ2VuZXJhdG9yIGFuZCB1c2UgaXRzIEMrKyBmaWVsZHMgaW5z
dGVhZCBvZiB0aGVzZSBwcml2YXRlIHByb3BlcnRpZXMuCi0gICAgLy8gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTU0NQotCi0gICAgZW1pdERpcmVjdFB1dEJ5SWQo
bV9nZW5lcmF0b3JSZWdpc3RlciwgcHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmdlbmVy
YXRvck5leHRQcml2YXRlTmFtZSgpLCBuZXh0RnVuY3Rpb24sIFByb3BlcnR5Tm9kZTo6S25vd25E
aXJlY3QpOworICAgIGVtaXRQdXRJbnRlcm5hbEZpZWxkKG1fZ2VuZXJhdG9yUmVnaXN0ZXIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0dlbmVyYXRvcjo6RmllbGQ6Ok5leHQpLCBuZXh0RnVuY3Rp
b24pOwogCiAgICAgLy8gV2UgZG8gbm90IHN0b3JlICd0aGlzJyBpbiBhcnJvdyBmdW5jdGlvbiB3
aXRoaW4gY29uc3RydWN0b3IsCiAgICAgLy8gYmVjYXVzZSBpdCBtaWdodCBiZSBub3QgaW5pdGlh
bGl6ZWQsIGlmIHN1cGVyIGlzIGNhbGxlZCBsYXRlci4KICAgICBpZiAoIShpc0Rlcml2ZWRDb25z
dHJ1Y3RvckNvbnRleHQoKSAmJiBtX2NvZGVCbG9jay0+cGFyc2VNb2RlKCkgPT0gU291cmNlUGFy
c2VNb2RlOjpBc3luY0Fycm93RnVuY3Rpb25Nb2RlKSkKLSAgICAgICAgZW1pdERpcmVjdFB1dEJ5
SWQobV9nZW5lcmF0b3JSZWdpc3RlciwgcHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmdl
bmVyYXRvclRoaXNQcml2YXRlTmFtZSgpLCAmbV90aGlzUmVnaXN0ZXIsIFByb3BlcnR5Tm9kZTo6
S25vd25EaXJlY3QpOwotCi0gICAgZW1pdERpcmVjdFB1dEJ5SWQobV9nZW5lcmF0b3JSZWdpc3Rl
ciwgcHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclN0YXRlUHJpdmF0ZU5h
bWUoKSwgZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoMCkpLCBQcm9wZXJ0eU5vZGU6Oktub3du
RGlyZWN0KTsKLQotICAgIGVtaXREaXJlY3RQdXRCeUlkKG1fZ2VuZXJhdG9yUmVnaXN0ZXIsIHBy
b3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lKCks
IGVtaXRMb2FkKG51bGxwdHIsIGpzTnVsbCgpKSwgUHJvcGVydHlOb2RlOjpLbm93bkRpcmVjdCk7
CisgICAgICAgIGVtaXRQdXRJbnRlcm5hbEZpZWxkKG1fZ2VuZXJhdG9yUmVnaXN0ZXIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0dlbmVyYXRvcjo6RmllbGQ6OlRoaXMpLCAmbV90aGlzUmVnaXN0
ZXIpOwogfQogCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0QXN5bmNHZW5lcmF0b3JG
aWVsZHMoUmVnaXN0ZXJJRCogbmV4dEZ1bmN0aW9uKQpAQCAtMjg2OCw2ICsyODczLDE4IEBAIFJl
Z2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3UHJvbWlzZShSZWdpc3RlcklEKiBk
c3QsIGJvb2wgaXNJbnRlcm5hbFByCiAgICAgcmV0dXJuIGRzdDsKIH0KIAorUmVnaXN0ZXJJRCog
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDcmVhdGVHZW5lcmF0b3IoUmVnaXN0ZXJJRCogZHN0LCBS
ZWdpc3RlcklEKiBuZXdUYXJnZXQpCit7CisgICAgT3BDcmVhdGVHZW5lcmF0b3I6OmVtaXQodGhp
cywgZHN0LCBuZXdUYXJnZXQpOworICAgIHJldHVybiBkc3Q7Cit9CisKK1JlZ2lzdGVySUQqIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3R2VuZXJhdG9yKFJlZ2lzdGVySUQqIGRzdCkKK3sKKyAg
ICBPcE5ld0dlbmVyYXRvcjo6ZW1pdCh0aGlzLCBkc3QpOworICAgIHJldHVybiBkc3Q7Cit9CisK
IHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRURFpDaGVjayhSZWdpc3RlcklEKiB0YXJnZXQp
CiB7CiAgICAgT3BDaGVja1Rkejo6ZW1pdCh0aGlzLCB0YXJnZXQpOwpAQCAtNDU1NCwxMSArNDU3
MSwxMSBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFlpZWxkKFJlZ2lzdGVy
SUQqIGFyZ3VtZW50LCBKU0FzeW5jR2VuZXJhdG9yRgogCiAgICAgUmVmPExhYmVsPiBub3JtYWxM
YWJlbCA9IG5ld0xhYmVsKCk7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGNvbmRpdGlvbiA9IG5l
d1RlbXBvcmFyeSgpOwotICAgIGVtaXRFcXVhbGl0eU9wPE9wU3RyaWN0ZXE+KGNvbmRpdGlvbi5n
ZXQoKSwgZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCksIGVtaXRMb2FkKG51bGxwdHIsIGpz
TnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRv
clJlc3VtZU1vZGU6Ok5vcm1hbE1vZGUpKSkpOworICAgIGVtaXRFcXVhbGl0eU9wPE9wU3RyaWN0
ZXE+KGNvbmRpdGlvbi5nZXQoKSwgZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCksIGVtaXRM
b2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpH
ZW5lcmF0b3JSZXN1bWVNb2RlOjpOb3JtYWxNb2RlKSkpKTsKICAgICBlbWl0SnVtcElmVHJ1ZShj
b25kaXRpb24uZ2V0KCksIG5vcm1hbExhYmVsLmdldCgpKTsKIAogICAgIFJlZjxMYWJlbD4gdGhy
b3dMYWJlbCA9IG5ld0xhYmVsKCk7Ci0gICAgZW1pdEVxdWFsaXR5T3A8T3BTdHJpY3RlcT4oY29u
ZGl0aW9uLmdldCgpLCBnZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSwgZW1pdExvYWQobnVs
bHB0ciwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6
R2VuZXJhdG9yUmVzdW1lTW9kZTo6VGhyb3dNb2RlKSkpKTsKKyAgICBlbWl0RXF1YWxpdHlPcDxP
cFN0cmljdGVxPihjb25kaXRpb24uZ2V0KCksIGdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3Rlcigp
LCBlbWl0TG9hZChudWxscHRyLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVy
YXRvcjo6R2VuZXJhdG9yUmVzdW1lTW9kZTo6VGhyb3dNb2RlKSkpKTsKICAgICBlbWl0SnVtcElm
VHJ1ZShjb25kaXRpb24uZ2V0KCksIHRocm93TGFiZWwuZ2V0KCkpOwogICAgIC8vIFJldHVybi4K
ICAgICB7CkBAIC00NjY2LDEwICs0NjgzLDEwIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0RGVsZWdhdGVZaWVsZChSZWdpc3RlcklEKiBhcmd1bWVudCwgVGhyb3dhYmxlCiAg
ICAgICAgICAgICAgICAgUmVmPExhYmVsPiByZXR1cm5MYWJlbCA9IG5ld0xhYmVsKCk7CiAgICAg
ICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gY29u
ZGl0aW9uID0gbmV3VGVtcG9yYXJ5KCk7Ci0gICAgICAgICAgICAgICAgICAgIGVtaXRFcXVhbGl0
eU9wPE9wU3RyaWN0ZXE+KGNvbmRpdGlvbi5nZXQoKSwgZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lz
dGVyKCksIGVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpT
R2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvclJlc3VtZU1vZGU6Ok5vcm1hbE1vZGUpKSkpOwor
ICAgICAgICAgICAgICAgICAgICBlbWl0RXF1YWxpdHlPcDxPcFN0cmljdGVxPihjb25kaXRpb24u
Z2V0KCksIGdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3RlcigpLCBlbWl0TG9hZChudWxscHRyLCBq
c051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9yUmVzdW1l
TW9kZTo6Tm9ybWFsTW9kZSkpKSk7CiAgICAgICAgICAgICAgICAgICAgIGVtaXRKdW1wSWZUcnVl
KGNvbmRpdGlvbi5nZXQoKSwgbm9ybWFsTGFiZWwuZ2V0KCkpOwogCi0gICAgICAgICAgICAgICAg
ICAgIGVtaXRFcXVhbGl0eU9wPE9wU3RyaWN0ZXE+KGNvbmRpdGlvbi5nZXQoKSwgZ2VuZXJhdG9y
UmVzdW1lTW9kZVJlZ2lzdGVyKCksIGVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0YXRpY19j
YXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvclJlc3VtZU1vZGU6OlJl
dHVybk1vZGUpKSkpOworICAgICAgICAgICAgICAgICAgICBlbWl0RXF1YWxpdHlPcDxPcFN0cmlj
dGVxPihjb25kaXRpb24uZ2V0KCksIGdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3RlcigpLCBlbWl0
TG9hZChudWxscHRyLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6
R2VuZXJhdG9yUmVzdW1lTW9kZTo6UmV0dXJuTW9kZSkpKSk7CiAgICAgICAgICAgICAgICAgICAg
IGVtaXRKdW1wSWZUcnVlKGNvbmRpdGlvbi5nZXQoKSwgcmV0dXJuTGFiZWwuZ2V0KCkpOwogCiAg
ICAgICAgICAgICAgICAgICAgIC8vIEZhbGx0aHJvdWdoIHRvIFRocm93TW9kZS4KQEAgLTQ3NzEs
NyArNDc4OCwxMCBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlbGVnYXRl
WWllbGQoUmVnaXN0ZXJJRCogYXJndW1lbnQsIFRocm93YWJsZQogdm9pZCBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdEdlbmVyYXRvclN0YXRlQ2hhbmdlKGludDMyX3Qgc3RhdGUpCiB7CiAgICAgUmVn
aXN0ZXJJRCogY29tcGxldGVkU3RhdGUgPSBlbWl0TG9hZChudWxscHRyLCBqc051bWJlcihzdGF0
ZSkpOwotICAgIGVtaXRQdXRCeUlkKGdlbmVyYXRvclJlZ2lzdGVyKCksIHByb3BlcnR5TmFtZXMo
KS5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JTdGF0ZVByaXZhdGVOYW1lKCksIGNvbXBsZXRlZFN0
YXRlKTsKKyAgICBpZiAobV9jb2RlQmxvY2stPnBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9k
ZTo6QXN5bmNHZW5lcmF0b3JCb2R5TW9kZSkKKyAgICAgICAgZW1pdFB1dEJ5SWQoZ2VuZXJhdG9y
UmVnaXN0ZXIoKSwgcHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclN0YXRl
UHJpdmF0ZU5hbWUoKSwgY29tcGxldGVkU3RhdGUpOworICAgIGVsc2UKKyAgICAgICAgZW1pdFB1
dEludGVybmFsRmllbGQoZ2VuZXJhdG9yUmVnaXN0ZXIoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTR2VuZXJhdG9yOjpGaWVsZDo6U3RhdGUpLCBjb21wbGV0ZWRTdGF0ZSk7CiB9CiAKIGJvb2wg
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRKdW1wVmlhRmluYWxseUlmTmVlZGVkKGludCB0YXJnZXRM
YWJlbFNjb3BlRGVwdGgsIExhYmVsJiBqdW1wVGFyZ2V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IDk0ZWVi
MTMyNjEwNmZmNmRkY2Q3NDkzMWRlYTBhYjI5MTk0ZGRjYzcuLjdhNWYxZDRkZThlMWZjMTI4OTdi
MzdmMzQ2N2ZkNTNkM2QzN2RiOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTM1LDcgKzM1LDcgQEAKICNp
bmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpTQXN5bmNHZW5lcmF0b3JGdW5jdGlv
bi5oIgogI2luY2x1ZGUgIkpTQmlnSW50LmgiCi0jaW5jbHVkZSAiSlNHZW5lcmF0b3JGdW5jdGlv
bi5oIgorI2luY2x1ZGUgIkpTR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNUZW1wbGF0ZU9iamVj
dERlc2NyaXB0b3IuaCIKICNpbmNsdWRlICJMYWJlbC5oIgogI2luY2x1ZGUgIkxhYmVsU2NvcGUu
aCIKQEAgLTcyNCwxMiArNzI0LDE0IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIFJlZ2lz
dGVySUQqIGVtaXRDcmVhdGVUaGlzKFJlZ2lzdGVySUQqIGRzdCk7CiAgICAgICAgIFJlZ2lzdGVy
SUQqIGVtaXRDcmVhdGVQcm9taXNlKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogbmV3VGFy
Z2V0LCBib29sIGlzSW50ZXJuYWxQcm9taXNlKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdENy
ZWF0ZUdlbmVyYXRvcihSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIG5ld1RhcmdldCk7CiAg
ICAgICAgIHZvaWQgZW1pdFREWkNoZWNrKFJlZ2lzdGVySUQqIHRhcmdldCk7CiAgICAgICAgIGJv
b2wgbmVlZHNURFpDaGVjayhjb25zdCBWYXJpYWJsZSYpOwogICAgICAgICB2b2lkIGVtaXRURFpD
aGVja0lmTmVjZXNzYXJ5KGNvbnN0IFZhcmlhYmxlJiwgUmVnaXN0ZXJJRCogdGFyZ2V0LCBSZWdp
c3RlcklEKiBzY29wZSk7CiAgICAgICAgIHZvaWQgbGlmdFREWkNoZWNrSWZQb3NzaWJsZShjb25z
dCBWYXJpYWJsZSYpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3T2JqZWN0KFJlZ2lzdGVy
SUQqIGRzdCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdQcm9taXNlKFJlZ2lzdGVySUQq
IGRzdCwgYm9vbCBpc0ludGVybmFsUHJvbWlzZSk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRO
ZXdHZW5lcmF0b3IoUmVnaXN0ZXJJRCogZHN0KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5l
d0FycmF5KFJlZ2lzdGVySUQqIGRzdCwgRWxlbWVudE5vZGUqLCB1bnNpZ25lZCBsZW5ndGgsIElu
ZGV4aW5nVHlwZSByZWNvbW1lbmRlZEluZGV4aW5nVHlwZSk7IC8vIHN0b3BzIGF0IGZpcnN0IGVs
aXNpb24KICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld0FycmF5QnVmZmVyKFJlZ2lzdGVySUQq
IGRzdCwgSlNJbW11dGFibGVCdXR0ZXJmbHkqLCBJbmRleGluZ1R5cGUgcmVjb21tZW5kZWRJbmRl
eGluZ1R5cGUpOwogICAgICAgICAvLyBGSVhNRTogbmV3X2FycmF5X3dpdGhfc3ByZWFkIHNob3Vs
ZCB1c2UgYW4gYXJyYXkgYWxsb2NhdGlvbiBwcm9maWxlIGFuZCB0YWtlIGEgcmVjb21tZW5kZWRJ
bmRleGluZ1R5cGUKQEAgLTg2Niw2ICs4NjgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
UmVnaXN0ZXJJRCogZW1pdFRvSW5kZXhTdHJpbmcoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklE
KiBpbmRleCk7CiAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdElzQ2VsbFdpdGhUeXBlKFJlZ2lz
dGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjLCBKU1R5cGUpOworICAgICAgICBSZWdpc3RlcklE
KiBlbWl0SXNHZW5lcmF0b3IoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMpIHsgcmV0
dXJuIGVtaXRJc0NlbGxXaXRoVHlwZShkc3QsIHNyYywgSlNHZW5lcmF0b3JUeXBlKTsgfQogICAg
ICAgICBSZWdpc3RlcklEKiBlbWl0SXNKU0FycmF5KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJ
RCogc3JjKSB7IHJldHVybiBlbWl0SXNDZWxsV2l0aFR5cGUoZHN0LCBzcmMsIEFycmF5VHlwZSk7
IH0KICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdElzUHJvbWlzZShSZWdpc3RlcklEKiBkc3QsIFJl
Z2lzdGVySUQqIHNyYykgeyByZXR1cm4gZW1pdElzQ2VsbFdpdGhUeXBlKGRzdCwgc3JjLCBKU1By
b21pc2VUeXBlKTsgfQogICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXNQcm94eU9iamVjdChSZWdp
c3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYykgeyByZXR1cm4gZW1pdElzQ2VsbFdpdGhUeXBl
KGRzdCwgc3JjLCBQcm94eU9iamVjdFR5cGUpOyB9CkBAIC05ODgsMTAgKzk5MSwxMCBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0R2VuZXJhdG9yU3RhdGVDaGFuZ2UoaW50MzJf
dCBzdGF0ZSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRZaWVsZChSZWdpc3RlcklEKiBhcmd1
bWVudCwgSlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uOjpBc3luY0dlbmVyYXRvclN1c3BlbmRSZWFz
b24gPSBKU0FzeW5jR2VuZXJhdG9yRnVuY3Rpb246OkFzeW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNv
bjo6WWllbGQpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0RGVsZWdhdGVZaWVsZChSZWdpc3Rl
cklEKiBhcmd1bWVudCwgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqKTsKLSAgICAgICAgUmVnaXN0
ZXJJRCogZ2VuZXJhdG9yU3RhdGVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbc3Rh
dGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yQXJndW1lbnQ6
OlN0YXRlKV07IH0KLSAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yVmFsdWVSZWdpc3Rlcigp
IHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JG
dW5jdGlvbjo6R2VuZXJhdG9yQXJndW1lbnQ6OlZhbHVlKV07IH0KLSAgICAgICAgUmVnaXN0ZXJJ
RCogZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1fcGFyYW1ldGVyc1tz
dGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JBcmd1bWVu
dDo6UmVzdW1lTW9kZSldOyB9Ci0gICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRvckZyYW1lUmVn
aXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJzW3N0YXRpY19jYXN0PGludDMyX3Q+KEpTR2Vu
ZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvckFyZ3VtZW50OjpGcmFtZSldOyB9CisgICAgICAgIFJl
Z2lzdGVySUQqIGdlbmVyYXRvclN0YXRlUmVnaXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJz
W3N0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpHZW5lcmF0b3JBcmd1bWVudDo6U3Rh
dGUpXTsgfQorICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JWYWx1ZVJlZ2lzdGVyKCkgeyBy
ZXR1cm4gJm1fcGFyYW1ldGVyc1tzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6R2Vu
ZXJhdG9yQXJndW1lbnQ6OlZhbHVlKV07IH0KKyAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9y
UmVzdW1lTW9kZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1fcGFyYW1ldGVyc1tzdGF0aWNfY2FzdDxp
bnQzMl90PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9yQXJndW1lbnQ6OlJlc3VtZU1vZGUpXTsgfQor
ICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JGcmFtZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1f
cGFyYW1ldGVyc1tzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9yQXJn
dW1lbnQ6OkZyYW1lKV07IH0KIAogICAgICAgICBDb2RlVHlwZSBjb2RlVHlwZSgpIGNvbnN0IHsg
cmV0dXJuIG1fY29kZVR5cGU7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCmluZGV4IDQ4OTA5ZWY5YjA0ZDE1YWRjNGEwMmQy
NmM3NWY4Y2M1YzljMTUzYjEuLjg3NzhmYjY2NDY5NTk5Y2UyNWIwYjY4OWQwZDM5MGVhMzA5YTZk
YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXND
b2RlZ2VuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVz
Q29kZWdlbi5jcHAKQEAgLTM0LDcgKzM0LDcgQEAKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRl
ICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgotI2luY2x1ZGUgIkpTR2Vu
ZXJhdG9yRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0dlbmVyYXRvci5oIgogI2luY2x1ZGUgIkpT
R2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNJbW11dGFibGVCdXR0ZXJmbHkuaCIKICNpbmNs
dWRlICJMYWJlbFNjb3BlLmgiCkBAIC0xMDIwLDYgKzEwMjAsMjAgQEAgc3RhdGljIEpTUHJvbWlz
ZTo6RmllbGQgcHJvbWlzZUludGVybmFsRmllbGRJbmRleChCeXRlY29kZUludHJpbnNpY05vZGUq
IG5vZGUpCiAgICAgcmV0dXJuIEpTUHJvbWlzZTo6RmllbGQ6OkZsYWdzOwogfQogCitzdGF0aWMg
SlNHZW5lcmF0b3I6OkZpZWxkIGdlbmVyYXRvckludGVybmFsRmllbGRJbmRleChCeXRlY29kZUlu
dHJpbnNpY05vZGUqIG5vZGUpCit7CisgICAgaWYgKG5vZGUtPmVtaXR0ZXIoKSA9PSAmQnl0ZWNv
ZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19nZW5lcmF0b3JGaWVsZFN0YXRlKQorICAg
ICAgICByZXR1cm4gSlNHZW5lcmF0b3I6OkZpZWxkOjpTdGF0ZTsKKyAgICBpZiAobm9kZS0+ZW1p
dHRlcigpID09ICZCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dlbmVyYXRv
ckZpZWxkTmV4dCkKKyAgICAgICAgcmV0dXJuIEpTR2VuZXJhdG9yOjpGaWVsZDo6TmV4dDsKKyAg
ICBpZiAobm9kZS0+ZW1pdHRlcigpID09ICZCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50
cmluc2ljX2dlbmVyYXRvckZpZWxkVGhpcykKKyAgICAgICAgcmV0dXJuIEpTR2VuZXJhdG9yOjpG
aWVsZDo6VGhpczsKKyAgICBpZiAobm9kZS0+ZW1pdHRlcigpID09ICZCeXRlY29kZUludHJpbnNp
Y05vZGU6OmVtaXRfaW50cmluc2ljX2dlbmVyYXRvckZpZWxkRnJhbWUpCisgICAgICAgIHJldHVy
biBKU0dlbmVyYXRvcjo6RmllbGQ6OkZyYW1lOworICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgcmV0dXJuIEpTR2VuZXJhdG9yOjpGaWVsZDo6U3RhdGU7Cit9CisKIFJlZ2lz
dGVySUQqIEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfZ2V0UHJvbWlzZUlu
dGVybmFsRmllbGQoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0
KQogewogICAgIEFyZ3VtZW50TGlzdE5vZGUqIG5vZGUgPSBtX2FyZ3MtPm1fbGlzdE5vZGU7CkBA
IC0xMDMzLDYgKzEwNDcsMTkgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjpl
bWl0X2ludHJpbnNpY19nZXRQcm9taXNlSW50ZXJuYWxGaWVsZChCeXRlY28KICAgICByZXR1cm4g
Z2VuZXJhdG9yLmVtaXRHZXRJbnRlcm5hbEZpZWxkKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9u
KGRzdCksIGJhc2UuZ2V0KCksIGluZGV4KTsKIH0KIAorUmVnaXN0ZXJJRCogQnl0ZWNvZGVJbnRy
aW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19nZXRHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKEJ5dGVj
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK3sKKyAgICBBcmd1bWVu
dExpc3ROb2RlKiBub2RlID0gbV9hcmdzLT5tX2xpc3ROb2RlOworICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiBiYXNlID0gZ2VuZXJhdG9yLmVtaXROb2RlKG5vZGUpOworICAgIG5vZGUgPSBub2RlLT5t
X25leHQ7CisgICAgUkVMRUFTRV9BU1NFUlQobm9kZS0+bV9leHByLT5pc0J5dGVjb2RlSW50cmlu
c2ljTm9kZSgpKTsKKyAgICB1bnNpZ25lZCBpbmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihn
ZW5lcmF0b3JJbnRlcm5hbEZpZWxkSW5kZXgoc3RhdGljX2Nhc3Q8Qnl0ZWNvZGVJbnRyaW5zaWNO
b2RlKj4obm9kZS0+bV9leHByKSkpOworICAgIEFTU0VSVChpbmRleCA8IEpTR2VuZXJhdG9yOjpu
dW1iZXJPZkludGVybmFsRmllbGRzKTsKKyAgICBBU1NFUlQoIW5vZGUtPm1fbmV4dCk7CisKKyAg
ICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRHZXRJbnRlcm5hbEZpZWxkKGdlbmVyYXRvci5maW5hbERl
c3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCksIGluZGV4KTsKK30KKwogUmVnaXN0ZXJJRCogQnl0
ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19hcmd1bWVudChCeXRlY29kZUdlbmVy
YXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7CiAgICAgQXJndW1lbnRMaXN0Tm9k
ZSogbm9kZSA9IG1fYXJncy0+bV9saXN0Tm9kZTsKQEAgLTExMTgsNiArMTE0NSwyMiBAQCBSZWdp
c3RlcklEKiBCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX3B1dFByb21pc2VJ
bnRlcm5hbEZpZWxkKEJ5dGVjbwogICAgIHJldHVybiBnZW5lcmF0b3IubW92ZShkc3QsIGdlbmVy
YXRvci5lbWl0UHV0SW50ZXJuYWxGaWVsZChiYXNlLmdldCgpLCBpbmRleCwgdmFsdWUuZ2V0KCkp
KTsKIH0KIAorUmVnaXN0ZXJJRCogQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNp
Y19wdXRHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Is
IFJlZ2lzdGVySUQqIGRzdCkKK3sKKyAgICBBcmd1bWVudExpc3ROb2RlKiBub2RlID0gbV9hcmdz
LT5tX2xpc3ROb2RlOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gZ2VuZXJhdG9yLmVt
aXROb2RlKG5vZGUpOworICAgIG5vZGUgPSBub2RlLT5tX25leHQ7CisgICAgUkVMRUFTRV9BU1NF
UlQobm9kZS0+bV9leHByLT5pc0J5dGVjb2RlSW50cmluc2ljTm9kZSgpKTsKKyAgICB1bnNpZ25l
ZCBpbmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihnZW5lcmF0b3JJbnRlcm5hbEZpZWxkSW5k
ZXgoc3RhdGljX2Nhc3Q8Qnl0ZWNvZGVJbnRyaW5zaWNOb2RlKj4obm9kZS0+bV9leHByKSkpOwor
ICAgIEFTU0VSVChpbmRleCA8IEpTR2VuZXJhdG9yOjpudW1iZXJPZkludGVybmFsRmllbGRzKTsK
KyAgICBub2RlID0gbm9kZS0+bV9uZXh0OworICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9
IGdlbmVyYXRvci5lbWl0Tm9kZShub2RlKTsKKworICAgIEFTU0VSVCghbm9kZS0+bV9uZXh0KTsK
KworICAgIHJldHVybiBnZW5lcmF0b3IubW92ZShkc3QsIGdlbmVyYXRvci5lbWl0UHV0SW50ZXJu
YWxGaWVsZChiYXNlLmdldCgpLCBpbmRleCwgdmFsdWUuZ2V0KCkpKTsKK30KKwogUmVnaXN0ZXJJ
RCogQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY190YWlsQ2FsbEZvcndhcmRB
cmd1bWVudHMoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQog
ewogICAgIEFyZ3VtZW50TGlzdE5vZGUqIG5vZGUgPSBtX2FyZ3MtPm1fbGlzdE5vZGU7CkBAIC0x
MjMxLDYgKzEyNzQsMTUgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0
X2ludHJpbnNpY19pZFdpdGhQcm9maWxlKEJ5dGVjb2RlR2VuZXJhdG8KIAogICAgIHJldHVybiBn
ZW5lcmF0b3IubW92ZShkc3QsIGdlbmVyYXRvci5lbWl0SWRXaXRoUHJvZmlsZShpZFZhbHVlLmdl
dCgpLCBzcGVjdWxhdGlvbikpOwogfQorCitSZWdpc3RlcklEKiBCeXRlY29kZUludHJpbnNpY05v
ZGU6OmVtaXRfaW50cmluc2ljX2lzR2VuZXJhdG9yKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3ImIGdl
bmVyYXRvciwgSlNDOjpSZWdpc3RlcklEKiBkc3QpCit7CisgICAgQXJndW1lbnRMaXN0Tm9kZSog
bm9kZSA9IG1fYXJncy0+bV9saXN0Tm9kZTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3JjID0g
Z2VuZXJhdG9yLmVtaXROb2RlKG5vZGUpOworICAgIEFTU0VSVCghbm9kZS0+bV9uZXh0KTsKKwor
ICAgIHJldHVybiBnZW5lcmF0b3IubW92ZShkc3QsIGdlbmVyYXRvci5lbWl0SXNHZW5lcmF0b3Io
Z2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBzcmMuZ2V0KCkpKTsKK30KICAgICAKIFJl
Z2lzdGVySUQqIEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfaXNKU0FycmF5
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgSlNDOjpSZWdpc3RlcklEKiBkc3Qp
CiB7CkBAIC0zOTkzLDcgKzQwNDUsNyBAQCB2b2lkIEZ1bmN0aW9uTm9kZTo6ZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqKQogICAgICAgICBnZW5l
cmF0b3IubW92ZShhcmdzLmFyZ3VtZW50UmVnaXN0ZXIoYXJndW1lbnRDb3VudCsrKSwgZ2VuZXJh
dG9yLmdlbmVyYXRvclJlZ2lzdGVyKCkpOwogICAgICAgICBnZW5lcmF0b3IubW92ZShhcmdzLmFy
Z3VtZW50UmVnaXN0ZXIoYXJndW1lbnRDb3VudCsrKSwgZ2VuZXJhdG9yLnByb21pc2VSZWdpc3Rl
cigpKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGFyZ3MuYXJndW1lbnRSZWdpc3Rlcihh
cmd1bWVudENvdW50KyspLCBqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRM
b2FkKGFyZ3MuYXJndW1lbnRSZWdpc3Rlcihhcmd1bWVudENvdW50KyspLCBqc051bWJlcihzdGF0
aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JSZXN1bWVNb2Rl
OjpOb3JtYWxNb2RlKSkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdExvYWQoYXJncy5hcmd1bWVu
dFJlZ2lzdGVyKGFyZ3VtZW50Q291bnQrKyksIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+
KEpTR2VuZXJhdG9yOjpHZW5lcmF0b3JSZXN1bWVNb2RlOjpOb3JtYWxNb2RlKSkpOwogICAgICAg
ICAvLyBKU1RleHRQb3NpdGlvbihpbnQgX2xpbmUsIGludCBfb2Zmc2V0LCBpbnQgX2xpbmVTdGFy
dE9mZnNldCkKICAgICAgICAgSlNUZXh0UG9zaXRpb24gZGl2b3QoZmlyc3RMaW5lKCksIHN0YXJ0
T2Zmc2V0KCksIGxpbmVTdGFydE9mZnNldCgpKTsKIApAQCAtNDAxMCwxMSArNDA2MiwxMSBAQCB2
b2lkIEZ1bmN0aW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0
b3IsIFJlZ2lzdGVySUQqKQogICAgICAgICBSZWY8TGFiZWw+IGdlbmVyYXRvckJvZHlMYWJlbCA9
IGdlbmVyYXRvci5uZXdMYWJlbCgpOwogICAgICAgICB7CiAgICAgICAgICAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gY29uZGl0aW9uID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwotICAgICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRFcXVhbGl0eU9wPE9wU3RyaWN0ZXE+KGNvbmRpdGlvbi5nZXQoKSwg
Z2VuZXJhdG9yLmdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3RlcigpLCBnZW5lcmF0b3IuZW1pdExv
YWQobnVsbHB0ciwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5j
dGlvbjo6R2VuZXJhdG9yUmVzdW1lTW9kZTo6Tm9ybWFsTW9kZSkpKSk7CisgICAgICAgICAgICBn
ZW5lcmF0b3IuZW1pdEVxdWFsaXR5T3A8T3BTdHJpY3RlcT4oY29uZGl0aW9uLmdldCgpLCBnZW5l
cmF0b3IuZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCksIGdlbmVyYXRvci5lbWl0TG9hZChu
dWxscHRyLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6R2VuZXJh
dG9yUmVzdW1lTW9kZTo6Tm9ybWFsTW9kZSkpKSk7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1p
dEp1bXBJZlRydWUoY29uZGl0aW9uLmdldCgpLCBnZW5lcmF0b3JCb2R5TGFiZWwuZ2V0KCkpOwog
CiAgICAgICAgICAgICBSZWY8TGFiZWw+IHRocm93TGFiZWwgPSBnZW5lcmF0b3IubmV3TGFiZWwo
KTsKLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0RXF1YWxpdHlPcDxPcFN0cmljdGVxPihjb25k
aXRpb24uZ2V0KCksIGdlbmVyYXRvci5nZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSwgZ2Vu
ZXJhdG9yLmVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpT
R2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvclJlc3VtZU1vZGU6OlRocm93TW9kZSkpKSk7Cisg
ICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEVxdWFsaXR5T3A8T3BTdHJpY3RlcT4oY29uZGl0aW9u
LmdldCgpLCBnZW5lcmF0b3IuZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCksIGdlbmVyYXRv
ci5lbWl0TG9hZChudWxscHRyLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVy
YXRvcjo6R2VuZXJhdG9yUmVzdW1lTW9kZTo6VGhyb3dNb2RlKSkpKTsKICAgICAgICAgICAgIGdl
bmVyYXRvci5lbWl0SnVtcElmVHJ1ZShjb25kaXRpb24uZ2V0KCksIHRocm93TGFiZWwuZ2V0KCkp
OwogCiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFJldHVybihnZW5lcmF0b3IuZ2VuZXJhdG9y
VmFsdWVSZWdpc3RlcigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAppbmRleCA5YjZiZjAzNTk3ODc5N2Ez
ZTMzYTRjODQ5NTE0MDMxNDBjNTMxZDEzLi5lMzA3MWM1YmYzMmVkMTFmOTVmZTExN2UzZjM2MDhk
MWFiNGQ3ODFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3Ry
YWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVk
ZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSGFzaE1hcEltcGwuaCIKICNpbmNsdWRlICJK
SVRPcGVyYXRpb25zLmgiCisjaW5jbHVkZSAiSlNHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJKU0lt
bXV0YWJsZUJ1dHRlcmZseS5oIgogI2luY2x1ZGUgIkpTSW50ZXJuYWxQcm9taXNlLmgiCiAjaW5j
bHVkZSAiSlNJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5oIgpAQCAtMTU2NSw2ICsxNTY2LDEz
IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVF
ZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgICAgICBicmVhazsKIAogICAgICAg
ICBjYXNlIElzQ2VsbFdpdGhUeXBlOgorICAgICAgICAgICAgaWYgKG5vZGUtPnNwZWN1bGF0ZWRU
eXBlRm9yUXVlcnkoKSA9PSBTcGVjQ2VsbCkgeworICAgICAgICAgICAgICAgIGlmICghKGNoaWxk
Lm1fdHlwZSAmIFNwZWNDZWxsKSkgeworICAgICAgICAgICAgICAgICAgICBzZXRDb25zdGFudChu
b2RlLCBqc0Jvb2xlYW4oZmFsc2UpKTsKKyAgICAgICAgICAgICAgICAgICAgY29uc3RhbnRXYXNT
ZXQgPSB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICghKGNoaWxkLm1fdHlwZSAmIH5ub2RlLT5zcGVj
dWxhdGVkVHlwZUZvclF1ZXJ5KCkpKSB7CiAgICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9k
ZSwganNCb29sZWFuKHRydWUpKTsKICAgICAgICAgICAgICAgICBjb25zdGFudFdhc1NldCA9IHRy
dWU7CkBAIC0yNjc1LDEwICsyNjgzLDQyIEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0
cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAg
ICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgQ3JlYXRlR2VuZXJhdG9yOiB7CisgICAgICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICBpZiAoSlNWYWx1ZSBiYXNlID0gZm9yTm9k
ZShub2RlLT5jaGlsZDEoKSkubV92YWx1ZSkgeworICAgICAgICAgICAgaWYgKGF1dG8qIGZ1bmN0
aW9uID0ganNEeW5hbWljQ2FzdDxKU0Z1bmN0aW9uKj4obV9ncmFwaC5tX3ZtLCBiYXNlKSkgewor
ICAgICAgICAgICAgICAgIGlmIChGdW5jdGlvblJhcmVEYXRhKiByYXJlRGF0YSA9IGZ1bmN0aW9u
LT5yYXJlRGF0YSgpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChyYXJlRGF0YS0+YWxsb2Nh
dGlvblByb2ZpbGVXYXRjaHBvaW50U2V0KCkuaXNTdGlsbFZhbGlkKCkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gcmFyZURhdGEtPmludGVybmFsRnVu
Y3Rpb25BbGxvY2F0aW9uU3RydWN0dXJlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
c3RydWN0dXJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgc3RydWN0dXJlLT5jbGFz
c0luZm8oKSA9PSBKU0dlbmVyYXRvcjo6aW5mbygpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJiYgc3RydWN0dXJlLT5nbG9iYWxPYmplY3QoKSA9PSBnbG9iYWxPYmplY3QKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAmJiByYXJlRGF0YS0+YWxsb2NhdGlvblByb2ZpbGVXYXRjaHBv
aW50U2V0KCkuaXNTdGlsbFZhbGlkKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
X2dyYXBoLmZyZWV6ZShyYXJlRGF0YSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9n
cmFwaC53YXRjaHBvaW50cygpLmFkZExhemlseShyYXJlRGF0YS0+YWxsb2NhdGlvblByb2ZpbGVX
YXRjaHBvaW50U2V0KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fc3RhdGUuc2V0
Rm91bmRDb25zdGFudHModHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkRm9s
ZENsb2JiZXJXb3JsZCgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEZvck5vZGUo
bm9kZSwgc3RydWN0dXJlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBjbG9iYmVyV29ybGQo
KTsKKyAgICAgICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY09iamVjdE90aGVyKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBOZXdQcm9taXNlOgogICAgICAgICBBU1NFUlQo
ISFub2RlLT5zdHJ1Y3R1cmUoKS5nZXQoKSk7CiAgICAgICAgIHNldEZvck5vZGUobm9kZSwgbm9k
ZS0+c3RydWN0dXJlKCkpOwogICAgICAgICBicmVhazsKKworICAgIGNhc2UgTmV3R2VuZXJhdG9y
OgorICAgICAgICBBU1NFUlQoISFub2RlLT5zdHJ1Y3R1cmUoKS5nZXQoKSk7CisgICAgICAgIHNl
dEZvck5vZGUobm9kZSwgbm9kZS0+c3RydWN0dXJlKCkpOworICAgICAgICBicmVhazsKICAgICAg
ICAgCiAgICAgY2FzZSBOZXdPYmplY3Q6CiAgICAgICAgIEFTU0VSVCghIW5vZGUtPnN0cnVjdHVy
ZSgpLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0
ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHAKaW5kZXggMmM4MmIxZTkzYmQxZmQ1MmNlZDU1MDRhNDFiYWVjOWE1ZDliOTM5Mi4u
M2U1NDI4MWUzNzYxZGQwMDBjYjRjNmZiYTEwZDAxYjdmNzJiOWE4YSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTQ5MzksNiArNDkz
OSw1MiBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQog
ICAgICAgICAgICAgTkVYVF9PUENPREUob3BfY3JlYXRlX3Byb21pc2UpOwogICAgICAgICB9CiAK
KyAgICAgICAgY2FzZSBvcF9jcmVhdGVfZ2VuZXJhdG9yOiB7CisgICAgICAgICAgICBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY3VycmVudE5v
ZGVPcmlnaW4oKS5zZW1hbnRpYyk7CisgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVu
dEluc3RydWN0aW9uLT5hczxPcENyZWF0ZUdlbmVyYXRvcj4oKTsKKyAgICAgICAgICAgIE5vZGUq
IGNhbGxlZSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9jYWxsZWUpKTsKKworICAg
ICAgICAgICAgYm9vbCBhbHJlYWR5RW1pdHRlZCA9IGZhbHNlOworCisgICAgICAgICAgICBKU0Z1
bmN0aW9uKiBmdW5jdGlvbiA9IGNhbGxlZS0+ZHluYW1pY0Nhc3RDb25zdGFudDxKU0Z1bmN0aW9u
Kj4oKm1fdm0pOworICAgICAgICAgICAgaWYgKCFmdW5jdGlvbikgeworICAgICAgICAgICAgICAg
IEpTQ2VsbCogY2FjaGVkRnVuY3Rpb24gPSBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spLm1f
Y2FjaGVkQ2FsbGVlLnVudmFsaWRhdGVkR2V0KCk7CisgICAgICAgICAgICAgICAgaWYgKGNhY2hl
ZEZ1bmN0aW9uCisgICAgICAgICAgICAgICAgICAgICYmIGNhY2hlZEZ1bmN0aW9uICE9IEpTQ2Vs
bDo6c2Vlbk11bHRpcGxlQ2FsbGVlT2JqZWN0cygpCisgICAgICAgICAgICAgICAgICAgICYmICFt
X2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4
LCBCYWRDZWxsKSkgeworICAgICAgICAgICAgICAgICAgICBBU1NFUlQoY2FjaGVkRnVuY3Rpb24t
PmluaGVyaXRzPEpTRnVuY3Rpb24+KCptX3ZtKSk7CisKKyAgICAgICAgICAgICAgICAgICAgRnJv
emVuVmFsdWUqIGZyb3plbiA9IG1fZ3JhcGguZnJlZXplKGNhY2hlZEZ1bmN0aW9uKTsKKyAgICAg
ICAgICAgICAgICAgICAgYWRkVG9HcmFwaChDaGVja0NlbGwsIE9wSW5mbyhmcm96ZW4pLCBjYWxs
ZWUpOworCisgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uID0gc3RhdGljX2Nhc3Q8SlNGdW5j
dGlvbio+KGNhY2hlZEZ1bmN0aW9uKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIGlmIChmdW5jdGlvbikgeworICAgICAgICAgICAgICAgIGlmIChGdW5j
dGlvblJhcmVEYXRhKiByYXJlRGF0YSA9IGZ1bmN0aW9uLT5yYXJlRGF0YSgpKSB7CisgICAgICAg
ICAgICAgICAgICAgIGlmIChyYXJlRGF0YS0+YWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50U2V0
KCkuaXNTdGlsbFZhbGlkKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFN0cnVjdHVyZSog
c3RydWN0dXJlID0gcmFyZURhdGEtPmludGVybmFsRnVuY3Rpb25BbGxvY2F0aW9uU3RydWN0dXJl
KCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RydWN0dXJlCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJiYgc3RydWN0dXJlLT5jbGFzc0luZm8oKSA9PSBKU0dlbmVyYXRvcjo6
aW5mbygpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgc3RydWN0dXJlLT5nbG9iYWxP
YmplY3QoKSA9PSBnbG9iYWxPYmplY3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBy
YXJlRGF0YS0+YWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50U2V0KCkuaXNTdGlsbFZhbGlkKCkp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLmZyZWV6ZShyYXJlRGF0YSk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC53YXRjaHBvaW50cygpLmFkZExh
emlseShyYXJlRGF0YS0+YWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50U2V0KCkpOworCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIGNhbGxlZSBpcyBzdGlsbCBsaXZlIHVwIHRv
IHRoaXMgcG9pbnQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChQaGFu
dG9tLCBjYWxsZWUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldChWaXJ0dWFsUmVn
aXN0ZXIoYnl0ZWNvZGUubV9kc3QpLCBhZGRUb0dyYXBoKE5ld0dlbmVyYXRvciwgT3BJbmZvKG1f
Z3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUoc3RydWN0dXJlKSkpKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhbHJlYWR5RW1pdHRlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBpZiAoIWFscmVhZHlFbWl0dGVkKQorICAgICAgICAgICAgICAgIHNl
dChWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9kc3QpLCBhZGRUb0dyYXBoKENyZWF0ZUdlbmVy
YXRvciwgY2FsbGVlKSk7CisgICAgICAgICAgICBORVhUX09QQ09ERShvcF9jcmVhdGVfZ2VuZXJh
dG9yKTsKKyAgICAgICAgfQorCiAgICAgICAgIGNhc2Ugb3BfbmV3X29iamVjdDogewogICAgICAg
ICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BOZXdPYmplY3Q+
KCk7CiAgICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV9kc3QsCkBAIC00OTUzLDYgKzQ5OTksMTMg
QEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAg
ICAgICAgIHNldChieXRlY29kZS5tX2RzdCwgYWRkVG9HcmFwaChOZXdQcm9taXNlLCBPcEluZm8o
bV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShieXRlY29kZS5tX2lzSW50ZXJuYWxQcm9taXNlID8g
Z2xvYmFsT2JqZWN0LT5pbnRlcm5hbFByb21pc2VTdHJ1Y3R1cmUoKSA6IGdsb2JhbE9iamVjdC0+
cHJvbWlzZVN0cnVjdHVyZSgpKSksIE9wSW5mbyhieXRlY29kZS5tX2lzSW50ZXJuYWxQcm9taXNl
KSkpOwogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfbmV3X3Byb21pc2UpOwogICAgICAgICB9
CisKKyAgICAgICAgY2FzZSBvcF9uZXdfZ2VuZXJhdG9yOiB7CisgICAgICAgICAgICBhdXRvIGJ5
dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcE5ld0dlbmVyYXRvcj4oKTsKKyAgICAg
ICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihjdXJyZW50Tm9kZU9yaWdpbigpLnNlbWFudGljKTsKKyAgICAgICAgICAgIHNldChieXRl
Y29kZS5tX2RzdCwgYWRkVG9HcmFwaChOZXdHZW5lcmF0b3IsIE9wSW5mbyhtX2dyYXBoLnJlZ2lz
dGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+Z2VuZXJhdG9yU3RydWN0dXJlKCkpKSkpOworICAg
ICAgICAgICAgTkVYVF9PUENPREUob3BfbmV3X2dlbmVyYXRvcik7CisgICAgICAgIH0KICAgICAg
ICAgICAgIAogICAgICAgICBjYXNlIG9wX25ld19hcnJheTogewogICAgICAgICAgICAgYXV0byBi
eXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BOZXdBcnJheT4oKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAppbmRleCBjMGVlOThhZWE4
MzhkNzI1NmU2Yjc1NGI1NDU3NGJiOGQ2ZTlmOWZhLi43MWVjN2YxNjI4NDk1ZWIyYzg0MDQ1OTUx
Nzg1NzEwMmYxZDhlNDBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBh
YmlsaXRpZXMuY3BwCkBAIC0xMTcsNiArMTE3LDcgQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxp
dHlMZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEkK
ICAgICBjYXNlIG9wX2NoZWNrX3RkejoKICAgICBjYXNlIG9wX2NyZWF0ZV90aGlzOgogICAgIGNh
c2Ugb3BfY3JlYXRlX3Byb21pc2U6CisgICAgY2FzZSBvcF9jcmVhdGVfZ2VuZXJhdG9yOgogICAg
IGNhc2Ugb3BfYml0bm90OgogICAgIGNhc2Ugb3BfYml0YW5kOgogICAgIGNhc2Ugb3BfYml0b3I6
CkBAIC0yMTIsNiArMjEzLDcgQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNv
ZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEkKICAgICBjYXNlIG9w
X2VuZDoKICAgICBjYXNlIG9wX25ld19vYmplY3Q6CiAgICAgY2FzZSBvcF9uZXdfcHJvbWlzZToK
KyAgICBjYXNlIG9wX25ld19nZW5lcmF0b3I6CiAgICAgY2FzZSBvcF9uZXdfYXJyYXk6CiAgICAg
Y2FzZSBvcF9uZXdfYXJyYXlfd2l0aF9zaXplOgogICAgIGNhc2Ugb3BfbmV3X2FycmF5X2J1ZmZl
cjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKaW5kZXggYzFiN2Ew
YmMyMjFjZjQ4NDFjNmQ0MzFhYzRlNWNlNWFkYTFmNzFhMC4uYjhjMTcxZDNhNzZjZGMzMzgzMjlk
ODkxYWViNWJlMDc2YjI0ZGY2MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDbG9iYmVyaXplLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9i
YmVyaXplLmgKQEAgLTY2Nyw2ICs2NjcsNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBo
LCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAg
IGNhc2UgTnVtYmVyVG9TdHJpbmdXaXRoUmFkaXg6CiAgICAgY2FzZSBDcmVhdGVUaGlzOgogICAg
IGNhc2UgQ3JlYXRlUHJvbWlzZToKKyAgICBjYXNlIENyZWF0ZUdlbmVyYXRvcjoKICAgICBjYXNl
IEluc3RhbmNlT2Y6CiAgICAgY2FzZSBTdHJpbmdWYWx1ZU9mOgogICAgIGNhc2UgT2JqZWN0S2V5
czoKQEAgLTE1NjUsNiArMTU2Niw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5v
ZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAKICAgICBj
YXNlIE5ld09iamVjdDoKICAgICBjYXNlIE5ld1Byb21pc2U6CisgICAgY2FzZSBOZXdHZW5lcmF0
b3I6CiAgICAgY2FzZSBOZXdSZWdleHA6CiAgICAgY2FzZSBOZXdTeW1ib2w6CiAgICAgY2FzZSBO
ZXdTdHJpbmdPYmplY3Q6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Nsb2JiZXJzRXhpdFN0YXRlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xv
YmJlcnNFeGl0U3RhdGUuY3BwCmluZGV4IDM3MGZkMWRjMmM1YzE0NzZjN2I1YTUzY2ZkYzJkYjdj
MWY0ZTAxYzQuLmQyZjdiYTQ3OGQ4ZWM4MzRjZDI1MDhkNTNiZDlmYTE0ZDI4MDA5MGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3Bw
CkBAIC01OCw2ICs1OCw3IEBAIGJvb2wgY2xvYmJlcnNFeGl0U3RhdGUoR3JhcGgmIGdyYXBoLCBO
b2RlKiBub2RlKQogICAgIGNhc2UgQXJyYXlpZnk6CiAgICAgY2FzZSBOZXdPYmplY3Q6CiAgICAg
Y2FzZSBOZXdQcm9taXNlOgorICAgIGNhc2UgTmV3R2VuZXJhdG9yOgogICAgIGNhc2UgTmV3UmVn
ZXhwOgogICAgIGNhc2UgTmV3U3ltYm9sOgogICAgIGNhc2UgTmV3U3RyaW5nT2JqZWN0OgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFz
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNl
LmNwcAppbmRleCA5OWQ4NzVlNjZhNmI3MGZiZTUyODgxZTAwMTE3YTcwOGJlYTQzYmQwLi5mM2Y1
Y2I2MGQ4OGFjNWM2NDUyZGRmMTViZTRjNDVkZmUxMDhkOWE3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcApAQCAtNzc4
LDYgKzc3OCwzMCBAQCBjbGFzcyBDb25zdGFudEZvbGRpbmdQaGFzZSA6IHB1YmxpYyBQaGFzZSB7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAKKyAgICAgICAgICAgIGNh
c2UgQ3JlYXRlR2VuZXJhdG9yOiB7CisgICAgICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
Yyk7CisgICAgICAgICAgICAgICAgaWYgKEpTVmFsdWUgYmFzZSA9IG1fc3RhdGUuZm9yTm9kZShu
b2RlLT5jaGlsZDEoKSkubV92YWx1ZSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoYXV0byog
ZnVuY3Rpb24gPSBqc0R5bmFtaWNDYXN0PEpTRnVuY3Rpb24qPihtX2dyYXBoLm1fdm0sIGJhc2Up
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoRnVuY3Rpb25SYXJlRGF0YSogcmFyZURh
dGEgPSBmdW5jdGlvbi0+cmFyZURhdGEoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChyYXJlRGF0YS0+YWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50U2V0KCkuaXNTdGlsbFZh
bGlkKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUgPSByYXJlRGF0YS0+aW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25TdHJ1Y3R1cmUoKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0cnVjdHVyZQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgc3RydWN0dXJlLT5jbGFzc0luZm8oKSA9PSBK
U0dlbmVyYXRvcjo6aW5mbygpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAm
JiBzdHJ1Y3R1cmUtPmdsb2JhbE9iamVjdCgpID09IGdsb2JhbE9iamVjdAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJiYgcmFyZURhdGEtPmFsbG9jYXRpb25Qcm9maWxlV2F0
Y2hwb2ludFNldCgpLmlzU3RpbGxWYWxpZCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtX2dyYXBoLmZyZWV6ZShyYXJlRGF0YSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtX2dyYXBoLndhdGNocG9pbnRzKCkuYWRkTGF6aWx5KHJhcmVEYXRh
LT5hbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnRTZXQoKSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9OZXdHZW5lcmF0b3IobV9ncmFwaC5yZWdp
c3RlclN0cnVjdHVyZShzdHJ1Y3R1cmUpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNoYW5nZWQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICB9CisKICAgICAgICAgICAgIGNhc2UgT2JqZWN0Q3JlYXRlOiB7CiAgICAgICAg
ICAgICAgICAgaWYgKEpTVmFsdWUgYmFzZSA9IG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEo
KSkubV92YWx1ZSkgewogICAgICAgICAgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAppbmRleCBmYjMxMjJiN2MyNjVk
M2I4ZWQxYTZhMDA2YjJkYzgyNGE1ZTU4ZDc1Li5iZWExZTE2NmU0OWU2ZmRiYTAzNTc3NThmMDVj
ZTM1ODFlZmNiYWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rv
ZXNHQy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCkBA
IC0zMzIsNiArMzMyLDcgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQog
ICAgIGNhc2UgVHJ5R2V0QnlJZDoKICAgICBjYXNlIENyZWF0ZVRoaXM6CiAgICAgY2FzZSBDcmVh
dGVQcm9taXNlOgorICAgIGNhc2UgQ3JlYXRlR2VuZXJhdG9yOgogICAgIGNhc2UgT2JqZWN0Q3Jl
YXRlOgogICAgIGNhc2UgT2JqZWN0S2V5czoKICAgICBjYXNlIEFsbG9jYXRlUHJvcGVydHlTdG9y
YWdlOgpAQCAtMzQwLDYgKzM0MSw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSog
bm9kZSkKICAgICBjYXNlIEFycmF5aWZ5VG9TdHJ1Y3R1cmU6CiAgICAgY2FzZSBOZXdPYmplY3Q6
CiAgICAgY2FzZSBOZXdQcm9taXNlOgorICAgIGNhc2UgTmV3R2VuZXJhdG9yOgogICAgIGNhc2Ug
TmV3QXJyYXk6CiAgICAgY2FzZSBOZXdBcnJheVdpdGhTcHJlYWQ6CiAgICAgY2FzZSBTcHJlYWQ6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAppbmRleCBlNDVh
YzVjMWU2NGM3M2ZlMjY4OWM0ZTM4ZTRlZTJiMTI1ZGMzNzFkLi5hNTAxY2RkODQzZTEwYzRlZjI4
ODljNDA1NzBlMDAwZGIyMTY0OTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Rml4dXBQaGFzZS5jcHAKQEAgLTE2NDYsNiArMTY0Niw3IEBAIGNsYXNzIEZpeHVwUGhhc2UgOiBw
dWJsaWMgUGhhc2UgewogICAgICAgICBjYXNlIENoZWNrQ2VsbDoKICAgICAgICAgY2FzZSBDcmVh
dGVUaGlzOgogICAgICAgICBjYXNlIENyZWF0ZVByb21pc2U6CisgICAgICAgIGNhc2UgQ3JlYXRl
R2VuZXJhdG9yOgogICAgICAgICBjYXNlIEdldEJ1dHRlcmZseTogewogICAgICAgICAgICAgZml4
RWRnZTxDZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTI0
MDgsNiArMjQwOSw3IEBAIGNsYXNzIEZpeHVwUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAg
ICBjYXNlIFByb2ZpbGVDb250cm9sRmxvdzoKICAgICAgICAgY2FzZSBOZXdPYmplY3Q6CiAgICAg
ICAgIGNhc2UgTmV3UHJvbWlzZToKKyAgICAgICAgY2FzZSBOZXdHZW5lcmF0b3I6CiAgICAgICAg
IGNhc2UgTmV3UmVnZXhwOgogICAgICAgICBjYXNlIERlbGV0ZUJ5SWQ6CiAgICAgICAgIGNhc2Ug
RGVsZXRlQnlWYWw6CkBAIC0yNjMzLDYgKzI2MzUsOSBAQCBjbGFzcyBGaXh1cFBoYXNlIDogcHVi
bGljIFBoYXNlIHsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFNwZWNDZWxsOgorICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1
bGF0ZUNlbGwoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAppbmRleCA2OWYwOGMx
ODZkNDhjZWJmNmM3NmI4OWE0ZDVkNDg0NDA3ZGIzZDBlLi45MjJjZTFlY2NmMjBhYzJkMzc2NDIx
YmYwODQzOWM3NmUyOGY5ODAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaApAQCAt
NzY3LDYgKzc2NywxNSBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgICAgIG1fb3BJbmZvMiA9IGludGVy
bmFsOwogICAgIH0KIAorICAgIHZvaWQgY29udmVydFRvTmV3R2VuZXJhdG9yKFJlZ2lzdGVyZWRT
dHJ1Y3R1cmUgc3RydWN0dXJlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fb3AgPT0gQ3JlYXRl
R2VuZXJhdG9yKTsKKyAgICAgICAgc2V0T3BBbmREZWZhdWx0RmxhZ3MoTmV3R2VuZXJhdG9yKTsK
KyAgICAgICAgY2hpbGRyZW4ucmVzZXQoKTsKKyAgICAgICAgbV9vcEluZm8gPSBzdHJ1Y3R1cmU7
CisgICAgICAgIG1fb3BJbmZvMiA9IE9wSW5mb1dyYXBwZXIoKTsKKyAgICB9CisKICAgICB2b2lk
IGNvbnZlcnRUb05ld0FycmF5QnVmZmVyKEZyb3plblZhbHVlKiBpbW11dGFibGVCdXR0ZXJmbHkp
OwogICAgIAogICAgIHZvaWQgY29udmVydFRvRGlyZWN0Q2FsbChGcm96ZW5WYWx1ZSopOwpAQCAt
MTkwOSw2ICsxOTE4LDcgQEAgc3RydWN0IE5vZGUgewogICAgICAgICBjYXNlIEFycmF5aWZ5VG9T
dHJ1Y3R1cmU6CiAgICAgICAgIGNhc2UgTmV3T2JqZWN0OgogICAgICAgICBjYXNlIE5ld1Byb21p
c2U6CisgICAgICAgIGNhc2UgTmV3R2VuZXJhdG9yOgogICAgICAgICBjYXNlIE5ld1N0cmluZ09i
amVjdDoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBkZWZhdWx0OgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCmluZGV4IDRkNzE1ODJlMTdhNjkxYTA1OGE4
MzQ3MjI4NGY2MDE5Zjk3ZDgwMzkuLjA2MmNkYzA4NDkzMGQ3NGEwMmE3MmEzMGJlOTYwZjZmMTg1
MDNkZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKQEAgLTU0LDYg
KzU0LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKFRvVGhp
cywgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oQ3JlYXRlVGhpcywgTm9kZVJlc3VsdEpTKSAv
KiBOb3RlIHRoaXMgaXMgbm90IE11c3RHZW5lcmF0ZSBzaW5jZSB3ZSdyZSByZXR1cm5pbmcgaXQg
YW55d2F5LiAqLyBcCiAgICAgbWFjcm8oQ3JlYXRlUHJvbWlzZSwgTm9kZVJlc3VsdEpTIHwgTm9k
ZU11c3RHZW5lcmF0ZSkgXAorICAgIG1hY3JvKENyZWF0ZUdlbmVyYXRvciwgTm9kZVJlc3VsdEpT
IHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEdldENhbGxlZSwgTm9kZVJlc3VsdEpT
KSBcCiAgICAgbWFjcm8oU2V0Q2FsbGVlLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8o
R2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIE5vZGVSZXN1bHRJbnQzMikgXApAQCAtMzQw
LDYgKzM0MSw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICAvKiBBbGxv
Y2F0aW9ucy4gKi9cCiAgICAgbWFjcm8oTmV3T2JqZWN0LCBOb2RlUmVzdWx0SlMpIFwKICAgICBt
YWNybyhOZXdQcm9taXNlLCBOb2RlUmVzdWx0SlMpIFwKKyAgICBtYWNybyhOZXdHZW5lcmF0b3Is
IE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKE5ld0FycmF5LCBOb2RlUmVzdWx0SlMgfCBOb2Rl
SGFzVmFyQXJncykgXAogICAgIG1hY3JvKE5ld0FycmF5V2l0aFNwcmVhZCwgTm9kZVJlc3VsdEpT
IHwgTm9kZUhhc1ZhckFyZ3MpIFwKICAgICBtYWNybyhOZXdBcnJheVdpdGhTaXplLCBOb2RlUmVz
dWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPcGVyYXRpb25zLmNwcAppbmRleCBhZmEyODIyMGRjZjMwMjQ0MTQ0MTU5M2UzNTczZDg5ZTNh
ZDUwMzNkLi5jMzE1YzI2NTI3Yzc2MmIxM2MwZTZlMzNjMzQ5YzJiY2I2NDQ0OWFiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKQEAgLTM5OCw2ICszOTgs
MTYgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZUludGVybmFsUHJvbWlz
ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KgogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgSlNJbnRlcm5hbFByb21pc2U6OmNyZWF0ZSh2bSwgc3RydWN0dXJlKSk7CiB9CiAKK0pTQ2Vs
bCogSklUX09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVHZW5lcmF0b3IoRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCogY29uc3RydWN0b3IsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7
CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBleGVjKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJj
bGFzc1N0cnVjdHVyZShleGVjLCBudWxscHRyLCBjb25zdHJ1Y3RvciwgZ2xvYmFsT2JqZWN0LT5n
ZW5lcmF0b3JTdHJ1Y3R1cmUoKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVs
bHB0cik7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU0dlbmVyYXRvcjo6Y3JlYXRl
KHZtLCBzdHJ1Y3R1cmUpKTsKK30KKwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNh
bGxPYmplY3RDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRUYXJnZXQpCiB7CiAgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3Bl
cmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKaW5k
ZXggYjk4ZTYyMTc1YzY2ZjM2ZTM2NGQ1OGU5ZGM4MDZhZDA1MmRjNjUyYi4uNzQ0YTUwZGJmZWY4
Mjc1ZTI5YWY3Mjk2OWM2ODY0YTM2NjJjNTcwMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPcGVyYXRpb25zLmgKQEAgLTUwLDYgKzUwLDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbk9iamVjdENyZWF0ZU9iamVjdChFeGVjU3RhdGUqLCBKU09iamVjdCopIFdURl9J
TlQKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVUaGlzKEV4ZWNTdGF0ZSos
IEpTT2JqZWN0KiBjb25zdHJ1Y3RvciwgdWludDMyX3QgaW5saW5lQ2FwYWNpdHkpIFdURl9JTlRF
Uk5BTDsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVQcm9taXNlKEV4ZWNT
dGF0ZSosIEpTT2JqZWN0KiBjb25zdHJ1Y3RvciwgSlNHbG9iYWxPYmplY3QqKSBXVEZfSU5URVJO
QUw7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlSW50ZXJuYWxQcm9taXNl
KEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiBjb25zdHJ1Y3RvciwgSlNHbG9iYWxPYmplY3QqKSBXVEZf
SU5URVJOQUw7CitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlR2VuZXJhdG9y
KEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiBjb25zdHJ1Y3RvciwgSlNHbG9iYWxPYmplY3QqKSBXVEZf
SU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRvVGhpcyhF
eGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxKSBXVEZfSU5URVJOQUw7CiBFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRvVGhpc1N0cmljdChFeGVjU3RhdGUq
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlTW9kKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIpIFdURl9JTlRFUk5BTDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3Bh
Z2F0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9u
UHJvcGFnYXRpb25QaGFzZS5jcHAKaW5kZXggNDhhNDFiMzA3MmI3Njc2MzYxOTEwNDUzYTRkZTRm
NWFhZWI1NGJhYi4uZjIwOWM0YTZmNzQ3MWJkYWUyZThmZGIzYTc4NzA3MmUxNDBjODdkNiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRp
b25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9u
UHJvcGFnYXRpb25QaGFzZS5jcHAKQEAgLTEwMTQsNiArMTAxNCwxMSBAQCBjbGFzcyBQcmVkaWN0
aW9uUHJvcGFnYXRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgIGNhc2UgTmV3UHJv
bWlzZToKICAgICAgICAgICAgIHNldFByZWRpY3Rpb24oU3BlY1Byb21pc2VPYmplY3QpOwogICAg
ICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBDcmVhdGVHZW5lcmF0b3I6CisgICAgICAg
IGNhc2UgTmV3R2VuZXJhdG9yOgorICAgICAgICAgICAgc2V0UHJlZGljdGlvbihTcGVjT2JqZWN0
T3RoZXIpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBB
cnJheVNsaWNlOgogICAgICAgICBjYXNlIE5ld0FycmF5V2l0aFNwcmVhZDoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKaW5kZXggY2E4YWVhMzBhMzUyNjZj
Njc1NDU5YjliNWVmNTQ1MmM1MzE3NmQ1ZC4uMDk1ZTE1YWQ5ZDM2NzNlOGZjODk2NzkyNGJlYTg0
ZTI4ODgwMzliMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZl
VG9FeGVjdXRlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVj
dXRlLmgKQEAgLTE3OSw2ICsxNzksNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0
ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGJvb2wgaWdubwogICAgIGNh
c2UgVG9UaGlzOgogICAgIGNhc2UgQ3JlYXRlVGhpczoKICAgICBjYXNlIENyZWF0ZVByb21pc2U6
CisgICAgY2FzZSBDcmVhdGVHZW5lcmF0b3I6CiAgICAgY2FzZSBPYmplY3RDcmVhdGU6CiAgICAg
Y2FzZSBPYmplY3RLZXlzOgogICAgIGNhc2UgR2V0Q2FsbGVlOgpAQCAtMzIxLDYgKzMyMiw3IEBA
IGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBncmFw
aCwgTm9kZSogbm9kZSwgYm9vbCBpZ25vCiAgICAgY2FzZSBDb25zdHJ1Y3RGb3J3YXJkVmFyYXJn
czoKICAgICBjYXNlIE5ld09iamVjdDoKICAgICBjYXNlIE5ld1Byb21pc2U6CisgICAgY2FzZSBO
ZXdHZW5lcmF0b3I6CiAgICAgY2FzZSBOZXdBcnJheToKICAgICBjYXNlIE5ld0FycmF5V2l0aFNp
emU6CiAgICAgY2FzZSBOZXdBcnJheUJ1ZmZlcjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggMjdjYzFiNDU3YTg5ZjNkNDM1MzAyZWEw
NzMxMjVmZjEzZjM4ZWNmYy4uYjY4ODE0ZWY1ZDNjY2YxNWVjZWNiODFlY2IwNzA1ZTRmMDc2MjMz
MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5j
cHAKQEAgLTEyNzY2LDYgKzEyNzY2LDUwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVD
cmVhdGVQcm9taXNlKE5vZGUqIG5vZGUpCiAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUp
OwogfQogCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3JlYXRlR2VuZXJhdG9yKE5vZGUq
IG5vZGUpCit7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1faml0Lmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOworCisgICAgU3BlY3VsYXRlQ2VsbE9w
ZXJhbmQgY2FsbGVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICBHUFJUZW1wb3JhcnkgcmVz
dWx0KHRoaXMpOworICAgIEdQUlRlbXBvcmFyeSBzdHJ1Y3R1cmUodGhpcyk7CisgICAgR1BSVGVt
cG9yYXJ5IHNjcmF0Y2gxKHRoaXMpOworICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoMih0aGlzKTsK
KworICAgIEdQUlJlZyBjYWxsZWVHUFIgPSBjYWxsZWUuZ3ByKCk7CisgICAgR1BSUmVnIHJlc3Vs
dEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAgICBHUFJSZWcgc3RydWN0dXJlR1BSID0gc3RydWN0dXJl
LmdwcigpOworICAgIEdQUlJlZyBzY3JhdGNoMUdQUiA9IHNjcmF0Y2gxLmdwcigpOworICAgIEdQ
UlJlZyBzY3JhdGNoMkdQUiA9IHNjcmF0Y2gyLmdwcigpOworICAgIC8vIFJhcmUgZGF0YSBpcyBv
bmx5IHVzZWQgdG8gYWNjZXNzIHRoZSBhbGxvY2F0b3IgJiBzdHJ1Y3R1cmUKKyAgICAvLyBXZSBj
YW4gYXZvaWQgdXNpbmcgYW4gYWRkaXRpb25hbCBHUFIgdGhpcyB3YXkKKyAgICBHUFJSZWcgcmFy
ZURhdGFHUFIgPSBzdHJ1Y3R1cmVHUFI7CisKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Qg
c2xvd0Nhc2VzOworCisgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdEZ1bmN0
aW9uKGNhbGxlZUdQUikpOworICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3Mo
Y2FsbGVlR1BSLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZlJhcmVEYXRhKCkpLCByYXJlRGF0YUdQUik7
CisgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVy
OjpaZXJvLCByYXJlRGF0YUdQUikpOworICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFk
ZHJlc3MocmFyZURhdGFHUFIsIEZ1bmN0aW9uUmFyZURhdGE6Om9mZnNldE9mSW50ZXJuYWxGdW5j
dGlvbkFsbG9jYXRpb25Qcm9maWxlKCkgKyBJbnRlcm5hbEZ1bmN0aW9uQWxsb2NhdGlvblByb2Zp
bGU6Om9mZnNldE9mU3RydWN0dXJlKCkpLCBzdHJ1Y3R1cmVHUFIpOworICAgIG1faml0Lm1vdmUo
VHJ1c3RlZEltbVB0cihKU0dlbmVyYXRvcjo6aW5mbygpKSwgc2NyYXRjaDFHUFIpOworICAgIHNs
b3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoUHRyKENDYWxsSGVscGVyczo6Tm90RXF1YWwsIHNj
cmF0Y2gxR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3RydWN0dXJlR1BSLCBTdHJ1Y3R1cmU6
OmNsYXNzSW5mb09mZnNldCgpKSkpOworICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cjo6d2Vh
a1BvaW50ZXIobV9qaXQuZ3JhcGgoKSwgZ2xvYmFsT2JqZWN0KSwgc2NyYXRjaDFHUFIpOworICAg
IHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoUHRyKENDYWxsSGVscGVyczo6Tm90RXF1YWws
IHNjcmF0Y2gxR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3RydWN0dXJlR1BSLCBTdHJ1Y3R1
cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSkpOworCisgICAgYXV0byBidXR0ZXJmbHkgPSBUcnVz
dGVkSW1tUHRyKG51bGxwdHIpOworICAgIGVtaXRBbGxvY2F0ZUpTT2JqZWN0V2l0aEtub3duU2l6
ZTxKU0dlbmVyYXRvcj4ocmVzdWx0R1BSLCBzdHJ1Y3R1cmVHUFIsIGJ1dHRlcmZseSwgc2NyYXRj
aDFHUFIsIHNjcmF0Y2gyR1BSLCBzbG93Q2FzZXMsIHNpemVvZihKU0dlbmVyYXRvcikpOworICAg
IG1faml0LnN0b3JlVHJ1c3RlZFZhbHVlKGpzTnVsbCgpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mo
cmVzdWx0R1BSLCBKU0ludGVybmFsRmllbGRPYmplY3RJbXBsPD46Om9mZnNldE9mSW50ZXJuYWxG
aWVsZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNHZW5lcmF0b3I6OkZpZWxkOjpQb2x5UHJvdG8p
KSkpOworICAgIG1faml0LnN0b3JlVHJ1c3RlZFZhbHVlKGpzTnVtYmVyKHN0YXRpY19jYXN0PGlu
dDMyX3Q+KEpTR2VuZXJhdG9yOjpHZW5lcmF0b3JTdGF0ZTo6SW5pdCkpLCBDQ2FsbEhlbHBlcnM6
OkFkZHJlc3MocmVzdWx0R1BSLCBKU0ludGVybmFsRmllbGRPYmplY3RJbXBsPD46Om9mZnNldE9m
SW50ZXJuYWxGaWVsZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNHZW5lcmF0b3I6OkZpZWxkOjpT
dGF0ZSkpKSk7CisgICAgbV9qaXQuc3RvcmVUcnVzdGVkVmFsdWUoanNVbmRlZmluZWQoKSwgQ0Nh
bGxIZWxwZXJzOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbDw+
OjpvZmZzZXRPZkludGVybmFsRmllbGQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTR2VuZXJhdG9y
OjpGaWVsZDo6TmV4dCkpKSk7CisgICAgbV9qaXQuc3RvcmVUcnVzdGVkVmFsdWUoanNVbmRlZmlu
ZWQoKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNJbnRlcm5hbEZpZWxkT2Jq
ZWN0SW1wbDw+OjpvZmZzZXRPZkludGVybmFsRmllbGQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
R2VuZXJhdG9yOjpGaWVsZDo6VGhpcykpKSk7CisgICAgbV9qaXQuc3RvcmVUcnVzdGVkVmFsdWUo
anNVbmRlZmluZWQoKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNJbnRlcm5h
bEZpZWxkT2JqZWN0SW1wbDw+OjpvZmZzZXRPZkludGVybmFsRmllbGQoc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTR2VuZXJhdG9yOjpGaWVsZDo6RnJhbWUpKSkpOworICAgIG1faml0Lm11dGF0b3JG
ZW5jZShtX2ppdC52bSgpKTsKKworICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2Fs
bChzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkNyZWF0ZUdlbmVyYXRvciwgcmVzdWx0R1BSLCBj
YWxsZWVHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1faml0LmdyYXBoKCksIGdsb2Jh
bE9iamVjdCkpKTsKKworICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKK30KKwogdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld09iamVjdChOb2RlKiBub2RlKQogewogICAgIEdQ
UlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CkBAIC0xMjgyMiw2ICsxMjg2NiwzMyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlTmV3UHJvbWlzZShOb2RlKiBub2RlKQogICAgIGNlbGxSZXN1
bHQocmVzdWx0R1BSLCBub2RlKTsKIH0KIAordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5l
d0dlbmVyYXRvcihOb2RlKiBub2RlKQoreworICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7
CisgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2gxKHRoaXMpOworICAgIEdQUlRlbXBvcmFyeSBzY3Jh
dGNoMih0aGlzKTsKKworICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisgICAg
R1BSUmVnIHNjcmF0Y2gxR1BSID0gc2NyYXRjaDEuZ3ByKCk7CisgICAgR1BSUmVnIHNjcmF0Y2gy
R1BSID0gc2NyYXRjaDIuZ3ByKCk7CisKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Qgc2xv
d0Nhc2VzOworCisgICAgRnJvemVuVmFsdWUqIHN0cnVjdHVyZSA9IG1fZ3JhcGguZnJlZXplU3Ry
b25nKG5vZGUtPnN0cnVjdHVyZSgpLmdldCgpKTsKKyAgICBhdXRvIGJ1dHRlcmZseSA9IFRydXN0
ZWRJbW1QdHIobnVsbHB0cik7CisgICAgZW1pdEFsbG9jYXRlSlNPYmplY3RXaXRoS25vd25TaXpl
PEpTR2VuZXJhdG9yPihyZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgYnV0dGVy
Zmx5LCBzY3JhdGNoMUdQUiwgc2NyYXRjaDJHUFIsIHNsb3dDYXNlcywgc2l6ZW9mKEpTR2VuZXJh
dG9yKSk7CisgICAgbV9qaXQuc3RvcmVUcnVzdGVkVmFsdWUoanNOdWxsKCksIENDYWxsSGVscGVy
czo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGw8Pjo6b2Zmc2V0
T2ZJbnRlcm5hbEZpZWxkKHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0dlbmVyYXRvcjo6RmllbGQ6
OlBvbHlQcm90bykpKSk7CisgICAgbV9qaXQuc3RvcmVUcnVzdGVkVmFsdWUoanNOdW1iZXIoc3Rh
dGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6OkdlbmVyYXRvclN0YXRlOjpJbml0KSksIEND
YWxsSGVscGVyczo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGw8
Pjo6b2Zmc2V0T2ZJbnRlcm5hbEZpZWxkKHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0dlbmVyYXRv
cjo6RmllbGQ6OlN0YXRlKSkpKTsKKyAgICBtX2ppdC5zdG9yZVRydXN0ZWRWYWx1ZShqc1VuZGVm
aW5lZCgpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0ludGVybmFsRmllbGRP
YmplY3RJbXBsPD46Om9mZnNldE9mSW50ZXJuYWxGaWVsZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNHZW5lcmF0b3I6OkZpZWxkOjpOZXh0KSkpKTsKKyAgICBtX2ppdC5zdG9yZVRydXN0ZWRWYWx1
ZShqc1VuZGVmaW5lZCgpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0ludGVy
bmFsRmllbGRPYmplY3RJbXBsPD46Om9mZnNldE9mSW50ZXJuYWxGaWVsZChzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNHZW5lcmF0b3I6OkZpZWxkOjpUaGlzKSkpKTsKKyAgICBtX2ppdC5zdG9yZVRy
dXN0ZWRWYWx1ZShqc1VuZGVmaW5lZCgpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MocmVzdWx0R1BS
LCBKU0ludGVybmFsRmllbGRPYmplY3RJbXBsPD46Om9mZnNldE9mSW50ZXJuYWxGaWVsZChzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNHZW5lcmF0b3I6OkZpZWxkOjpGcmFtZSkpKSk7CisgICAgbV9q
aXQubXV0YXRvckZlbmNlKG1faml0LnZtKCkpOworCisgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Io
c2xvd1BhdGhDYWxsKHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uTmV3R2VuZXJhdG9yLCByZXN1
bHRHUFIsIFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSkpOworCisgICAgY2VsbFJlc3VsdChyZXN1
bHRHUFIsIG5vZGUpOworfQorCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9QcmltaXRp
dmUoTm9kZSogbm9kZSkKIHsKICAgICBERkdfQVNTRVJUKG1faml0LmdyYXBoKCksIG5vZGUsIG5v
ZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlLCBub2RlLT5jaGlsZDEoKS51c2VL
aW5kKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5o
CmluZGV4IGY5OTFkZDIwMTYyNGU2MDNiMjFlZDczZGQwM2M1M2MzYjczMWFkZTIuLjBmMmY1ZTU4
OTA4MzJkOTU3OGU4YTRlMGZjNzFmYTliODY3YTlkMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKQEAgLTE0ODQsOCArMTQ4NCwxMCBAQCBjbGFz
cyBTcGVjdWxhdGl2ZUpJVCB7CiAgICAgdm9pZCBjb21waWxlT2JqZWN0Q3JlYXRlKE5vZGUqKTsK
ICAgICB2b2lkIGNvbXBpbGVDcmVhdGVUaGlzKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVDcmVh
dGVQcm9taXNlKE5vZGUqKTsKKyAgICB2b2lkIGNvbXBpbGVDcmVhdGVHZW5lcmF0b3IoTm9kZSop
OwogICAgIHZvaWQgY29tcGlsZU5ld09iamVjdChOb2RlKik7CiAgICAgdm9pZCBjb21waWxlTmV3
UHJvbWlzZShOb2RlKik7CisgICAgdm9pZCBjb21waWxlTmV3R2VuZXJhdG9yKE5vZGUqKTsKICAg
ICB2b2lkIGNvbXBpbGVUb1ByaW1pdGl2ZShOb2RlKik7CiAgICAgdm9pZCBjb21waWxlTG9nU2hh
ZG93Q2hpY2tlblByb2xvZ3VlKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVMb2dTaGFkb3dDaGlj
a2VuVGFpbChOb2RlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCAwOWNmMDk4NDY5OGI5Zjc5Mzc2ZjA1NjQxN2U1
NzE2MDM5YWU1NmRiLi4yOTdhNDA5MjZiZjZkZTUwZTEzM2U5ZTgyZWIwODkzOTJhYWQ3ODNiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJf
NjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQz
Ml82NC5jcHAKQEAgLTMyMDIsNiArMzIwMiwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgQ3JlYXRl
R2VuZXJhdG9yOiB7CisgICAgICAgIGNvbXBpbGVDcmVhdGVHZW5lcmF0b3Iobm9kZSk7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgTmV3T2JqZWN0OiB7CiAgICAgICAgIGNvbXBp
bGVOZXdPYmplY3Qobm9kZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtMzIxMiw2ICszMjE3LDExIEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7
CiAgICAgfQogCisgICAgY2FzZSBOZXdHZW5lcmF0b3I6IHsKKyAgICAgICAgY29tcGlsZU5ld0dl
bmVyYXRvcihub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBHZXRDYWxs
ZWU6IHsKICAgICAgICAgY29tcGlsZUdldENhbGxlZShub2RlKTsKICAgICAgICAgYnJlYWs7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApp
bmRleCBmMWYwNGMzYzk4NzVhNjMxNjVhNjI4ZmY5ZjFjZWRiNWZjNzA2YjM2Li42YjZmZDUyZjNk
YTZhM2YzODg4NmE1MWZlMzU0NmFmMjgzYTI3YzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTM0NzgsNiArMzQ3OCwxMSBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGNvbXBp
bGVDcmVhdGVQcm9taXNlKG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9CisKKyAgICBjYXNl
IENyZWF0ZUdlbmVyYXRvcjogeworICAgICAgICBjb21waWxlQ3JlYXRlR2VuZXJhdG9yKG5vZGUp
OworICAgICAgICBicmVhazsKKyAgICB9CiAgICAgICAgIAogICAgIGNhc2UgTmV3T2JqZWN0OiB7
CiAgICAgICAgIGNvbXBpbGVOZXdPYmplY3Qobm9kZSk7CkBAIC0zNDg5LDYgKzM0OTQsMTEgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsK
ICAgICB9CiAKKyAgICBjYXNlIE5ld0dlbmVyYXRvcjogeworICAgICAgICBjb21waWxlTmV3R2Vu
ZXJhdG9yKG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIEdldENhbGxl
ZTogewogICAgICAgICBjb21waWxlR2V0Q2FsbGVlKG5vZGUpOwogICAgICAgICBicmVhazsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0
aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJ
bnNlcnRpb25QaGFzZS5jcHAKaW5kZXggMjRiNTVlNzg4ZDlkZTliNTA2OTk2NzU1NzUzNzczOGIz
MzJiZTM1Ny4uMGQ1OTAxODZkODNiZGI0NzQ1ZWY3YzdjMTU2NzQxMDI0NTIzOWVjNiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25Q
aGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJ
bnNlcnRpb25QaGFzZS5jcHAKQEAgLTMyMiw2ICszMjIsNyBAQCBjbGFzcyBTdG9yZUJhcnJpZXJJ
bnNlcnRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICBzd2l0Y2ggKG1fbm9k
ZS0+b3AoKSkgewogICAgICAgICAgICAgY2FzZSBOZXdPYmplY3Q6CiAgICAgICAgICAgICBjYXNl
IE5ld1Byb21pc2U6CisgICAgICAgICAgICBjYXNlIE5ld0dlbmVyYXRvcjoKICAgICAgICAgICAg
IGNhc2UgTmV3QXJyYXk6CiAgICAgICAgICAgICBjYXNlIE5ld0FycmF5V2l0aFNpemU6CiAgICAg
ICAgICAgICBjYXNlIE5ld0FycmF5QnVmZmVyOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExDYXBhYmlsaXRpZXMuY3BwCmluZGV4IDg0NWM0MTdlY2RiMTRiZjUwYTQ1ZjVlOGUwOWUz
YWUyMzk5ZjlkODAuLmVhODQyYzA2MTJjNmNjYjljNTA4ZWE1MTM2MDA4NjBkYzc3ZmMzMTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKQEAgLTc1
LDYgKzc1LDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUp
CiAgICAgY2FzZSBHZXRCdXR0ZXJmbHk6CiAgICAgY2FzZSBOZXdPYmplY3Q6CiAgICAgY2FzZSBO
ZXdQcm9taXNlOgorICAgIGNhc2UgTmV3R2VuZXJhdG9yOgogICAgIGNhc2UgTmV3U3RyaW5nT2Jq
ZWN0OgogICAgIGNhc2UgTmV3U3ltYm9sOgogICAgIGNhc2UgTmV3QXJyYXk6CkBAIC0zNzksNiAr
MzgwLDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAg
ICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6CiAgICAgY2FzZSBDcmVhdGVUaGlzOgogICAgIGNh
c2UgQ3JlYXRlUHJvbWlzZToKKyAgICBjYXNlIENyZWF0ZUdlbmVyYXRvcjoKICAgICBjYXNlIERh
dGFWaWV3R2V0SW50OgogICAgIGNhc2UgRGF0YVZpZXdHZXRGbG9hdDoKICAgICBjYXNlIERhdGFW
aWV3U2V0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRG
R1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3Bw
CmluZGV4IDhjMDkxYzY2NDUxYzAxNTUzMDBiNTJmNDlhMmE4MmU1MDI1MjQ0MjUuLjBjYjQ4OTky
MjhhZmFhZTIyM2Y0MzZiYTYzZTIwZDM1ZWYwNDI3MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTc4LDYgKzc4LDcgQEAKICNpbmNsdWRl
ICJKU0FzeW5jRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0FzeW5jR2VuZXJhdG9yRnVuY3Rpb24u
aCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNHZW5lcmF0b3IuaCIKICNp
bmNsdWRlICJKU0dlbmVyYXRvckZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNJbW11dGFibGVCdXR0
ZXJmbHkuaCIKICNpbmNsdWRlICJKU0xleGljYWxFbnZpcm9ubWVudC5oIgpAQCAtMTA0OCw2ICsx
MDQ5LDkgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgY2FzZSBOZXdQcm9taXNlOgog
ICAgICAgICAgICAgY29tcGlsZU5ld1Byb21pc2UoKTsKICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIE5ld0dlbmVyYXRvcjoKKyAgICAgICAgICAgIGNvbXBpbGVOZXdHZW5lcmF0b3Io
KTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIE5ld1N0cmluZ09iamVjdDoKICAg
ICAgICAgICAgIGNvbXBpbGVOZXdTdHJpbmdPYmplY3QoKTsKICAgICAgICAgICAgIGJyZWFrOwpA
QCAtMTA2Niw2ICsxMDcwLDkgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgY2FzZSBD
cmVhdGVQcm9taXNlOgogICAgICAgICAgICAgY29tcGlsZUNyZWF0ZVByb21pc2UoKTsKICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENyZWF0ZUdlbmVyYXRvcjoKKyAgICAgICAgICAg
IGNvbXBpbGVDcmVhdGVHZW5lcmF0b3IoKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBj
YXNlIFNwcmVhZDoKICAgICAgICAgICAgIGNvbXBpbGVTcHJlYWQoKTsKICAgICAgICAgICAgIGJy
ZWFrOwpAQCAtNTkyNiw2ICs1OTMzLDMxIEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAg
IHNldEpTVmFsdWUobV9vdXQucGhpKHBvaW50ZXJUeXBlKCksIGZhc3RSZXN1bHQsIHNsb3dSZXN1
bHQpKTsKICAgICB9CiAKKyAgICB2b2lkIGNvbXBpbGVOZXdHZW5lcmF0b3IoKQorICAgIHsKKyAg
ICAgICAgTEJhc2ljQmxvY2sgc2xvd0Nhc2UgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICBM
QmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygpOworCisgICAgICAgIExC
YXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuaW5zZXJ0TmV3QmxvY2tzQmVmb3JlKHNsb3dDYXNl
KTsKKworICAgICAgICBMVmFsdWUgZ2VuZXJhdG9yID0gYWxsb2NhdGVPYmplY3Q8SlNHZW5lcmF0
b3I+KG1fbm9kZS0+c3RydWN0dXJlKCksIG1fb3V0LmludFB0clplcm8sIHNsb3dDYXNlKTsKKyAg
ICAgICAgbV9vdXQuc3RvcmU2NChtX291dC5jb25zdEludDY0KEpTVmFsdWU6OmVuY29kZShqc051
bGwoKSkpLCBnZW5lcmF0b3IsIG1faGVhcHMuSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbF9pbnRl
cm5hbEZpZWxkc1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNHZW5lcmF0b3I6OkZpZWxkOjpQb2x5
UHJvdG8pXSk7CisgICAgICAgIG1fb3V0LnN0b3JlNjQobV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVl
OjplbmNvZGUoanNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6OkdlbmVy
YXRvclN0YXRlOjpJbml0KSkpKSwgZ2VuZXJhdG9yLCBtX2hlYXBzLkpTSW50ZXJuYWxGaWVsZE9i
amVjdEltcGxfaW50ZXJuYWxGaWVsZHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTR2VuZXJhdG9y
OjpGaWVsZDo6U3RhdGUpXSk7CisgICAgICAgIG1fb3V0LnN0b3JlNjQobV9vdXQuY29uc3RJbnQ2
NChKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSkpLCBnZW5lcmF0b3IsIG1faGVhcHMuSlNJ
bnRlcm5hbEZpZWxkT2JqZWN0SW1wbF9pbnRlcm5hbEZpZWxkc1tzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNHZW5lcmF0b3I6OkZpZWxkOjpOZXh0KV0pOworICAgICAgICBtX291dC5zdG9yZTY0KG1f
b3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpKSwgZ2VuZXJhdG9y
LCBtX2hlYXBzLkpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGxfaW50ZXJuYWxGaWVsZHNbc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTR2VuZXJhdG9yOjpGaWVsZDo6VGhpcyldKTsKKyAgICAgICAgbV9v
dXQuc3RvcmU2NChtX291dC5jb25zdEludDY0KEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KSksIGdlbmVyYXRvciwgbV9oZWFwcy5KU0ludGVybmFsRmllbGRPYmplY3RJbXBsX2ludGVybmFs
RmllbGRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihKU0dlbmVyYXRvcjo6RmllbGQ6OkZyYW1lKV0p
OworICAgICAgICBtdXRhdG9yRmVuY2UoKTsKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgZmFzdFJl
c3VsdCA9IG1fb3V0LmFuY2hvcihnZW5lcmF0b3IpOworICAgICAgICBtX291dC5qdW1wKGNvbnRp
bnVhdGlvbik7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oc2xvd0Nhc2UsIGNvbnRpbnVhdGlv
bik7CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dSZXN1bHQgPSBtX291dC5hbmNob3Iodm1D
YWxsKHBvaW50ZXJUeXBlKCksIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25OZXdHZW5lcmF0b3Ip
LCBtX2NhbGxGcmFtZSwgZnJvemVuUG9pbnRlcihtX2dyYXBoLmZyZWV6ZVN0cm9uZyhtX25vZGUt
PnN0cnVjdHVyZSgpLmdldCgpKSkpKTsKKyAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24p
OworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOworICAg
ICAgICBzZXRKU1ZhbHVlKG1fb3V0LnBoaShwb2ludGVyVHlwZSgpLCBmYXN0UmVzdWx0LCBzbG93
UmVzdWx0KSk7CisgICAgfQorCiAgICAgdm9pZCBjb21waWxlTmV3U3RyaW5nT2JqZWN0KCkKICAg
ICB7CiAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0gbV9ub2RlLT5zdHJ1
Y3R1cmUoKTsKQEAgLTYzMzgsNiArNjM3MCw1MyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAg
ICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CiAgICAgfQogCisgICAgdm9pZCBjb21waWxlQ3JlYXRl
R2VuZXJhdG9yKCkKKyAgICB7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qg
PSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisKKyAg
ICAgICAgTFZhbHVlIGNhbGxlZSA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSk7CisKKyAgICAg
ICAgTEJhc2ljQmxvY2sgaXNGdW5jdGlvbkJsb2NrID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAg
ICAgTEJhc2ljQmxvY2sgaGFzUmFyZURhdGEgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICBM
QmFzaWNCbG9jayBjaGVja0dsb2JhbE9iamVjdENhc2UgPSBtX291dC5uZXdCbG9jaygpOworICAg
ICAgICBMQmFzaWNCbG9jayBmYXN0QWxsb2NhdGlvbkNhc2UgPSBtX291dC5uZXdCbG9jaygpOwor
ICAgICAgICBMQmFzaWNCbG9jayBzbG93Q2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAg
IExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisKKyAgICAgICAg
bV9vdXQuYnJhbmNoKGlzRnVuY3Rpb24oY2FsbGVlLCBwcm92ZW5UeXBlKG1fbm9kZS0+Y2hpbGQx
KCkpKSwgdXN1YWxseShpc0Z1bmN0aW9uQmxvY2spLCByYXJlbHkoc2xvd0Nhc2UpKTsKKworICAg
ICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGlzRnVuY3Rpb25CbG9j
aywgaGFzUmFyZURhdGEpOworICAgICAgICBMVmFsdWUgcmFyZURhdGEgPSBtX291dC5sb2FkUHRy
KGNhbGxlZSwgbV9oZWFwcy5KU0Z1bmN0aW9uX3JhcmVEYXRhKTsKKyAgICAgICAgbV9vdXQuYnJh
bmNoKG1fb3V0LmlzWmVybzY0KHJhcmVEYXRhKSwgcmFyZWx5KHNsb3dDYXNlKSwgdXN1YWxseSho
YXNSYXJlRGF0YSkpOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKGhhc1JhcmVEYXRhLCBmYXN0
QWxsb2NhdGlvbkNhc2UpOworICAgICAgICBMVmFsdWUgc3RydWN0dXJlID0gbV9vdXQubG9hZFB0
cihyYXJlRGF0YSwgbV9oZWFwcy5GdW5jdGlvblJhcmVEYXRhX2ludGVybmFsRnVuY3Rpb25BbGxv
Y2F0aW9uUHJvZmlsZV9zdHJ1Y3R1cmUpOworICAgICAgICBtX291dC5icmFuY2gobV9vdXQuZXF1
YWwobV9vdXQubG9hZFB0cihzdHJ1Y3R1cmUsIG1faGVhcHMuU3RydWN0dXJlX2NsYXNzSW5mbyks
IG1fb3V0LmNvbnN0SW50UHRyKEpTR2VuZXJhdG9yOjppbmZvKCkpKSwgdXN1YWxseShjaGVja0ds
b2JhbE9iamVjdENhc2UpLCByYXJlbHkoc2xvd0Nhc2UpKTsKKworICAgICAgICBtX291dC5hcHBl
bmRUbyhjaGVja0dsb2JhbE9iamVjdENhc2UsIGZhc3RBbGxvY2F0aW9uQ2FzZSk7CisgICAgICAg
IG1fb3V0LmJyYW5jaChtX291dC5lcXVhbChtX291dC5sb2FkUHRyKHN0cnVjdHVyZSwgbV9oZWFw
cy5TdHJ1Y3R1cmVfZ2xvYmFsT2JqZWN0KSwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSksIHVz
dWFsbHkoZmFzdEFsbG9jYXRpb25DYXNlKSwgcmFyZWx5KHNsb3dDYXNlKSk7CisKKyAgICAgICAg
bV9vdXQuYXBwZW5kVG8oZmFzdEFsbG9jYXRpb25DYXNlLCBzbG93Q2FzZSk7CisgICAgICAgIExW
YWx1ZSBnZW5lcmF0b3IgPSBhbGxvY2F0ZU9iamVjdDxKU0dlbmVyYXRvcj4oc3RydWN0dXJlLCBt
X291dC5pbnRQdHJaZXJvLCBzbG93Q2FzZSk7CisgICAgICAgIG1fb3V0LnN0b3JlNjQobV9vdXQu
Y29uc3RJbnQ2NChKU1ZhbHVlOjplbmNvZGUoanNOdWxsKCkpKSwgZ2VuZXJhdG9yLCBtX2hlYXBz
LkpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGxfaW50ZXJuYWxGaWVsZHNbc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTR2VuZXJhdG9yOjpGaWVsZDo6UG9seVByb3RvKV0pOworICAgICAgICBtX291dC5z
dG9yZTY0KG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHN0YXRpY19j
YXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpHZW5lcmF0b3JTdGF0ZTo6SW5pdCkpKSksIGdlbmVy
YXRvciwgbV9oZWFwcy5KU0ludGVybmFsRmllbGRPYmplY3RJbXBsX2ludGVybmFsRmllbGRzW3N0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0dlbmVyYXRvcjo6RmllbGQ6OlN0YXRlKV0pOworICAgICAg
ICBtX291dC5zdG9yZTY0KG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpKSwgZ2VuZXJhdG9yLCBtX2hlYXBzLkpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGxfaW50
ZXJuYWxGaWVsZHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTR2VuZXJhdG9yOjpGaWVsZDo6TmV4
dCldKTsKKyAgICAgICAgbV9vdXQuc3RvcmU2NChtX291dC5jb25zdEludDY0KEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKSksIGdlbmVyYXRvciwgbV9oZWFwcy5KU0ludGVybmFsRmllbGRP
YmplY3RJbXBsX2ludGVybmFsRmllbGRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihKU0dlbmVyYXRv
cjo6RmllbGQ6OlRoaXMpXSk7CisgICAgICAgIG1fb3V0LnN0b3JlNjQobV9vdXQuY29uc3RJbnQ2
NChKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSkpLCBnZW5lcmF0b3IsIG1faGVhcHMuSlNJ
bnRlcm5hbEZpZWxkT2JqZWN0SW1wbF9pbnRlcm5hbEZpZWxkc1tzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNHZW5lcmF0b3I6OkZpZWxkOjpGcmFtZSldKTsKKyAgICAgICAgbXV0YXRvckZlbmNlKCk7
CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIGZhc3RSZXN1bHQgPSBtX291dC5hbmNob3IoZ2VuZXJh
dG9yKTsKKyAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworCisgICAgICAgIG1fb3V0
LmFwcGVuZFRvKHNsb3dDYXNlLCBjb250aW51YXRpb24pOworICAgICAgICBWYWx1ZUZyb21CbG9j
ayBzbG93UmVzdWx0ID0gbV9vdXQuYW5jaG9yKHZtQ2FsbChJbnQ2NCwgbV9vdXQub3BlcmF0aW9u
KG9wZXJhdGlvbkNyZWF0ZUdlbmVyYXRvciksIG1fY2FsbEZyYW1lLCBjYWxsZWUsIHdlYWtQb2lu
dGVyKGdsb2JhbE9iamVjdCkpKTsKKyAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwor
CisgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOworICAgICAg
ICBMVmFsdWUgcmVzdWx0ID0gbV9vdXQucGhpKEludDY0LCBmYXN0UmVzdWx0LCBzbG93UmVzdWx0
KTsKKworICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CisgICAgfQorCiAgICAgdm9pZCBjb21w
aWxlU3ByZWFkKCkKICAgICB7CiAgICAgICAgIGlmIChtX25vZGUtPmNoaWxkMSgpLT5vcCgpID09
IFBoYW50b21OZXdBcnJheUJ1ZmZlcikgewpAQCAtMTYwNTksOCArMTYxMzgsMTAgQEAgY2xhc3Mg
TG93ZXJERkdUb0IzIHsKIAogICAgIExWYWx1ZSBpc0NlbGxXaXRoVHlwZShMVmFsdWUgY2VsbCwg
SlNUeXBlIHF1ZXJpZWRUeXBlLCBTcGVjdWxhdGVkVHlwZSBzcGVjdWxhdGVkVHlwZUZvclF1ZXJ5
LCBTcGVjdWxhdGVkVHlwZSB0eXBlID0gU3BlY0Z1bGxUb3ApCiAgICAgewotICAgICAgICBpZiAo
TFZhbHVlIHByb3ZlbiA9IGlzUHJvdmVuVmFsdWUodHlwZSAmIFNwZWNDZWxsLCBzcGVjdWxhdGVk
VHlwZUZvclF1ZXJ5KSkKLSAgICAgICAgICAgIHJldHVybiBwcm92ZW47CisgICAgICAgIGlmIChz
cGVjdWxhdGVkVHlwZUZvclF1ZXJ5ICE9IFNwZWNDZWxsKSB7CisgICAgICAgICAgICBpZiAoTFZh
bHVlIHByb3ZlbiA9IGlzUHJvdmVuVmFsdWUodHlwZSAmIFNwZWNDZWxsLCBzcGVjdWxhdGVkVHlw
ZUZvclF1ZXJ5KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gcHJvdmVuOworICAgICAgICB9CiAg
ICAgICAgIHJldHVybiBtX291dC5lcXVhbCgKICAgICAgICAgICAgIG1fb3V0LmxvYWQ4WmVyb0V4
dDMyKGNlbGwsIG1faGVhcHMuSlNDZWxsX3R5cGVJbmZvVHlwZSksCiAgICAgICAgICAgICBtX291
dC5jb25zdEludDMyKHF1ZXJpZWRUeXBlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5k
ZXggMzZkZTUzYTBiYzNhNzJmNTU1OGQxOWVkYTY0NzZhZjA0OTQ2ZWM2Yy4uODI1NDYzODEyZmJl
NTM2ZDA5NGMxNzliN2VmYjI2Mjg1YzE0MDJmMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNw
cApAQCAtMzEyLDYgKzMxMiw4IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkK
ICAgICAgICAgREVGSU5FX1NMT1dfT1AoY3JlYXRlX3Jlc3QpCiAgICAgICAgIERFRklORV9TTE9X
X09QKGNyZWF0ZV9wcm9taXNlKQogICAgICAgICBERUZJTkVfU0xPV19PUChuZXdfcHJvbWlzZSkK
KyAgICAgICAgREVGSU5FX1NMT1dfT1AoY3JlYXRlX2dlbmVyYXRvcikKKyAgICAgICAgREVGSU5F
X1NMT1dfT1AobmV3X2dlbmVyYXRvcikKICAgICAgICAgREVGSU5FX1NMT1dfT1AocG93KQogCiAg
ICAgICAgIERFRklORV9PUChvcF9hZGQpCkBAIC01ODAsNiArNTgyLDcgQEAgdm9pZCBKSVQ6OnBy
aXZhdGVDb21waWxlU2xvd0Nhc2VzKCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX1NMT1dfT1Ao
ZGl2KQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfU0xPV19PUChjcmVhdGVfdGhpcykKICAgICAg
ICAgREVGSU5FX1NMT1dDQVNFX1NMT1dfT1AoY3JlYXRlX3Byb21pc2UpCisgICAgICAgIERFRklO
RV9TTE9XQ0FTRV9TTE9XX09QKGNyZWF0ZV9nZW5lcmF0b3IpCiAgICAgICAgIERFRklORV9TTE9X
Q0FTRV9TTE9XX09QKHRvX3RoaXMpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9TTE9XX09QKHRv
X3ByaW1pdGl2ZSkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX1NMT1dfT1AodG9fbnVtYmVyKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggN2FmNGVl
MzI2Y2YxZTg5ZTlhNTNmOWEyNzdiZDVjNDA1MjYzMDgwOC4uZWZhMjU0Y2IyYWYwMTI1N2VhZDYw
Y2QyMjU4OTdhNjFiNzEwOTE0NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
ZXJhdGlvbnMuY3BwCkBAIC0xMzk0LDYgKzEzOTQsMTQgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbk5ld0ludGVybmFsUHJvbWlzZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSog
c3QKICAgICByZXR1cm4gSlNJbnRlcm5hbFByb21pc2U6OmNyZWF0ZSh2bSwgc3RydWN0dXJlKTsK
IH0KIAorSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0dlbmVyYXRvcihFeGVjU3Rh
dGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlKQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CisKKyAgICBy
ZXR1cm4gSlNHZW5lcmF0b3I6OmNyZWF0ZSh2bSwgc3RydWN0dXJlKTsKK30KKwogSlNDZWxsKiBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld1JlZ2V4cChFeGVjU3RhdGUqIGV4ZWMsIEpTQ2VsbCog
cmVnZXhwUHRyKQogewogICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZh
bHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9u
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKaW5kZXggMWMz
YzI3MmNiYmE4ZGQzNTYyZDRkMTVjZjA5NTBlNmM5MjQyODc2Mi4uMWI3NDliMjMwZjgwMmQzZmM0
MmZjZmExNjA0NmJhODlmMzBjOGM1YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGVyYXRpb25zLmgKQEAgLTQyMSw2ICs0MjEsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uU2V0RnVuY3Rpb25OYW1lKEV4ZWNTdGF0ZSosIEpTQ2VsbCosIEVuY29kZWRKU1ZhbHVlKQog
SlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld09iamVjdChFeGVjU3RhdGUqLCBTdHJ1
Y3R1cmUqKSBXVEZfSU5URVJOQUw7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3
UHJvbWlzZShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqKSBXVEZfSU5URVJOQUw7CiBKU0NlbGwqIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3SW50ZXJuYWxQcm9taXNlKEV4ZWNTdGF0ZSosIFN0cnVj
dHVyZSopIFdURl9JTlRFUk5BTDsKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdH
ZW5lcmF0b3IoRXhlY1N0YXRlKiwgU3RydWN0dXJlKikgV1RGX0lOVEVSTkFMOwogSlNDZWxsKiBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld1JlZ2V4cChFeGVjU3RhdGUqLCBKU0NlbGwqKSBXVEZf
SU5URVJOQUw7CiBVbnVzZWRQdHIgSklUX09QRVJBVElPTiBvcGVyYXRpb25IYW5kbGVUcmFwcyhF
eGVjU3RhdGUqKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVGhy
b3coRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKaW5kZXggNDA3NThlN2Yz
MGFjYzRkNzI4MmViODUzNWNiNGQzMWJjOGMwZTc0Mi4uMzY5Y2IxMGIyMjVjMDlhMTQyYWZlNjIz
YmU5M2Q1YjA0YWY4MGRhYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRQcm9wZXJ0eUFjY2Vzcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQ
cm9wZXJ0eUFjY2Vzcy5jcHAKQEAgLTEyNDMsNyArMTI0Myw2IEBAIHZvaWQgSklUOjplbWl0X29w
X2dldF9pbnRlcm5hbF9maWVsZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogICAgIGludCBkc3QgPSBieXRlY29kZS5tX2RzdC5vZmZzZXQoKTsKICAgICBpbnQgYmFzZSA9
IGJ5dGVjb2RlLm1fYmFzZS5vZmZzZXQoKTsKICAgICB1bnNpZ25lZCBpbmRleCA9IGJ5dGVjb2Rl
Lm1faW5kZXg7Ci0gICAgQVNTRVJUKGluZGV4IDwgSlNQcm9taXNlOjpudW1iZXJPZkludGVybmFs
RmllbGRzKTsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgcmVnVDEpOwogICAg
IGxvYWRQdHIoQWRkcmVzcyhyZWdUMSwgSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbDw+OjpvZmZz
ZXRPZkludGVybmFsRmllbGQoaW5kZXgpKSwgcmVnVDApOwpAQCAtMTI1OCw3ICsxMjU3LDYgQEAg
dm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2ludGVybmFsX2ZpZWxkKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgaW50IGJhc2UgPSBieXRlY29kZS5tX2Jhc2Uub2Zmc2V0
KCk7CiAgICAgaW50IHZhbHVlID0gYnl0ZWNvZGUubV92YWx1ZS5vZmZzZXQoKTsKICAgICB1bnNp
Z25lZCBpbmRleCA9IGJ5dGVjb2RlLm1faW5kZXg7Ci0gICAgQVNTRVJUKGluZGV4IDwgSlNQcm9t
aXNlOjpudW1iZXJPZkludGVybmFsRmllbGRzKTsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0
ZXIoYmFzZSwgcmVnVDApOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIodmFsdWUsIHJlZ1Qx
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyLmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyLmFzbQppbmRleCBkMjA0YjQwN2MyZGU0OGU1ZGNiMmNhMTMxYTRhYjE0ZTNkODliMWNjLi4y
NTc2ZWY0OWUxMTgzMTI2Y2ZmOGYxZTM1ZWVhZWRiZmUwNDZkZWNkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC0xNDk1
LDYgKzE0OTUsNyBAQCBzbG93UGF0aE9wKGNyZWF0ZV9yZXN0KQogc2xvd1BhdGhPcChjcmVhdGVf
c2NvcGVkX2FyZ3VtZW50cykKIHNsb3dQYXRoT3AoY3JlYXRlX3RoaXMpCiBzbG93UGF0aE9wKGNy
ZWF0ZV9wcm9taXNlKQorc2xvd1BhdGhPcChjcmVhdGVfZ2VuZXJhdG9yKQogc2xvd1BhdGhPcChk
ZWZpbmVfYWNjZXNzb3JfcHJvcGVydHkpCiBzbG93UGF0aE9wKGRlZmluZV9kYXRhX3Byb3BlcnR5
KQogc2xvd1BhdGhPcChlbnVtZXJhdG9yX2dlbmVyaWNfcG5hbWUpCkBAIC0xNTMwLDYgKzE1MzEs
NyBAQCBzbG93UGF0aE9wKHRvX2luZGV4X3N0cmluZykKIHNsb3dQYXRoT3AodHlwZW9mKQogc2xv
d1BhdGhPcCh1bnJlYWNoYWJsZSkKIHNsb3dQYXRoT3AobmV3X3Byb21pc2UpCitzbG93UGF0aE9w
KG5ld19nZW5lcmF0b3IpCiAKIG1hY3JvIGxsaW50U2xvd1BhdGhPcChvcGNvZGVOYW1lKQogICAg
IGxsaW50T3Aob3BfJW9wY29kZU5hbWUlLCB1bnVzZWQsIG1hY3JvICh1bnVzZWQsIHVudXNlZCwg
ZGlzcGF0Y2gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25TbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzLmNwcAppbmRleCA2NTg2NTc5ODIzMzQ0NDk5NzAyYmJiZGM1ZDM1Y2IyNzU0NGUzY2Vm
Li4xMTIzZDE3OWY2MzkwNjIzMTVlNTQyNDA0YTFlNTI1YjQ4N2U2ZjVmIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKQEAgLTMwOSw2
ICszMDksMzYgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX25ld19wcm9taXNlKQogICAgIFJF
VFVSTihyZXN1bHQpOwogfQogCitTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfY3JlYXRlX2dlbmVy
YXRvcikKK3sKKyAgICBCRUdJTigpOworICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BDcmVh
dGVHZW5lcmF0b3I+KCk7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMt
PmxleGljYWxHbG9iYWxPYmplY3QoKTsKKyAgICBKU09iamVjdCogY29uc3RydWN0b3JBc09iamVj
dCA9IGFzT2JqZWN0KEdFVChieXRlY29kZS5tX2NhbGxlZSkuanNWYWx1ZSgpKTsKKworICAgIFN0
cnVjdHVyZSogc3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1
Y3R1cmUoZXhlYywgbnVsbHB0ciwgY29uc3RydWN0b3JBc09iamVjdCwgZ2xvYmFsT2JqZWN0LT5n
ZW5lcmF0b3JTdHJ1Y3R1cmUoKSk7CisgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgSlNHZW5l
cmF0b3IqIHJlc3VsdCA9IEpTR2VuZXJhdG9yOjpjcmVhdGUodm0sIHN0cnVjdHVyZSk7CisKKyAg
ICBKU0Z1bmN0aW9uKiBjb25zdHJ1Y3RvciA9IGpzRHluYW1pY0Nhc3Q8SlNGdW5jdGlvbio+KHZt
LCBjb25zdHJ1Y3RvckFzT2JqZWN0KTsKKyAgICBpZiAoY29uc3RydWN0b3IgJiYgY29uc3RydWN0
b3ItPmNhblVzZUFsbG9jYXRpb25Qcm9maWxlKCkpIHsKKyAgICAgICAgV3JpdGVCYXJyaWVyPEpT
Q2VsbD4mIGNhY2hlZENhbGxlZSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGV4ZWMpLm1fY2FjaGVkQ2Fs
bGVlOworICAgICAgICBpZiAoIWNhY2hlZENhbGxlZSkKKyAgICAgICAgICAgIGNhY2hlZENhbGxl
ZS5zZXQodm0sIGV4ZWMtPmNvZGVCbG9jaygpLCBjb25zdHJ1Y3Rvcik7CisgICAgICAgIGVsc2Ug
aWYgKGNhY2hlZENhbGxlZS51bnZhbGlkYXRlZEdldCgpICE9IEpTQ2VsbDo6c2Vlbk11bHRpcGxl
Q2FsbGVlT2JqZWN0cygpICYmIGNhY2hlZENhbGxlZS5nZXQoKSAhPSBjb25zdHJ1Y3RvcikKKyAg
ICAgICAgICAgIGNhY2hlZENhbGxlZS5zZXRXaXRob3V0V3JpdGVCYXJyaWVyKEpTQ2VsbDo6c2Vl
bk11bHRpcGxlQ2FsbGVlT2JqZWN0cygpKTsKKyAgICB9CisgICAgUkVUVVJOKHJlc3VsdCk7Cit9
CisKK1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uZXdfZ2VuZXJhdG9yKQoreworICAgIEJFR0lO
KCk7CisgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcE5ld0dlbmVyYXRvcj4oKTsKKyAgICBK
U0dlbmVyYXRvciogcmVzdWx0ID0gSlNHZW5lcmF0b3I6OmNyZWF0ZSh2bSwgZXhlYy0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpLT5nZW5lcmF0b3JTdHJ1Y3R1cmUoKSk7CisgICAgUkVUVVJOKHJlc3Vs
dCk7Cit9CisKIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF90b190aGlzKQogewogICAgIEJFR0lO
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93
UGF0aHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5o
CmluZGV4IDJmZTc1ZTZjMzY1MjNlZmM5YmE4MmE0NjE2NTUwZGZmNzYyM2ExODguLjdmOTBiMTQw
Yjg5NzkwZmUxNGM0MzA3ZjFhMjBmNzRmZDlkM2ZiYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCkBAIC0zODQsNiArMzg0LDcgQEAgU0xP
V19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9yZXNvbHZlX3Njb3BlKTsKIFNMT1dfUEFUSF9I
SURERU5fREVDTChzbG93X3BhdGhfaXNfdmFyX3Njb3BlKTsKIFNMT1dfUEFUSF9ISURERU5fREVD
TChzbG93X3BhdGhfcmVzb2x2ZV9zY29wZV9mb3JfaG9pc3RpbmdfZnVuY19kZWNsX2luX2V2YWwp
OwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jcmVhdGVfcHJvbWlzZSk7CitTTE9X
X1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2NyZWF0ZV9nZW5lcmF0b3IpOwogU0xPV19QQVRI
X0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jcmVhdGVfcmVzdCk7CiBTTE9XX1BBVEhfSElEREVOX0RF
Q0woc2xvd19wYXRoX2dldF9ieV9pZF93aXRoX3RoaXMpOwogU0xPV19QQVRIX0hJRERFTl9ERUNM
KHNsb3dfcGF0aF9nZXRfYnlfdmFsX3dpdGhfdGhpcyk7CkBAIC0zOTMsNiArMzk0LDcgQEAgU0xP
V19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9kZWZpbmVfZGF0YV9wcm9wZXJ0eSk7CiBTTE9X
X1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2RlZmluZV9hY2Nlc3Nvcl9wcm9wZXJ0eSk7CiBT
TE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3Rocm93X3N0YXRpY19lcnJvcik7CiBTTE9X
X1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25ld19wcm9taXNlKTsKK1NMT1dfUEFUSF9ISURE
RU5fREVDTChzbG93X3BhdGhfbmV3X2dlbmVyYXRvcik7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0wo
c2xvd19wYXRoX25ld19hcnJheV93aXRoX3NwcmVhZCk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0wo
c2xvd19wYXRoX25ld19hcnJheV9idWZmZXIpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3df
cGF0aF9zcHJlYWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50ZXJuYWxGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRl
cm5hbEZ1bmN0aW9uLmNwcAppbmRleCBkZDRhMjIwODAwZjE4MzQzMTcwMTI5ZjkzMWJlMzEyZmYz
N2YxM2QyLi4yMzhlNTQzMzNlYWRjY2JlZjg1YjNlYjYwNDAzZDU3YjBiZjM4OWIxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcApA
QCAtMTE5LDcgKzExOSw2IEBAIFN0cnVjdHVyZSogSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3Vi
Y2xhc3NTdHJ1Y3R1cmVTbG93KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1CiB7CiAgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
Ci0gICAgQVNTRVJUKCFuZXdUYXJnZXQgfHwgbmV3VGFyZ2V0LmlzQ29uc3RydWN0b3Iodm0pKTsK
IAogICAgIEFTU0VSVChiYXNlQ2xhc3MtPmhhc01vbm9Qcm90bygpKTsKIApAQCAtMTMzLDcgKzEz
Miw3IEBAIFN0cnVjdHVyZSogSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1
cmVTbG93KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1CiAgICAgICAgICAgICByZXR1cm4gc3RydWN0
dXJlOwogCiAgICAgICAgIC8vIE5vdGUsIFJlZmxlY3QuY29uc3RydWN0IG1pZ2h0IGNhdXNlIHRo
ZSBwcm9maWxlIHRvIGNodXJuIGJ1dCB3ZSBkb24ndCBjYXJlLgotICAgICAgICBKU1ZhbHVlIHBy
b3RvdHlwZVZhbHVlID0gbmV3VGFyZ2V0LmdldChleGVjLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90
b3R5cGUpOworICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZVZhbHVlID0gdGFyZ2V0RnVuY3Rpb24t
PmdldChleGVjLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUpOwogICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKICAgICAgICAgaWYgKEpTT2JqZWN0KiBwcm90
b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpTT2JqZWN0Kj4odm0sIHByb3RvdHlwZVZhbHVlKSkKICAg
ICAgICAgICAgIHJldHVybiB0YXJnZXRGdW5jdGlvbi0+cmFyZURhdGEodm0pLT5jcmVhdGVJbnRl
cm5hbEZ1bmN0aW9uQWxsb2NhdGlvblN0cnVjdHVyZUZyb21CYXNlKHZtLCBnbG9iYWxPYmplY3Qs
IHByb3RvdHlwZSwgYmFzZUNsYXNzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGVybmFsRnVuY3Rpb24uaAppbmRleCA5MzM2ODg5ZmVlODE1MDE4YzljYWNiNDM1YzY0
YTc4YWMxMGFlNzNiLi4xZmE0ODU4YzdjM2U2ZTIxYjU0YzAzODdlYjZjNDg0M2E4MDEzMWYwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9u
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5o
CkBAIC0xMDIsOCArMTAyLDYgQEAgQUxXQVlTX0lOTElORSBTdHJ1Y3R1cmUqIEludGVybmFsRnVu
Y3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKEV4ZWNTdGF0ZSogZXgKIHsKICAgICAvLyBX
ZSBhbGxvdyBuZXdUYXJnZXQgPT0gSlNWYWx1ZSgpIGJlY2F1c2UgdGhlIEFQSSBuZWVkcyB0byBi
ZSBhYmxlIHRvIGNyZWF0ZSBjbGFzc2VzIHdpdGhvdXQgaGF2aW5nIGEgcmVhbCBKUyBmcmFtZS4K
ICAgICAvLyBTaW5jZSB3ZSBkb24ndCBhbGxvdyBzdWJjbGFzc2luZyBpbiB0aGUgQVBJIHdlIGp1
c3QgdHJlYXQgbmV3VGFyZ2V0ID09IEpTVmFsdWUoKSBhcyBuZXdUYXJnZXQgPT0gZXhlYy0+anND
YWxsZWUoKQotICAgIEFTU0VSVCghbmV3VGFyZ2V0IHx8IG5ld1RhcmdldC5pc0NvbnN0cnVjdG9y
KGV4ZWMtPnZtKCkpKTsKLQogICAgIGlmIChuZXdUYXJnZXQgJiYgbmV3VGFyZ2V0ICE9IGJhc2VD
YWxsZWUpCiAgICAgICAgIHJldHVybiBjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZVNsb3coZXhlYywg
bmV3VGFyZ2V0LCBiYXNlQ2xhc3MpOwogICAgIHJldHVybiBiYXNlQ2xhc3M7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRvci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWIwMGE0
MmYzOTEwNjIzZGNhOTA3NDNjNjgzZTUxZDYxMzVlMGM4ZgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJhdG9yLmNwcApAQCAtMCwwICsxLDcz
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTR2VuZXJh
dG9yLmgiCisKKyNpbmNsdWRlICJCdWlsdGluTmFtZXMuaCIKKyNpbmNsdWRlICJFcnJvci5oIgor
I2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVk
ZSAiSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbElubGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7
CisKK2NvbnN0IENsYXNzSW5mbyBKU0dlbmVyYXRvcjo6c19pbmZvID0geyAiR2VuZXJhdG9yIiwg
JkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU0dl
bmVyYXRvcikgfTsKKworSlNHZW5lcmF0b3IqIEpTR2VuZXJhdG9yOjpjcmVhdGUoVk0mIHZtLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK3sKKyAgICBKU0dlbmVyYXRvciogZ2VuZXJhdG9yID0gbmV3
IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNHZW5lcmF0b3I+KHZtLmhlYXApKSBKU0dlbmVyYXRv
cih2bSwgc3RydWN0dXJlKTsKKyAgICBnZW5lcmF0b3ItPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAg
ICByZXR1cm4gZ2VuZXJhdG9yOworfQorCitTdHJ1Y3R1cmUqIEpTR2VuZXJhdG9yOjpjcmVhdGVT
dHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHBy
b3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVj
dCwgcHJvdG90eXBlLCBUeXBlSW5mbyhKU0dlbmVyYXRvclR5cGUsIFN0cnVjdHVyZUZsYWdzKSwg
aW5mbygpKTsKK30KKworSlNHZW5lcmF0b3I6OkpTR2VuZXJhdG9yKFZNJiB2bSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCisgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisKK3ZvaWQgSlNH
ZW5lcmF0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVh
dGlvbih2bSk7CisgICAgaW50ZXJuYWxGaWVsZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oRmllbGQ6
OlBvbHlQcm90bykpLnNldCh2bSwgdGhpcywganNOdWxsKCkpOworICAgIGludGVybmFsRmllbGQo
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEZpZWxkOjpTdGF0ZSkpLnNldCh2bSwgdGhpcywganNOdW1i
ZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oR2VuZXJhdG9yU3RhdGU6OkluaXQpKSk7CisgICAgaW50
ZXJuYWxGaWVsZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oRmllbGQ6Ok5leHQpKS5zZXQodm0sIHRo
aXMsIGpzVW5kZWZpbmVkKCkpOworICAgIGludGVybmFsRmllbGQoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEZpZWxkOjpUaGlzKSkuc2V0KHZtLCB0aGlzLCBqc1VuZGVmaW5lZCgpKTsKKyAgICBpbnRl
cm5hbEZpZWxkKHN0YXRpY19jYXN0PHVuc2lnbmVkPihGaWVsZDo6RnJhbWUpKS5zZXQodm0sIHRo
aXMsIGpzVW5kZWZpbmVkKCkpOworfQorCit2b2lkIEpTR2VuZXJhdG9yOjp2aXNpdENoaWxkcmVu
KEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgYXV0byogdGhpc09i
amVjdCA9IGpzQ2FzdDxKU0dlbmVyYXRvcio+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRo
aXNPYmplY3QsIHZpc2l0b3IpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhiYmEwYTBkNjgx
NjE3MjkxZGEzN2E0OTc5NTIxMWQ2NWExNjk1ZTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRvci5oCkBAIC0wLDAgKzEsOTAgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkpTSW50ZXJuYWxGaWVsZE9iamVj
dEltcGwuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEpTRnVuY3Rpb247CisKK2NsYXNz
IEpTR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGw8NT4g
eworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBKU0ludGVybmFsRmllbGRPYmplY3RJbXBsPDU+
OworCisgICAgLy8gSlNHZW5lcmF0b3IgaGFzIG9uZSBpbmxpbmUgc3RvcmFnZSBzbG90LCB3aGlj
aCBpcyBwb2ludGluZyBpbnRlcm5hbEZpZWxkKDApLgorICAgIHN0YXRpYyBzaXplX3QgYWxsb2Nh
dGlvblNpemUoQ2hlY2tlZDxzaXplX3Q+IGlubGluZUNhcGFjaXR5KQorICAgIHsKKyAgICAgICAg
QVNTRVJUX1VOVVNFRChpbmxpbmVDYXBhY2l0eSwgaW5saW5lQ2FwYWNpdHkgPT0gMFUgfHwgaW5s
aW5lQ2FwYWNpdHkgPT0gMVUpOworICAgICAgICByZXR1cm4gc2l6ZW9mKEpTR2VuZXJhdG9yKTsK
KyAgICB9CisKKyAgICBlbnVtIGNsYXNzIEdlbmVyYXRvclJlc3VtZU1vZGUgOiBpbnQzMl90IHsK
KyAgICAgICAgTm9ybWFsTW9kZSA9IDAsCisgICAgICAgIFJldHVybk1vZGUgPSAxLAorICAgICAg
ICBUaHJvd01vZGUgPSAyCisgICAgfTsKKworICAgIGVudW0gY2xhc3MgR2VuZXJhdG9yU3RhdGUg
OiBpbnQzMl90IHsKKyAgICAgICAgQ29tcGxldGVkID0gLTEsCisgICAgICAgIEV4ZWN1dGluZyA9
IC0yLAorICAgICAgICBJbml0ID0gMCwKKyAgICB9OworCisgICAgLy8gW3RoaXNdLCBAZ2VuZXJh
dG9yLCBAZ2VuZXJhdG9yU3RhdGUsIEBnZW5lcmF0b3JWYWx1ZSwgQGdlbmVyYXRvclJlc3VtZU1v
ZGUsIEBnZW5lcmF0b3JGcmFtZS4KKyAgICBlbnVtIGNsYXNzIEdlbmVyYXRvckFyZ3VtZW50IDog
aW50MzJfdCB7CisgICAgICAgIFRoaXNWYWx1ZSA9IDAsCisgICAgICAgIEdlbmVyYXRvciA9IDEs
CisgICAgICAgIFN0YXRlID0gMiwKKyAgICAgICAgVmFsdWUgPSAzLAorICAgICAgICBSZXN1bWVN
b2RlID0gNCwKKyAgICAgICAgRnJhbWUgPSA1LAorICAgIH07CisKKyAgICBlbnVtIGNsYXNzIEZp
ZWxkIDogdWludDMyX3QgeworICAgICAgICAvLyBGSVhNRTogSlNHZW5lcmF0b3Igc2hvdWxkIHN1
cHBvcnQgUG9seVByb3RvLCBzaW5jZSBnZW5lcmF0b3IgdGVuZHMgdG8gYmUgY3JlYXRlZCB3aXRo
IHBvbHkgcHJvdG8gbW9kZS4KKyAgICAgICAgLy8gV2UgcmVzZXJ2ZSB0aGUgZmlyc3QgaW50ZXJu
YWwgZmllbGQgZm9yIFBvbHlQcm90byBwcm9wZXJ0eS4gVGhpcyBvZmZzZXQgaXMgaWRlbnRpY2Fs
IHRvIEpTRmluYWxPYmplY3QncyBmaXJzdCBpbmxpbmUgc3RvcmFnZSBzbG90IHdoaWNoIHdpbGwg
YmUgdXNlZCBmb3IgUG9seVByb3RvLgorICAgICAgICBQb2x5UHJvdG8gPSAwLAorICAgICAgICBT
dGF0ZSwKKyAgICAgICAgTmV4dCwKKyAgICAgICAgVGhpcywKKyAgICAgICAgRnJhbWUsCisgICAg
fTsKKyAgICBzdGF0aWNfYXNzZXJ0KG51bWJlck9mSW50ZXJuYWxGaWVsZHMgPT0gNSk7CisKKyAg
ICBzdGF0aWMgSlNHZW5lcmF0b3IqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSopOworICAgIHN0YXRp
YyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1
ZSk7CisKKyAgICBERUNMQVJFX0VYUE9SVF9JTkZPOworCisgICAgc3RhdGljIHZvaWQgdmlzaXRD
aGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOworCitwcm90ZWN0ZWQ6CisgICAgSlNHZW5l
cmF0b3IoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uaAppbmRleCBhNDU0Yjk1ODgwNjFkNDhiNTdmNTZi
MzBlZmUwNjNjODRmMjZiMjkzLi5lZmQyODkwYTMxZmFmODBkZmFjNTBiNzQ0MGI5ZDJmMzQ2ZWNh
MmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRv
ckZ1bmN0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0
b3JGdW5jdGlvbi5oCkBAIC00MSwyOCArNDEsNyBAQCBjbGFzcyBKU0dlbmVyYXRvckZ1bmN0aW9u
IGZpbmFsIDogcHVibGljIEpTRnVuY3Rpb24gewogI2VuZGlmCiAgICAgZnJpZW5kIGNsYXNzIFZN
OwogcHVibGljOgotICAgIHR5cGVkZWYgSlNGdW5jdGlvbiBCYXNlOwotCi0gICAgZW51bSBjbGFz
cyBHZW5lcmF0b3JSZXN1bWVNb2RlIDogaW50MzJfdCB7Ci0gICAgICAgIE5vcm1hbE1vZGUgPSAw
LAotICAgICAgICBSZXR1cm5Nb2RlID0gMSwKLSAgICAgICAgVGhyb3dNb2RlID0gMgotICAgIH07
Ci0KLSAgICBlbnVtIGNsYXNzIEdlbmVyYXRvclN0YXRlIDogaW50MzJfdCB7Ci0gICAgICAgIENv
bXBsZXRlZCA9IC0xLAotICAgICAgICBFeGVjdXRpbmcgPSAtMiwKLSAgICB9OwotCi0gICAgLy8g
W3RoaXNdLCBAZ2VuZXJhdG9yLCBAZ2VuZXJhdG9yU3RhdGUsIEBnZW5lcmF0b3JWYWx1ZSwgQGdl
bmVyYXRvclJlc3VtZU1vZGUsIEBnZW5lcmF0b3JGcmFtZS4KLSAgICBlbnVtIGNsYXNzIEdlbmVy
YXRvckFyZ3VtZW50IDogaW50MzJfdCB7Ci0gICAgICAgIFRoaXNWYWx1ZSA9IDAsCi0gICAgICAg
IEdlbmVyYXRvciA9IDEsCi0gICAgICAgIFN0YXRlID0gMiwKLSAgICAgICAgVmFsdWUgPSAzLAot
ICAgICAgICBSZXN1bWVNb2RlID0gNCwKLSAgICAgICAgRnJhbWUgPSA1LAotICAgIH07CisgICAg
dXNpbmcgQmFzZSA9IEpTRnVuY3Rpb247CiAKICAgICBjb25zdCBzdGF0aWMgdW5zaWduZWQgU3Ry
dWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IGM2YWI4NmI4MDE3Zjkw
NjI4NWFiYTIyN2NkY2QxNThmZjE3NzY2OTEuLjYzYjg1MjQ1ODU4NGFiZjU0YjcyOWFhNTEwYzZl
ZWM1MzEyY2IwM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHAKQEAgLTgxOSw2ICs4MTksNyBAQCBjYXBpdGFsTmFtZSAjIyBDb25zdHJ1
Y3RvciogbG93ZXJOYW1lICMjIENvbnN0cnVjdG9yID0gZmVhdHVyZUZsYWcgPyBjYXBpdGFsTmFt
ZQogCiAgICAgbV9nZW5lcmF0b3JQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgbV9nZW5lcmF0b3JGdW5jdGlvblBy
b3RvdHlwZS5nZXQoKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5KTsKICAgICBtX2dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLT5wdXRE
aXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBt
X2dlbmVyYXRvclByb3RvdHlwZS5nZXQoKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwg
UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKKyAgICBtX2dlbmVyYXRvclN0cnVjdHVyZS5z
ZXQodm0sIHRoaXMsIEpTR2VuZXJhdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZ2Vu
ZXJhdG9yUHJvdG90eXBlLmdldCgpKSk7CiAKICAgICBtX2FzeW5jRnVuY3Rpb25Qcm90b3R5cGUu
c2V0KHZtLCB0aGlzLCBBc3luY0Z1bmN0aW9uUHJvdG90eXBlOjpjcmVhdGUodm0sIEFzeW5jRnVu
Y3Rpb25Qcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3Rv
dHlwZS5nZXQoKSkpKTsKICAgICBBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IqIGFzeW5jRnVuY3Rp
b25Db25zdHJ1Y3RvciA9IEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBBc3lu
Y0Z1bmN0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgZnVuY3Rpb25D
b25zdHJ1Y3RvciksIG1fYXN5bmNGdW5jdGlvblByb3RvdHlwZS5nZXQoKSk7CkBAIC0xNzY3LDYg
KzE3NjgsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2Vs
bCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+
bV9nZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09i
amVjdC0+bV9hc3luY0Z1bmN0aW9uU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlz
T2JqZWN0LT5tX2FzeW5jR2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUpOworICAgIHZpc2l0b3Iu
YXBwZW5kKHRoaXNPYmplY3QtPm1fZ2VuZXJhdG9yU3RydWN0dXJlKTsKICAgICB0aGlzT2JqZWN0
LT5tX2l0ZXJhdG9yUmVzdWx0T2JqZWN0U3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogICAgIHZp
c2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlKTsK
ICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3JlZ0V4cE1hdGNoZXNBcnJheVdpdGhH
cm91cHNTdHJ1Y3R1cmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmgKaW5kZXggMTA1ZDU2YThjOGMzZDBhMTQxYzQ0MGFmNzRiMDg5ZTc3YmFhNGNi
OS4uMmFkOTFhNTNmOGVhZThjNDQ2NWMxMzczYTg4NDMzZTk2Yjk4MzcyMSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC0zNzQsNiArMzc0
LDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9i
amVjdCB7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9hc3luY0Z1bmN0aW9uU3RydWN0
dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fYXN5bmNHZW5lcmF0b3JGdW5jdGlv
blN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2dlbmVyYXRvckZ1bmN0
aW9uU3RydWN0dXJlOworICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fZ2VuZXJhdG9yU3Ry
dWN0dXJlOwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX2l0
ZXJhdG9yUmVzdWx0T2JqZWN0U3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+
IG1fcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1
cmU+IG1fcmVnRXhwTWF0Y2hlc0FycmF5V2l0aEdyb3Vwc1N0cnVjdHVyZTsKQEAgLTc1Miw2ICs3
NTMsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxl
T2JqZWN0IHsKICAgICBTdHJ1Y3R1cmUqIG51bWJlck9iamVjdFN0cnVjdHVyZSgpIGNvbnN0IHsg
cmV0dXJuIG1fbnVtYmVyT2JqZWN0U3RydWN0dXJlLmdldCh0aGlzKTsgfQogICAgIFN0cnVjdHVy
ZSogbWFwU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9tYXBTdHJ1Y3R1cmUuZ2V0KCk7IH0K
ICAgICBTdHJ1Y3R1cmUqIHJlZ0V4cFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVnRXhw
U3RydWN0dXJlLmdldCgpOyB9CisgICAgU3RydWN0dXJlKiBnZW5lcmF0b3JTdHJ1Y3R1cmUoKSBj
b25zdCB7IHJldHVybiBtX2dlbmVyYXRvclN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVy
ZSogZ2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2dlbmVyYXRv
ckZ1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBhc3luY0Z1bmN0aW9u
U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9hc3luY0Z1bmN0aW9uU3RydWN0dXJlLmdldCgp
OyB9CiAgICAgU3RydWN0dXJlKiBhc3luY0dlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlKCkgY29u
c3QgeyByZXR1cm4gbV9hc3luY0dlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmNwcAppbmRleCA4NDliMzc5MTg4ZWZj
ZTU3MDkyM2Y1YTFhNWE0ZjcxYmM5ZDk5NDc2Li5kYWM1ZTY5ZGEyMDQ1MWI5MGZkNDhiMDdhNzBj
MTEyMjNmNTcwNzZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5jcHAK
QEAgLTk2LDYgKzk2LDcgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEpT
Qzo6SlNUeXBlIHR5cGUpCiAgICAgQ0FTRShXaXRoU2NvcGVUeXBlKQogICAgIENBU0UoUmVnRXhw
T2JqZWN0VHlwZSkKICAgICBDQVNFKFByb3h5T2JqZWN0VHlwZSkKKyAgICBDQVNFKEpTR2VuZXJh
dG9yVHlwZSkKICAgICBDQVNFKEpTUHJvbWlzZVR5cGUpCiAgICAgQ0FTRShKU01hcFR5cGUpCiAg
ICAgQ0FTRShKU1NldFR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCmlu
ZGV4IDhkMzVhYzc3OTgzNzM5YjFhM2ZlNWQ1MGE2ZjkxYjkwMTI5ZmY3N2QuLjAxZTcwMjI3MzQ3
NjRiMThkOWUzMWE5MWVlOGNkNjBhOTk1OTI1ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTVHlwZS5oCkBAIC0xMDgsNiArMTA4LDcgQEAgZW51bSBKU1R5cGUgOiB1aW50OF90IHsK
IAogICAgIFJlZ0V4cE9iamVjdFR5cGUsCiAgICAgUHJveHlPYmplY3RUeXBlLAorICAgIEpTR2Vu
ZXJhdG9yVHlwZSwKICAgICBKU1Byb21pc2VUeXBlLAogICAgIEpTTWFwVHlwZSwKICAgICBKU1Nl
dFR5cGUsCmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9n
CmluZGV4IGI1ZThiNzFiZjgzYjNjZjg2ODg0OTVjOWQ1MTEwZmVmNzAwMTk1NDAuLmVmNWU1ZmY2
NjA4NWU1MGI2YTA0NDdjMTRiZGZhZWNkZDc2MjgzNTIgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hh
bmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTktMDkt
MDkgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbSlNDXSBH
ZW5lcmF0b3Igc2hvdWxkIGhhdmUgaW50ZXJuYWwgZmllbGRzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDExNTkKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0cmVzcy9jcmVhdGUtZ2VuZXJhdG9yLmpz
OiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHRlc3QuZ2VuZXJhdG9yKToK
KyAgICAgICAgKHRlc3QpOgorCiAyMDE5LTA5LTA2ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxl
LmNvbT4KIAogICAgICAgICBHYXJkZW5pbmc6IHNwZWN1bGF0aXZlIHRlc3QgZml4IHRvIGdyZWVu
IGJvdHMuCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9jcmVhdGUtZ2VuZXJhdG9yLmpzIGIv
SlNUZXN0cy9zdHJlc3MvY3JlYXRlLWdlbmVyYXRvci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MmQwMzA1MWI0
YzA4MmRmM2FlYjk4OTU4NGRkMTMyYmZmMzNlMTNkCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0
cy9zdHJlc3MvY3JlYXRlLWdlbmVyYXRvci5qcwpAQCAtMCwwICsxLDIwIEBACitmdW5jdGlvbiBz
aG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQp
CisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKwor
ZnVuY3Rpb24gdGVzdCgpIHsKKyAgICBmdW5jdGlvbiogZ2VuZXJhdG9yKCkgeworICAgICAgICBy
ZXR1cm4gdGhpczsKKyAgICB9CisKKyAgICB2YXIgZyA9IGdlbmVyYXRvcigpOworICAgIHNob3Vs
ZEJlKGcuX19wcm90b19fLCBnZW5lcmF0b3IucHJvdG90eXBlKTsKKyAgICByZXR1cm4gZzsKK30K
KworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTY7ICsraSkgeworICAgIHZhciBnMSA9IHRlc3QoKTsK
KyAgICB2YXIgZzIgPSB0ZXN0KCk7CisgICAgc2hvdWxkQmUoZzEuX19wcm90b19fICE9IGcyLl9f
cHJvdG9fXywgdHJ1ZSk7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378412</attachid>
            <date>2019-09-09 15:48:54 -0700</date>
            <delta_ts>2019-09-16 03:42:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201159-20190909154853.patch</filename>
            <type>text/plain</type>
            <size>105569</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5NjY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
ZDFlNzA2YmQ1YTk5ODU2NTBkMDAwZDM4OWY5NzcyYzE3ZDY0ZjNlLi5lYzM3YTZmNTE2YzFiYTli
OGZmODQ3YzNhYzc0ZTVkNGVmMGFjYzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMjggQEAKKzIwMTktMDktMDkgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBHZW5lcmF0b3Igc2hvdWxkIGhhdmUgaW50ZXJuYWwgZmllbGRz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDExNTkK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEphdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogU291cmNlcy50
eHQ6CisgICAgICAgICogYnVpbHRpbnMvQXN5bmNGdW5jdGlvblByb3RvdHlwZS5qczoKKyAgICAg
ICAgKGdsb2JhbFByaXZhdGUuYXN5bmNGdW5jdGlvblJlc3VtZSk6CisgICAgICAgICogYnVpbHRp
bnMvR2VuZXJhdG9yUHJvdG90eXBlLmpzOgorICAgICAgICAoZ2xvYmFsUHJpdmF0ZS5nZW5lcmF0
b3JSZXN1bWUpOgorICAgICAgICAobmV4dCk6CisgICAgICAgIChyZXR1cm4pOgorICAgICAgICAo
dGhyb3cpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNw
cDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb246OnJ1bik6CisgICAg
ICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5jcHA6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6OkJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkp
OgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuaDoKKyAgICAg
ICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3QucmI6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNv
ZGVVc2VEZWYuaDoKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCk6
CisgICAgICAgIChKU0M6OmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAq
IGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluaXNo
Q3JlYXRpb24pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmFsaXplTExJbnRJbmxpbmVD
YWNoZXMpOgorICAgICAgICAqIGJ5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcDoKKyAgICAgICAg
KEpTQzo6c3BlY3VsYXRpb25Gcm9tSlNUeXBlKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Qnl0
ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1
dEdlbmVyYXRvckZpZWxkcyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
Q3JlYXRlR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRO
ZXdHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFlpZWxk
KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWxlZ2F0ZVlpZWxkKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZW5lcmF0b3JTdGF0ZUNoYW5n
ZSk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXNHZW5lcmF0b3IpOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdG9yU3RhdGVSZWdpc3Rlcik6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0b3JWYWx1ZVJlZ2lzdGVyKToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3Rlcik6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0b3JGcmFtZVJlZ2lzdGVyKToK
KyAgICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6
Z2VuZXJhdG9ySW50ZXJuYWxGaWVsZEluZGV4KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVJbnRy
aW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19nZXRHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19wdXRHZW5l
cmF0b3JJbnRlcm5hbEZpZWxkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVJbnRyaW5zaWNOb2Rl
OjplbWl0X2ludHJpbnNpY19pc0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uTm9k
ZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklu
bGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0
U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sp
OgorICAgICAgICAqIGRmZy9ERkdDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OmNhcGFiaWxpdHlMZXZlbCk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAgICAg
ICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcnNFeGl0
U3RhdGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJzRXhpdFN0YXRlKToKKyAgICAg
ICAgKiBkZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OkNvbnN0YW50Rm9sZGluZ1BoYXNlOjpmb2xkQ29uc3RhbnRzKToKKyAgICAgICAgKiBkZmcvREZH
RG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAgICAqIGRmZy9E
RkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5v
ZGUpOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwSXNDZWxsV2l0aFR5cGUp
OgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6Y29u
dmVydFRvTmV3R2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNTdHJ1Y3R1
cmUpOgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdPcGVy
YXRpb25zLmNwcDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGRm
Zy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1Nh
ZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAg
ICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjb21waWxlQ3JlYXRlR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0dlbmVyYXRvcik6CisgICAgICAgICogZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmg6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAg
KiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRp
b25QaGFzZS5jcHA6CisgICAgICAgICogZnRsL0ZUTENhcGFiaWxpdGllcy5jcHA6CisgICAgICAg
IChKU0M6OkZUTDo6Y2FuQ29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5j
cHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOb2RlKToK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5ld0dlbmVyYXRv
cik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDcmVhdGVH
ZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjppc0NlbGxX
aXRoVHlwZSk6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJp
dmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVT
bG93Q2FzZXMpOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBq
aXQvSklUT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfaW50ZXJuYWxfZmllbGQpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2ludGVybmFsX2ZpZWxkKToKKyAgICAgICAgKiBsbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQ
YXRocy5jcHA6CisgICAgICAgIChKU0M6OlNMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBydW50
aW1lL0NvbW1vblNsb3dQYXRocy5oOgorICAgICAgICAqIHJ1bnRpbWUvSW50ZXJuYWxGdW5jdGlv
bi5jcHA6CisgICAgICAgIChKU0M6OkludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3Ry
dWN0dXJlU2xvdyk6CisgICAgICAgICogcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmg6CisgICAg
ICAgIChKU0M6OkludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKToKKyAg
ICAgICAgKiBydW50aW1lL0pTR2VuZXJhdG9yLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkpT
R2VuZXJhdG9yOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpKU0dlbmVyYXRvcjo6Y3JlYXRlU3Ry
dWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmF0b3I6OkpTR2VuZXJhdG9yKToKKyAgICAg
ICAgKEpTQzo6SlNHZW5lcmF0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNH
ZW5lcmF0b3I6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmF0b3Iu
aDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3JG
dW5jdGlvbi5oLgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5oOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2Jh
bE9iamVjdDo6aW5pdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxk
cmVuKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6
OkpTR2xvYmFsT2JqZWN0OjpnZW5lcmF0b3JTdHJ1Y3R1cmUgY29uc3QpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNUeXBlLmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAg
ICogcnVudGltZS9KU1R5cGUuaDoKKwogMjAxOS0wOS0wOSAgWXVzdWtlIFN1enVraSAgPHlzdXp1
a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIFVzZSBtZXRhZGF0YSB0YWJsZSB0byBpdGVy
YXRlIHNwZWNpZmljIGJ5dGVjb2RlIG1ldGFkYXRhIGluc3RlYWQgb2YgcHJvcGVydHlBY2Nlc3NJ
bnN0cnVjdGlvbnMgdmVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDBkODhi
NTQ0Y2FjMWY3OGY4ZThlNjk3NmVmMDIwYmMzYWVkZjg3ZDYuLjI1MzA0MDMxOWYwZDJiZDMzNjJi
YzU2MjA4NGM0NWQ4NDVmZWUzNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0x
ODA0LDYgKzE4MDQsNyBAQAogCQlFMzQwMEVDMTIyQTFDQzdCMDA5REVENTQgLyogRnVuY3Rpb25F
eGVjdXRhYmxlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTM0MDBFQzAyMkExQ0M3ODAwOURFRDU0IC8qIEZ1bmN0aW9uRXhlY3V0YWJsZUlu
bGluZXMuaCAqLzsgfTsKIAkJRTM0RTY1NzUyMDY2OEVBQTAwRkI4MUFDIC8qIFBhcnNlSGFzaC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM0RTY1NzMy
MDY2OEU4RDAwRkI4MUFDIC8qIFBhcnNlSGFzaC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzNEVEQkY3MURCNUZGQzkwMERDODdBNSAvKiBGcmFt
ZVRyYWNlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzNEVEQkY2MURCNUZGQzEwMERDODdBNSAvKiBGcmFtZVRyYWNlcnMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMzRGOTMwRTIzMjJEODgyMDAy
QjhEQjQgLyogSlNHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUzNEY5MzBDMjMyMkQ4ODEwMDJCOERCNCAvKiBKU0dlbmVyYXRvci5oICov
OyB9OwogCQlFMzUwNzA4QTFEQzQ5QkJGMDA4OUJDRDYgLyogRE9NSklUU2lnbmF0dXJlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzUwNzA4OTFEQzQ5
QkI2MDA4OUJDRDYgLyogRE9NSklUU2lnbmF0dXJlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM1NDYyMkIxQjYwNjVEMTAwNTQ1Mzg2IC8qIENv
bnN0cnVjdEFiaWxpdHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUzNTQ2MjJBMUI2MDY1RDEwMDU0NTM4NiAvKiBDb25zdHJ1Y3RBYmlsaXR5LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM1NTVCOEEx
REFFMDNBNTAwRjM2OTIxIC8qIERPTUpJVENhbGxET01HZXR0ZXJTbmlwcGV0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzU1NUI4OTFEQUUwM0EyMDBG
MzY5MjEgLyogRE9NSklUQ2FsbERPTUdldHRlclNuaXBwZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNDg5OSw2ICs0OTAwLDggQEAKIAkJRTM0
RTY1NzMyMDY2OEU4RDAwRkI4MUFDIC8qIFBhcnNlSGFzaC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBQYXJzZUhhc2guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTM0RTY1NzQyMDY2OEU4RTAwRkI4MUFDIC8qIFBhcnNlSGFzaC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYXJzZUhhc2guY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlFMzRFREJGNjFEQjVGRkMxMDBEQzg3QTUgLyogRnJhbWVUcmFjZXJzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZyYW1lVHJhY2Vycy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlFMzRGOTMwQjIzMjJEODgxMDAyQjhEQjQgLyogSlNHZW5lcmF0
b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNHZW5lcmF0b3Iu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzRGOTMwQzIzMjJEODgxMDAyQjhE
QjQgLyogSlNHZW5lcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNH
ZW5lcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM1MDcwODkxREM0OUJC
NjAwODlCQ0Q2IC8qIERPTUpJVFNpZ25hdHVyZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBET01KSVRTaWduYXR1cmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTM1NDYyMkExQjYwNjVEMTAwNTQ1Mzg2IC8qIENvbnN0cnVjdEFiaWxpdHkuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29uc3RydWN0QWJpbGl0eS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFMzU1NUI4OTFEQUUwM0EyMDBGMzY5MjEgLyogRE9NSklUQ2FsbERP
TUdldHRlclNuaXBwZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NSklU
Q2FsbERPTUdldHRlclNuaXBwZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTcx
NzAsNiArNzE3Myw4IEBACiAJCQkJRjY5MkE4NUUwMjU1NTk3RDAxRkY2MEY3IC8qIEpTRnVuY3Rp
b24uY3BwICovLAogCQkJCUY2OTJBODVGMDI1NTU5N0QwMUZGNjBGNyAvKiBKU0Z1bmN0aW9uLmgg
Ki8sCiAJCQkJQTcyMDI4QjkxNzk3NjAzRDAwOTgwMjhDIC8qIEpTRnVuY3Rpb25JbmxpbmVzLmgg
Ki8sCisJCQkJRTM0RjkzMEIyMzIyRDg4MTAwMkI4REI0IC8qIEpTR2VuZXJhdG9yLmNwcCAqLywK
KwkJCQlFMzRGOTMwQzIzMjJEODgxMDAyQjhEQjQgLyogSlNHZW5lcmF0b3IuaCAqLywKIAkJCQk3
MEI3OTE4QzFDMDI0NDYyMDAyNDgxRTIgLyogSlNHZW5lcmF0b3JGdW5jdGlvbi5jcHAgKi8sCiAJ
CQkJNzBCNzkxOEQxQzAyNDQ2MjAwMjQ4MUUyIC8qIEpTR2VuZXJhdG9yRnVuY3Rpb24uaCAqLywK
IAkJCQkwRjJCNjZDMzE3QjZCNUFCMDBBN0FFM0YgLyogSlNHZW5lcmljVHlwZWRBcnJheVZpZXcu
aCAqLywKQEAgLTk2MjksNiArOTYzNCw3IEBACiAJCQkJMEYyQjY2RjAxN0I2QjVBQjAwQTdBRTNG
IC8qIEpTRmxvYXQ2NEFycmF5LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQxRjBFMTZGNUNE
MDBCMzQ0NjAgLyogSlNGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTcyMDI4QkExNzk3
NjAzRDAwOTgwMjhDIC8qIEpTRnVuY3Rpb25JbmxpbmVzLmggaW4gSGVhZGVycyAqLywKKwkJCQlF
MzRGOTMwRTIzMjJEODgyMDAyQjhEQjQgLyogSlNHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLAog
CQkJCTcwQjc5MTlDMUMwMjRBNDkwMDI0ODFFMiAvKiBKU0dlbmVyYXRvckZ1bmN0aW9uLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjJCNjZGMTE3QjZCNUFCMDBBN0FFM0YgLyogSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXcuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NkYyMTdCNkI1QUIwMEE3QUUz
RiAvKiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCAyNjIxOTNiMjM4NTEyZjhlOTVkZWQxNGFi
Mjg5MGM1MWRiYzVlOWMwLi5kMTAxMjAyMjdhMGMxYmVhNTk4OTJhMjY5ZGFjYjRmODU0MGI1Zjlj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC04MjQsNiArODI0LDcgQEAgcnVudGlt
ZS9KU0RhdGVNYXRoLmNwcAogcnVudGltZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlw
ZS5jcHAKIHJ1bnRpbWUvSlNGaXhlZEFycmF5LmNwcAogcnVudGltZS9KU0Z1bmN0aW9uLmNwcAor
cnVudGltZS9KU0dlbmVyYXRvci5jcHAKIHJ1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5jcHAK
IHJ1bnRpbWUvSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQuY3BwCiBydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0Fz
eW5jRnVuY3Rpb25Qcm90b3R5cGUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMv
QXN5bmNGdW5jdGlvblByb3RvdHlwZS5qcwppbmRleCA1MjE0YmQ2ZjNhMWI0ZTJlNWYxZTk1YWEx
Yzk5MTE4OTliODk1MDBmLi45NjhjZjFlNzM0NjE5MmYxZDQ1OGMzNzk4ZWMzN2M4ZDFiYzkxZDAy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXN5bmNGdW5jdGlv
blByb3RvdHlwZS5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXN5bmNG
dW5jdGlvblByb3RvdHlwZS5qcwpAQCAtMzEsMjIgKzMxLDIyIEBAIGZ1bmN0aW9uIGFzeW5jRnVu
Y3Rpb25SZXN1bWUoZ2VuZXJhdG9yLCBwcm9taXNlLCBzZW50VmFsdWUsIHJlc3VtZU1vZGUpCiAK
ICAgICBAYXNzZXJ0KEBpc1Byb21pc2UocHJvbWlzZSkpOwogCi0gICAgdmFyIHN0YXRlID0gQGdl
dEJ5SWREaXJlY3RQcml2YXRlKGdlbmVyYXRvciwgImdlbmVyYXRvclN0YXRlIik7CisgICAgdmFy
IHN0YXRlID0gQGdldEdlbmVyYXRvckludGVybmFsRmllbGQoZ2VuZXJhdG9yLCBAZ2VuZXJhdG9y
RmllbGRTdGF0ZSk7CiAgICAgdmFyIHZhbHVlID0gQHVuZGVmaW5lZDsKIAogICAgIGlmIChzdGF0
ZSA9PT0gQEdlbmVyYXRvclN0YXRlQ29tcGxldGVkIHx8IChyZXN1bWVNb2RlICE9PSBAR2VuZXJh
dG9yUmVzdW1lTW9kZU5vcm1hbCAmJiByZXN1bWVNb2RlICE9PSBAR2VuZXJhdG9yUmVzdW1lTW9k
ZVRocm93KSkKICAgICAgICAgQHRocm93VHlwZUVycm9yKCJBc3luYyBmdW5jdGlvbiBpbGxlZ2Fs
bHkgcmVzdW1lZCIpOwogCiAgICAgdHJ5IHsKLSAgICAgICAgQHB1dEJ5SWREaXJlY3RQcml2YXRl
KGdlbmVyYXRvciwgImdlbmVyYXRvclN0YXRlIiwgQEdlbmVyYXRvclN0YXRlRXhlY3V0aW5nKTsK
LSAgICAgICAgdmFsdWUgPSBAZ2V0QnlJZERpcmVjdFByaXZhdGUoZ2VuZXJhdG9yLCAiZ2VuZXJh
dG9yTmV4dCIpLkBjYWxsKEBnZXRCeUlkRGlyZWN0UHJpdmF0ZShnZW5lcmF0b3IsICJnZW5lcmF0
b3JUaGlzIiksIGdlbmVyYXRvciwgc3RhdGUsIHNlbnRWYWx1ZSwgcmVzdW1lTW9kZSwgQGdldEJ5
SWREaXJlY3RQcml2YXRlKGdlbmVyYXRvciwgImdlbmVyYXRvckZyYW1lIikpOwotICAgICAgICBp
ZiAoQGdldEJ5SWREaXJlY3RQcml2YXRlKGdlbmVyYXRvciwgImdlbmVyYXRvclN0YXRlIikgPT09
IEBHZW5lcmF0b3JTdGF0ZUV4ZWN1dGluZykgewotICAgICAgICAgICAgQHB1dEJ5SWREaXJlY3RQ
cml2YXRlKGdlbmVyYXRvciwgImdlbmVyYXRvclN0YXRlIiwgQEdlbmVyYXRvclN0YXRlQ29tcGxl
dGVkKTsKKyAgICAgICAgQHB1dEdlbmVyYXRvckludGVybmFsRmllbGQoZ2VuZXJhdG9yLCBAZ2Vu
ZXJhdG9yRmllbGRTdGF0ZSwgQEdlbmVyYXRvclN0YXRlRXhlY3V0aW5nKTsKKyAgICAgICAgdmFs
dWUgPSBAZ2V0R2VuZXJhdG9ySW50ZXJuYWxGaWVsZChnZW5lcmF0b3IsIEBnZW5lcmF0b3JGaWVs
ZE5leHQpLkBjYWxsKEBnZXRHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKGdlbmVyYXRvciwgQGdlbmVy
YXRvckZpZWxkVGhpcyksIGdlbmVyYXRvciwgc3RhdGUsIHNlbnRWYWx1ZSwgcmVzdW1lTW9kZSwg
QGdldEdlbmVyYXRvckludGVybmFsRmllbGQoZ2VuZXJhdG9yLCBAZ2VuZXJhdG9yRmllbGRGcmFt
ZSkpOworICAgICAgICBpZiAoQGdldEdlbmVyYXRvckludGVybmFsRmllbGQoZ2VuZXJhdG9yLCBA
Z2VuZXJhdG9yRmllbGRTdGF0ZSkgPT09IEBHZW5lcmF0b3JTdGF0ZUV4ZWN1dGluZykgeworICAg
ICAgICAgICAgQHB1dEdlbmVyYXRvckludGVybmFsRmllbGQoZ2VuZXJhdG9yLCBAZ2VuZXJhdG9y
RmllbGRTdGF0ZSwgQEdlbmVyYXRvclN0YXRlQ29tcGxldGVkKTsKICAgICAgICAgICAgIEByZXNv
bHZlUHJvbWlzZVdpdGhGaXJzdFJlc29sdmluZ0Z1bmN0aW9uQ2FsbENoZWNrKHByb21pc2UsIHZh
bHVlKTsKICAgICAgICAgICAgIHJldHVybiBwcm9taXNlOwogICAgICAgICB9CiAgICAgfSBjYXRj
aCAoZXJyb3IpIHsKLSAgICAgICAgQHB1dEJ5SWREaXJlY3RQcml2YXRlKGdlbmVyYXRvciwgImdl
bmVyYXRvclN0YXRlIiwgQEdlbmVyYXRvclN0YXRlQ29tcGxldGVkKTsKKyAgICAgICAgQHB1dEdl
bmVyYXRvckludGVybmFsRmllbGQoZ2VuZXJhdG9yLCBAZ2VuZXJhdG9yRmllbGRTdGF0ZSwgQEdl
bmVyYXRvclN0YXRlQ29tcGxldGVkKTsKICAgICAgICAgQHJlamVjdFByb21pc2VXaXRoRmlyc3RS
ZXNvbHZpbmdGdW5jdGlvbkNhbGxDaGVjayhwcm9taXNlLCBlcnJvcik7CiAgICAgICAgIHJldHVy
biBwcm9taXNlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWls
dGlucy9HZW5lcmF0b3JQcm90b3R5cGUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRp
bnMvR2VuZXJhdG9yUHJvdG90eXBlLmpzCmluZGV4IGIyODAxZGY4ODJiOGE4YmM2ZTE1ZTZlMTRh
OWYyOTZjZDFjNjkyNWQuLjgzOTNlYTI4YWU4OTk3NjkyY2ZlYjZlZTI1NGJhZjc5NTI3MWMwOGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9HZW5lcmF0b3JQcm90
b3R5cGUuanMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0dlbmVyYXRvclBy
b3RvdHlwZS5qcwpAQCAtMzQsMTQgKzM0LDE0IEBAIGZ1bmN0aW9uIGdlbmVyYXRvclJlc3VtZShn
ZW5lcmF0b3IsIHN0YXRlLCBnZW5lcmF0b3JUaGlzLCBzZW50VmFsdWUsIHZhbHVlLCByZXN1CiAg
ICAgdmFyIGRvbmUgPSBzdGF0ZSA9PT0gQEdlbmVyYXRvclN0YXRlQ29tcGxldGVkOwogICAgIGlm
ICghZG9uZSkgewogICAgICAgICB0cnkgewotICAgICAgICAgICAgQHB1dEJ5SWREaXJlY3RQcml2
YXRlKGdlbmVyYXRvciwgImdlbmVyYXRvclN0YXRlIiwgQEdlbmVyYXRvclN0YXRlRXhlY3V0aW5n
KTsKLSAgICAgICAgICAgIHZhbHVlID0gQGdldEJ5SWREaXJlY3RQcml2YXRlKGdlbmVyYXRvciwg
ImdlbmVyYXRvck5leHQiKS5AY2FsbChnZW5lcmF0b3JUaGlzLCBnZW5lcmF0b3IsIHN0YXRlLCBz
ZW50VmFsdWUsIHJlc3VtZU1vZGUsIEBnZXRCeUlkRGlyZWN0UHJpdmF0ZShnZW5lcmF0b3IsICJn
ZW5lcmF0b3JGcmFtZSIpKTsKLSAgICAgICAgICAgIGlmIChAZ2V0QnlJZERpcmVjdFByaXZhdGUo
Z2VuZXJhdG9yLCAiZ2VuZXJhdG9yU3RhdGUiKSA9PT0gQEdlbmVyYXRvclN0YXRlRXhlY3V0aW5n
KSB7Ci0gICAgICAgICAgICAgICAgQHB1dEJ5SWREaXJlY3RQcml2YXRlKGdlbmVyYXRvciwgImdl
bmVyYXRvclN0YXRlIiwgQEdlbmVyYXRvclN0YXRlQ29tcGxldGVkKTsKKyAgICAgICAgICAgIEBw
dXRHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKGdlbmVyYXRvciwgQGdlbmVyYXRvckZpZWxkU3RhdGUs
IEBHZW5lcmF0b3JTdGF0ZUV4ZWN1dGluZyk7CisgICAgICAgICAgICB2YWx1ZSA9IEBnZXRHZW5l
cmF0b3JJbnRlcm5hbEZpZWxkKGdlbmVyYXRvciwgQGdlbmVyYXRvckZpZWxkTmV4dCkuQGNhbGwo
Z2VuZXJhdG9yVGhpcywgZ2VuZXJhdG9yLCBzdGF0ZSwgc2VudFZhbHVlLCByZXN1bWVNb2RlLCBA
Z2V0R2VuZXJhdG9ySW50ZXJuYWxGaWVsZChnZW5lcmF0b3IsIEBnZW5lcmF0b3JGaWVsZEZyYW1l
KSk7CisgICAgICAgICAgICBpZiAoQGdldEdlbmVyYXRvckludGVybmFsRmllbGQoZ2VuZXJhdG9y
LCBAZ2VuZXJhdG9yRmllbGRTdGF0ZSkgPT09IEBHZW5lcmF0b3JTdGF0ZUV4ZWN1dGluZykgewor
ICAgICAgICAgICAgICAgIEBwdXRHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKGdlbmVyYXRvciwgQGdl
bmVyYXRvckZpZWxkU3RhdGUsIEBHZW5lcmF0b3JTdGF0ZUNvbXBsZXRlZCk7CiAgICAgICAgICAg
ICAgICAgZG9uZSA9IHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gY2F0Y2ggKGVycm9y
KSB7Ci0gICAgICAgICAgICBAcHV0QnlJZERpcmVjdFByaXZhdGUoZ2VuZXJhdG9yLCAiZ2VuZXJh
dG9yU3RhdGUiLCBAR2VuZXJhdG9yU3RhdGVDb21wbGV0ZWQpOworICAgICAgICAgICAgQHB1dEdl
bmVyYXRvckludGVybmFsRmllbGQoZ2VuZXJhdG9yLCBAZ2VuZXJhdG9yRmllbGRTdGF0ZSwgQEdl
bmVyYXRvclN0YXRlQ29tcGxldGVkKTsKICAgICAgICAgICAgIHRocm93IGVycm9yOwogICAgICAg
ICB9CiAgICAgfQpAQCAtNTIsNDMgKzUyLDQzIEBAIGZ1bmN0aW9uIG5leHQodmFsdWUpCiB7CiAg
ICAgInVzZSBzdHJpY3QiOwogCi0gICAgdmFyIHN0YXRlID0gQGdldEJ5SWREaXJlY3RQcml2YXRl
KHRoaXMsICJnZW5lcmF0b3JTdGF0ZSIpOwotICAgIGlmICh0eXBlb2Ygc3RhdGUgIT09ICJudW1i
ZXIiKQorICAgIGlmICghQGlzR2VuZXJhdG9yKHRoaXMpKQogICAgICAgICBAdGhyb3dUeXBlRXJy
b3IoInx0aGlzfCBzaG91bGQgYmUgYSBnZW5lcmF0b3IiKTsKIAorICAgIHZhciBzdGF0ZSA9IEBn
ZXRHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKHRoaXMsIEBnZW5lcmF0b3JGaWVsZFN0YXRlKTsKICAg
ICBpZiAoc3RhdGUgPT09IEBHZW5lcmF0b3JTdGF0ZUV4ZWN1dGluZykKICAgICAgICAgQHRocm93
VHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgZXhlY3V0aW5nIik7CiAKLSAgICByZXR1cm4gQGdlbmVy
YXRvclJlc3VtZSh0aGlzLCBzdGF0ZSwgQGdldEJ5SWREaXJlY3RQcml2YXRlKHRoaXMsICJnZW5l
cmF0b3JUaGlzIiksIHZhbHVlLCBAdW5kZWZpbmVkLCBAR2VuZXJhdG9yUmVzdW1lTW9kZU5vcm1h
bCk7CisgICAgcmV0dXJuIEBnZW5lcmF0b3JSZXN1bWUodGhpcywgc3RhdGUsIEBnZXRHZW5lcmF0
b3JJbnRlcm5hbEZpZWxkKHRoaXMsIEBnZW5lcmF0b3JGaWVsZFRoaXMpLCB2YWx1ZSwgQHVuZGVm
aW5lZCwgQEdlbmVyYXRvclJlc3VtZU1vZGVOb3JtYWwpOwogfQogCiBmdW5jdGlvbiByZXR1cm4o
dmFsdWUpCiB7CiAgICAgInVzZSBzdHJpY3QiOwogCi0gICAgdmFyIHN0YXRlID0gQGdldEJ5SWRE
aXJlY3RQcml2YXRlKHRoaXMsICJnZW5lcmF0b3JTdGF0ZSIpOwotICAgIGlmICh0eXBlb2Ygc3Rh
dGUgIT09ICJudW1iZXIiKQorICAgIGlmICghQGlzR2VuZXJhdG9yKHRoaXMpKQogICAgICAgICBA
dGhyb3dUeXBlRXJyb3IoInx0aGlzfCBzaG91bGQgYmUgYSBnZW5lcmF0b3IiKTsKIAorICAgIHZh
ciBzdGF0ZSA9IEBnZXRHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKHRoaXMsIEBnZW5lcmF0b3JGaWVs
ZFN0YXRlKTsKICAgICBpZiAoc3RhdGUgPT09IEBHZW5lcmF0b3JTdGF0ZUV4ZWN1dGluZykKICAg
ICAgICAgQHRocm93VHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgZXhlY3V0aW5nIik7CiAKLSAgICBy
ZXR1cm4gQGdlbmVyYXRvclJlc3VtZSh0aGlzLCBzdGF0ZSwgQGdldEJ5SWREaXJlY3RQcml2YXRl
KHRoaXMsICJnZW5lcmF0b3JUaGlzIiksIHZhbHVlLCB2YWx1ZSwgQEdlbmVyYXRvclJlc3VtZU1v
ZGVSZXR1cm4pOworICAgIHJldHVybiBAZ2VuZXJhdG9yUmVzdW1lKHRoaXMsIHN0YXRlLCBAZ2V0
R2VuZXJhdG9ySW50ZXJuYWxGaWVsZCh0aGlzLCBAZ2VuZXJhdG9yRmllbGRUaGlzKSwgdmFsdWUs
IHZhbHVlLCBAR2VuZXJhdG9yUmVzdW1lTW9kZVJldHVybik7CiB9CiAKIGZ1bmN0aW9uIHRocm93
KGV4Y2VwdGlvbikKIHsKICAgICAidXNlIHN0cmljdCI7CiAKLSAgICB2YXIgc3RhdGUgPSBAZ2V0
QnlJZERpcmVjdFByaXZhdGUodGhpcywgImdlbmVyYXRvclN0YXRlIik7Ci0gICAgaWYgKHR5cGVv
ZiBzdGF0ZSAhPT0gIm51bWJlciIpCisgICAgaWYgKCFAaXNHZW5lcmF0b3IodGhpcykpCiAgICAg
ICAgIEB0aHJvd1R5cGVFcnJvcigifHRoaXN8IHNob3VsZCBiZSBhIGdlbmVyYXRvciIpOwogCisg
ICAgdmFyIHN0YXRlID0gQGdldEdlbmVyYXRvckludGVybmFsRmllbGQodGhpcywgQGdlbmVyYXRv
ckZpZWxkU3RhdGUpOwogICAgIGlmIChzdGF0ZSA9PT0gQEdlbmVyYXRvclN0YXRlRXhlY3V0aW5n
KQogICAgICAgICBAdGhyb3dUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBleGVjdXRpbmciKTsKIAog
ICAgIGlmIChzdGF0ZSA9PT0gQEdlbmVyYXRvclN0YXRlQ29tcGxldGVkKQogICAgICAgICB0aHJv
dyBleGNlcHRpb247CiAKLSAgICByZXR1cm4gQGdlbmVyYXRvclJlc3VtZSh0aGlzLCBzdGF0ZSwg
QGdldEJ5SWREaXJlY3RQcml2YXRlKHRoaXMsICJnZW5lcmF0b3JUaGlzIiksIGV4Y2VwdGlvbiwg
QHVuZGVmaW5lZCwgQEdlbmVyYXRvclJlc3VtZU1vZGVUaHJvdyk7CisgICAgcmV0dXJuIEBnZW5l
cmF0b3JSZXN1bWUodGhpcywgc3RhdGUsIEBnZXRHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKHRoaXMs
IEBnZW5lcmF0b3JGaWVsZFRoaXMpLCBleGNlcHRpb24sIEB1bmRlZmluZWQsIEBHZW5lcmF0b3JS
ZXN1bWVNb2RlVGhyb3cpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAKaW5kZXggOTU0NGJj
YjRjODg2OWIzNDU4NmYxNjZjODc0Y2JiMDgxNTAzZWZkZi4uMjg2MDUxY2M5NWVhNGQ4ZmRhNjZm
YjA5OTdiYjU5M2VkZTdlMzJhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwCkBAIC0zNiw3
ICszNiw3IEBACiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXJJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlND
SW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCi0jaW5jbHVkZSAiSlNH
ZW5lcmF0b3JGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAi
TGFiZWwuaCIKICNpbmNsdWRlICJTdHJvbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiVW5saW5rZWRD
b2RlQmxvY2suaCIKQEAgLTIyMyw3ICsyMjMsNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yaWZp
Y2F0aW9uOjpydW4oKQogICAgIHsKICAgICAgICAgYXV0byBuZXh0VG9FbnRlclBvaW50ID0gZW50
ZXJQb2ludCgpLm5leHQoKTsKICAgICAgICAgdW5zaWduZWQgc3dpdGNoVGFibGVJbmRleCA9IG1f
Y29kZUJsb2NrLT5udW1iZXJPZlN3aXRjaEp1bXBUYWJsZXMoKTsKLSAgICAgICAgVmlydHVhbFJl
Z2lzdGVyIHN0YXRlID0gdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoc3RhdGljX2Nhc3Q8aW50
MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yQXJndW1lbnQ6OlN0YXRlKSk7Cisg
ICAgICAgIFZpcnR1YWxSZWdpc3RlciBzdGF0ZSA9IHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50
KHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpHZW5lcmF0b3JBcmd1bWVudDo6U3Rh
dGUpKTsKICAgICAgICAgYXV0byYganVtcFRhYmxlID0gbV9jb2RlQmxvY2stPmFkZFN3aXRjaEp1
bXBUYWJsZSgpOwogICAgICAgICBqdW1wVGFibGUubWluID0gMDsKICAgICAgICAganVtcFRhYmxl
LmJyYW5jaE9mZnNldHMucmVzaXplKG1feWllbGRzLnNpemUoKSArIDEpOwpAQCAtMjM4LDcgKzIz
OCw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb246OnJ1bigpCiAgICAgfQogCiAg
ICAgZm9yIChjb25zdCBZaWVsZERhdGEmIGRhdGEgOiBtX3lpZWxkcykgewotICAgICAgICBWaXJ0
dWFsUmVnaXN0ZXIgc2NvcGUgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChzdGF0aWNfY2Fz
dDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JBcmd1bWVudDo6RnJhbWUp
KTsKKyAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHNjb3BlID0gdmlydHVhbFJlZ2lzdGVyRm9yQXJn
dW1lbnQoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6OkdlbmVyYXRvckFyZ3VtZW50
OjpGcmFtZSkpOwogCiAgICAgICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBtX2luc3RydWN0aW9ucy5h
dChkYXRhLnBvaW50KTsKICAgICAgICAgLy8gRW1pdCBzYXZlIHNlcXVlbmNlLgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0
cnkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2lj
UmVnaXN0cnkuY3BwCmluZGV4IDE5ODQ0M2Q1MzFmYzZjNzllN2VhMTU1MzhiMjMwMWZlYmZmNDVm
NmQuLjNhZDJiYWQ0NTM1ZjIyMGZkZTRjM2NhYTc0ZjNiMDgzNWYzOWEwMDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5z
aWNSZWdpc3RyeS5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKICNpbmNsdWRlICJJdGVyYXRpb25LaW5k
LmgiCiAjaW5jbHVkZSAiSlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlND
SW5saW5lcy5oIgotI2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJK
U0dlbmVyYXRvci5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNN
b2R1bGVMb2FkZXIuaCIKICNpbmNsdWRlICJKU1Byb21pc2UuaCIKQEAgLTc0LDExICs3NCwxNSBA
QCBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5OjpCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5KFZN
JiB2bSkKICAgICBtX3Byb21pc2VGbGFnc0lzRmlyc3RSZXNvbHZpbmdGdW5jdGlvbkNhbGxlZC5z
ZXQobV92bSwganNOdW1iZXIoSlNQcm9taXNlOjppc0ZpcnN0UmVzb2x2aW5nRnVuY3Rpb25DYWxs
ZWRGbGFnKSk7CiAgICAgbV9wcm9taXNlRmllbGRGbGFncy5zZXQobV92bSwganNOdW1iZXIoc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTUHJvbWlzZTo6RmllbGQ6OkZsYWdzKSkpOwogICAgIG1fcHJv
bWlzZUZpZWxkUmVhY3Rpb25zT3JSZXN1bHQuc2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU1Byb21pc2U6OkZpZWxkOjpSZWFjdGlvbnNPclJlc3VsdCkpKTsKLSAgICBt
X0dlbmVyYXRvclJlc3VtZU1vZGVOb3JtYWwuc2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRpY19jYXN0
PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvclJlc3VtZU1vZGU6Ok5vcm1h
bE1vZGUpKSk7Ci0gICAgbV9HZW5lcmF0b3JSZXN1bWVNb2RlVGhyb3cuc2V0KG1fdm0sIGpzTnVt
YmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvclJl
c3VtZU1vZGU6OlRocm93TW9kZSkpKTsKLSAgICBtX0dlbmVyYXRvclJlc3VtZU1vZGVSZXR1cm4u
c2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rp
b246OkdlbmVyYXRvclJlc3VtZU1vZGU6OlJldHVybk1vZGUpKSk7Ci0gICAgbV9HZW5lcmF0b3JT
dGF0ZUNvbXBsZXRlZC5zZXQobV92bSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNH
ZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yU3RhdGU6OkNvbXBsZXRlZCkpKTsKLSAgICBtX0dl
bmVyYXRvclN0YXRlRXhlY3V0aW5nLnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQz
Ml90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JTdGF0ZTo6RXhlY3V0aW5nKSkpOwor
ICAgIG1fZ2VuZXJhdG9yRmllbGRTdGF0ZS5zZXQobV92bSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTR2VuZXJhdG9yOjpGaWVsZDo6U3RhdGUpKSk7CisgICAgbV9nZW5lcmF0b3JG
aWVsZE5leHQuc2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0dlbmVy
YXRvcjo6RmllbGQ6Ok5leHQpKSk7CisgICAgbV9nZW5lcmF0b3JGaWVsZFRoaXMuc2V0KG1fdm0s
IGpzTnVtYmVyKHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0dlbmVyYXRvcjo6RmllbGQ6OlRoaXMp
KSk7CisgICAgbV9nZW5lcmF0b3JGaWVsZEZyYW1lLnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNHZW5lcmF0b3I6OkZpZWxkOjpGcmFtZSkpKTsKKyAgICBtX0dlbmVy
YXRvclJlc3VtZU1vZGVOb3JtYWwuc2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMy
X3Q+KEpTR2VuZXJhdG9yOjpHZW5lcmF0b3JSZXN1bWVNb2RlOjpOb3JtYWxNb2RlKSkpOworICAg
IG1fR2VuZXJhdG9yUmVzdW1lTW9kZVRocm93LnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2Fz
dDxpbnQzMl90PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9yUmVzdW1lTW9kZTo6VGhyb3dNb2RlKSkp
OworICAgIG1fR2VuZXJhdG9yUmVzdW1lTW9kZVJldHVybi5zZXQobV92bSwganNOdW1iZXIoc3Rh
dGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6OkdlbmVyYXRvclJlc3VtZU1vZGU6OlJldHVy
bk1vZGUpKSk7CisgICAgbV9HZW5lcmF0b3JTdGF0ZUNvbXBsZXRlZC5zZXQobV92bSwganNOdW1i
ZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6OkdlbmVyYXRvclN0YXRlOjpDb21w
bGV0ZWQpKSk7CisgICAgbV9HZW5lcmF0b3JTdGF0ZUV4ZWN1dGluZy5zZXQobV92bSwganNOdW1i
ZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6OkdlbmVyYXRvclN0YXRlOjpFeGVj
dXRpbmcpKSk7CiAgICAgbV9Bc3luY0dlbmVyYXRvclN0YXRlQ29tcGxldGVkLnNldChtX3ZtLCBq
c051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0FzeW5jR2VuZXJhdG9yRnVuY3Rpb246OkFz
eW5jR2VuZXJhdG9yU3RhdGU6OkNvbXBsZXRlZCkpKTsKICAgICBtX0FzeW5jR2VuZXJhdG9yU3Rh
dGVFeGVjdXRpbmcuc2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTQXN5
bmNHZW5lcmF0b3JGdW5jdGlvbjo6QXN5bmNHZW5lcmF0b3JTdGF0ZTo6RXhlY3V0aW5nKSkpOwog
ICAgIG1fQXN5bmNHZW5lcmF0b3JTdGF0ZVN1c3BlbmRlZFN0YXJ0LnNldChtX3ZtLCBqc051bWJl
cihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0FzeW5jR2VuZXJhdG9yRnVuY3Rpb246OkFzeW5jR2Vu
ZXJhdG9yU3RhdGU6OlN1c3BlbmRlZFN0YXJ0KSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmgKaW5kZXgg
ZDVmNmMzYjA1ZWViODk2NTlhY2Q5ODdiMTZmMjBjOTQzNmJiYTc1MC4uMjgwYjdmOTA2ZDY1ZTUw
ZmZiNzY3NWUxMWVhMmUyOTNiN2Q1N2VhOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5oCkBAIC00Miwx
MSArNDIsMTMgQEAgY2xhc3MgUmVnaXN0ZXJJRDsKICAgICBtYWNybyhnZXRCeUlkRGlyZWN0KSBc
CiAgICAgbWFjcm8oZ2V0QnlJZERpcmVjdFByaXZhdGUpIFwKICAgICBtYWNybyhnZXRQcm9taXNl
SW50ZXJuYWxGaWVsZCkgXAorICAgIG1hY3JvKGdldEdlbmVyYXRvckludGVybmFsRmllbGQpIFwK
ICAgICBtYWNybyhpZFdpdGhQcm9maWxlKSBcCiAgICAgbWFjcm8oaXNPYmplY3QpIFwKICAgICBt
YWNybyhpc0pTQXJyYXkpIFwKICAgICBtYWNybyhpc1Byb3h5T2JqZWN0KSBcCiAgICAgbWFjcm8o
aXNEZXJpdmVkQXJyYXkpIFwKKyAgICBtYWNybyhpc0dlbmVyYXRvcikgXAogICAgIG1hY3JvKGlz
UHJvbWlzZSkgXAogICAgIG1hY3JvKGlzUmVnRXhwT2JqZWN0KSBcCiAgICAgbWFjcm8oaXNNYXAp
IFwKQEAgLTYxLDYgKzYzLDcgQEAgY2xhc3MgUmVnaXN0ZXJJRDsKICAgICBtYWNybyhwdXRCeUlk
RGlyZWN0UHJpdmF0ZSkgXAogICAgIG1hY3JvKHB1dEJ5VmFsRGlyZWN0KSBcCiAgICAgbWFjcm8o
cHV0UHJvbWlzZUludGVybmFsRmllbGQpIFwKKyAgICBtYWNybyhwdXRHZW5lcmF0b3JJbnRlcm5h
bEZpZWxkKSBcCiAgICAgbWFjcm8odG9OdW1iZXIpIFwKICAgICBtYWNybyh0b1N0cmluZykgXAog
ICAgIG1hY3JvKHRvT2JqZWN0KSBcCkBAIC05OCw2ICsxMDEsMTAgQEAgY2xhc3MgUmVnaXN0ZXJJ
RDsKICAgICBtYWNybyhwcm9taXNlRmxhZ3NJc0ZpcnN0UmVzb2x2aW5nRnVuY3Rpb25DYWxsZWQp
IFwKICAgICBtYWNybyhwcm9taXNlRmllbGRGbGFncykgXAogICAgIG1hY3JvKHByb21pc2VGaWVs
ZFJlYWN0aW9uc09yUmVzdWx0KSBcCisgICAgbWFjcm8oZ2VuZXJhdG9yRmllbGRTdGF0ZSkgXAor
ICAgIG1hY3JvKGdlbmVyYXRvckZpZWxkTmV4dCkgXAorICAgIG1hY3JvKGdlbmVyYXRvckZpZWxk
VGhpcykgXAorICAgIG1hY3JvKGdlbmVyYXRvckZpZWxkRnJhbWUpIFwKICAgICBtYWNybyhHZW5l
cmF0b3JSZXN1bWVNb2RlTm9ybWFsKSBcCiAgICAgbWFjcm8oR2VuZXJhdG9yUmVzdW1lTW9kZVRo
cm93KSBcCiAgICAgbWFjcm8oR2VuZXJhdG9yUmVzdW1lTW9kZVJldHVybikgXApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYiBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKaW5kZXggM2IzOTk4YWI1
MGNkNjIwMzA5YmFjNmQ2N2ZkNjkxOGZmNGEwMWE3NS4uMWJhNDFmMTA2YjdhMTE1MTI1NTcxMmY2
YTNkOTMzNzcwZjJkNzNmMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlTGlzdC5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVMaXN0LnJiCkBAIC0xMzQsNiArMTM0LDIwIEBACiAgICAgICAgIGlzSW50ZXJuYWxQ
cm9taXNlOiBib29sLAogICAgIH0KIAorb3AgOmNyZWF0ZV9nZW5lcmF0b3IsCisgICAgYXJnczog
eworICAgICAgICBkc3Q6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAgY2FsbGVlOiBWaXJ0dWFs
UmVnaXN0ZXIsCisgICAgfSwKKyAgICBtZXRhZGF0YTogeworICAgICAgICBjYWNoZWRDYWxsZWU6
IFdyaXRlQmFycmllcltKU0NlbGxdCisgICAgfQorCitvcCA6bmV3X2dlbmVyYXRvciwKKyAgICBh
cmdzOiB7CisgICAgICAgIGRzdDogVmlydHVhbFJlZ2lzdGVyLAorICAgIH0KKwogb3AgOmdldF9h
cmd1bWVudCwKICAgICBhcmdzOiB7CiAgICAgICAgIGRzdDogVmlydHVhbFJlZ2lzdGVyLApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaAppbmRleCBi
ZTA4NTk2NDBmYjEwN2RlOGI3ODJiY2ZhNTA4MWJjN2QxYzc5YmMyLi40MDc5MjQ5OTY1ZDU2MThl
OTNmOTg2NzI0NzI0ZWNjMzczMjAxNWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaApAQCAtODAsNiArODAsNyBAQCB2b2lkIGNvbXB1dGVV
c2VzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqIGNvZGVCbG9jaywgT3Bjb2RlSUQgb3Bjb2RlSUQs
IGNvbnN0IElucwogICAgIGNhc2Ugb3Bfam1wOgogICAgIGNhc2Ugb3BfbmV3X29iamVjdDoKICAg
ICBjYXNlIG9wX25ld19wcm9taXNlOgorICAgIGNhc2Ugb3BfbmV3X2dlbmVyYXRvcjoKICAgICBj
YXNlIG9wX2VudGVyOgogICAgIGNhc2Ugb3BfYXJndW1lbnRfY291bnQ6CiAgICAgY2FzZSBvcF9j
YXRjaDoKQEAgLTE5NCw2ICsxOTUsNyBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZz
ZXQoQmxvY2sqIGNvZGVCbG9jaywgT3Bjb2RlSUQgb3Bjb2RlSUQsIGNvbnN0IElucwogICAgIFVT
RVMoT3BOZXdBcnJheVdpdGhTaXplLCBsZW5ndGgpCiAgICAgVVNFUyhPcENyZWF0ZVRoaXMsIGNh
bGxlZSkKICAgICBVU0VTKE9wQ3JlYXRlUHJvbWlzZSwgY2FsbGVlKQorICAgIFVTRVMoT3BDcmVh
dGVHZW5lcmF0b3IsIGNhbGxlZSkKICAgICBVU0VTKE9wRGVsQnlJZCwgYmFzZSkKICAgICBVU0VT
KE9wTmV3RnVuYywgc2NvcGUpCiAgICAgVVNFUyhPcE5ld0FzeW5jR2VuZXJhdG9yRnVuYywgc2Nv
cGUpCkBAIC0zODUsNiArMzg3LDcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0
KEJsb2NrKiBjb2RlQmxvY2ssIE9wY29kZUlEIG9wY29kZUlELCBjb25zdCBJbnMKICAgICBERUZT
KE9wVG9QcmltaXRpdmUsIGRzdCkKICAgICBERUZTKE9wQ3JlYXRlVGhpcywgZHN0KQogICAgIERF
RlMoT3BDcmVhdGVQcm9taXNlLCBkc3QpCisgICAgREVGUyhPcENyZWF0ZUdlbmVyYXRvciwgZHN0
KQogICAgIERFRlMoT3BOZXdBcnJheSwgZHN0KQogICAgIERFRlMoT3BOZXdBcnJheVdpdGhTcHJl
YWQsIGRzdCkKICAgICBERUZTKE9wU3ByZWFkLCBkc3QpCkBAIC00NjUsNiArNDY4LDcgQEAgdm9p
ZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KEJsb2NrKiBjb2RlQmxvY2ssIE9wY29kZUlE
IG9wY29kZUlELCBjb25zdCBJbnMKICAgICBERUZTKE9wTW92LCBkc3QpCiAgICAgREVGUyhPcE5l
d09iamVjdCwgZHN0KQogICAgIERFRlMoT3BOZXdQcm9taXNlLCBkc3QpCisgICAgREVGUyhPcE5l
d0dlbmVyYXRvciwgZHN0KQogICAgIERFRlMoT3BUb1RoaXMsIHNyY0RzdCkKICAgICBERUZTKE9w
R2V0U2NvcGUsIGRzdCkKICAgICBERUZTKE9wQ3JlYXRlRGlyZWN0QXJndW1lbnRzLCBkc3QpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IDk2MmQ0
ZDJiMTgyNjE4MjQwNTNkY2I1NDVhM2ZhOGZkZTY3MmQxYzQuLjdlODMxOTUwMzI0YTFmZWRkZjAw
NDM3MmNkZmZkMjFjMzVlODZjZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suY3BwCkBAIC01NjgsNiArNTY4LDcgQEAgYm9vbCBDb2RlQmxvY2s6OmZpbmlz
aENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxp
bmsKICAgICAgICAgTElOSyhPcFB1dEJ5SWQpCiAgICAgICAgIExJTksoT3BDcmVhdGVUaGlzKQog
ICAgICAgICBMSU5LKE9wQ3JlYXRlUHJvbWlzZSkKKyAgICAgICAgTElOSyhPcENyZWF0ZUdlbmVy
YXRvcikKIAogICAgICAgICBMSU5LKE9wQWRkKQogICAgICAgICBMSU5LKE9wTXVsKQpAQCAtMTI3
MSw2ICsxMjcyLDkgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplTExJbnRJbmxpbmVDYWNoZXMo
KQogICAgICAgICBtX21ldGFkYXRhLT5mb3JFYWNoPE9wQ3JlYXRlUHJvbWlzZT4oWyZdIChhdXRv
JiBtZXRhZGF0YSkgewogICAgICAgICAgICAgaGFuZGxlQ3JlYXRlQnl0ZWNvZGUobWV0YWRhdGEs
ICJvcF9jcmVhdGVfcHJvbWlzZSJfcyk7CiAgICAgICAgIH0pOworICAgICAgICBtX21ldGFkYXRh
LT5mb3JFYWNoPE9wQ3JlYXRlR2VuZXJhdG9yPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7CisgICAg
ICAgICAgICBoYW5kbGVDcmVhdGVCeXRlY29kZShtZXRhZGF0YSwgIm9wX2NyZWF0ZV9nZW5lcmF0
b3IiX3MpOworICAgICAgICB9KTsKIAogICAgICAgICBtX21ldGFkYXRhLT5mb3JFYWNoPE9wUmVz
b2x2ZVNjb3BlPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7CiAgICAgICAgICAgICAvLyBSaWdodCBu
b3cgdGhpcyBpc24ndCBzdHJpY3RseSBuZWNlc3NhcnkuIEFueSBzeW1ib2wgdGFibGVzIHRoYXQg
dGhpcyB3aWxsIHJlZmVyIHRvCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1NwZWN1bGF0ZWRUeXBlLmNwcAppbmRleCA0MmI2MjZjMDVlZTFmNTE4NDYwNmVhNmRhOTQwZmYx
OWFhMjMwMjc4Li4zNTNlNTZjZmM4ZWIwOTVkNzk2ZmFhYWJkYjEyNTRlYmIwM2RjZTVjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5jcHAK
QEAgLTYwOSw5ICs2MDksOCBAQCBTcGVjdWxhdGVkVHlwZSBzcGVjdWxhdGlvbkZyb21KU1R5cGUo
SlNUeXBlIHR5cGUpCiAgICAgY2FzZSBEYXRhVmlld1R5cGU6CiAgICAgICAgIHJldHVybiBTcGVj
RGF0YVZpZXdPYmplY3Q7CiAgICAgZGVmYXVsdDoKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgICAgIHJldHVybiBTcGVjQ2VsbDsKICAgICB9Ci0gICAgcmV0dXJuIFNwZWNOb25l
OwogfQogCiBTcGVjdWxhdGVkVHlwZSBsZWFzdFVwcGVyQm91bmRPZlN0cmljdGx5RXF1aXZhbGVu
dFNwZWN1bGF0aW9ucyhTcGVjdWxhdGVkVHlwZSB0eXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCA2
ODgzNTQ1NjMwZTNlYmVjZmM1MjAwNGM1MDBmYjJiNzI0Y2E0MmMxLi5mYjQ3YjVlM2JhNmQ3OTY4
OGZmYjYxZDNmNWQyY2FhNWQwNWEyODU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtNjgzLDcgKzY4
MywxNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5j
dGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogCiAgICAgc3dpdGNoIChwYXJzZU1vZGUp
IHsKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yV3JhcHBlckZ1bmN0aW9uTW9k
ZToKLSAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yV3JhcHBlck1ldGhvZE1vZGU6
CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvcldyYXBwZXJNZXRob2RNb2RlOiB7
CisgICAgICAgIG1fZ2VuZXJhdG9yUmVnaXN0ZXIgPSBhZGRWYXIoKTsKKworICAgICAgICAvLyBG
SVhNRTogRW1pdCB0b190aGlzIG9ubHkgd2hlbiBHZW5lcmF0b3IgdXNlcyBpdC4KKyAgICAgICAg
Ly8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTU4NgorICAgICAg
ICBlbWl0VG9UaGlzKCk7CisKKyAgICAgICAgZW1pdENyZWF0ZUdlbmVyYXRvcihtX2dlbmVyYXRv
clJlZ2lzdGVyLCAmbV9jYWxsZWVSZWdpc3Rlcik7CisgICAgICAgIGJyZWFrOworICAgIH0KKwog
ICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpBc3luY0dlbmVyYXRvcldyYXBwZXJNZXRob2RNb2Rl
OgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpBc3luY0dlbmVyYXRvcldyYXBwZXJGdW5jdGlv
bk1vZGU6IHsKICAgICAgICAgbV9nZW5lcmF0b3JSZWdpc3RlciA9IGFkZFZhcigpOwpAQCAtNzEx
LDcgKzcyMSw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0s
IEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAgICAgICAgICBlbWl0VG9U
aGlzKCk7CiAgICAgICAgIH0KIAotICAgICAgICBlbWl0TmV3T2JqZWN0KG1fZ2VuZXJhdG9yUmVn
aXN0ZXIpOworICAgICAgICBlbWl0TmV3R2VuZXJhdG9yKG1fZ2VuZXJhdG9yUmVnaXN0ZXIpOwog
ICAgICAgICBlbWl0TmV3UHJvbWlzZShwcm9taXNlUmVnaXN0ZXIoKSwgbV9pc0J1aWx0aW5GdW5j
dGlvbik7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTg2Niw3ICs4NzYsMTAgQEAgQnl0ZWNv
ZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5j
dGlvbk5vZGUsIFVubGlua2UKICAgICAgICAgICAgIC8vIEdlbmVyYXRvcmlmaWNhdGlvbiBpbnNl
cnRzIGxleGljYWwgZW52aXJvbm1lbnQgY3JlYXRpb24gaWYgbmVjZXNzYXJ5LiBPdGhlcndpc2Us
IHdlIGNvbnZlcnQgaXQgdG8gb3BfbW92IGZyYW1lLCBgdW5kZWZpbmVkYC4KICAgICAgICAgICAg
IE9wQ3JlYXRlR2VuZXJhdG9yRnJhbWVFbnZpcm9ubWVudDo6ZW1pdCh0aGlzLCBnZW5lcmF0b3JG
cmFtZVJlZ2lzdGVyKCksIHNjb3BlUmVnaXN0ZXIoKSwgVmlydHVhbFJlZ2lzdGVyIHsgc3ltYm9s
VGFibGVDb25zdGFudEluZGV4IH0sIGFkZENvbnN0YW50VmFsdWUoanNVbmRlZmluZWQoKSkpOwog
ICAgICAgICB9Ci0gICAgICAgIGVtaXRQdXRCeUlkKGdlbmVyYXRvclJlZ2lzdGVyKCksIHByb3Bl
cnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lKCksIGdl
bmVyYXRvckZyYW1lUmVnaXN0ZXIoKSk7CisgICAgICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNl
UGFyc2VNb2RlOjpBc3luY0dlbmVyYXRvckJvZHlNb2RlKQorICAgICAgICAgICAgZW1pdFB1dEJ5
SWQoZ2VuZXJhdG9yUmVnaXN0ZXIoKSwgcHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmdl
bmVyYXRvckZyYW1lUHJpdmF0ZU5hbWUoKSwgZ2VuZXJhdG9yRnJhbWVSZWdpc3RlcigpKTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgZW1pdFB1dEludGVybmFsRmllbGQoZ2VuZXJhdG9yUmVn
aXN0ZXIoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTR2VuZXJhdG9yOjpGaWVsZDo6RnJhbWUp
LCBnZW5lcmF0b3JGcmFtZVJlZ2lzdGVyKCkpOwogICAgIH0KIAogICAgIGJvb2wgc2hvdWxkSW5p
dGlhbGl6ZUJsb2NrU2NvcGVkRnVuY3Rpb25zID0gZmFsc2U7IC8vIFdlIGdlbmVyYXRlIHRvcC1s
ZXZlbCBmdW5jdGlvbiBkZWNsYXJhdGlvbnMgaW4gOjpnZW5lcmF0ZSgpLgpAQCAtMjY5OCwyMCAr
MjcxMSwxMiBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0U2V0dGVyQnlWYWwoUmVn
aXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydAogCiB2b2lkIEJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0UHV0R2VuZXJhdG9yRmllbGRzKFJlZ2lzdGVySUQqIG5leHRGdW5jdGlvbikKIHsK
LSAgICAvLyBGSVhNRTogQ3VycmVudGx5LCB3ZSBqdXN0IGNyZWF0ZSBhbiBvYmplY3QgYW5kIHN0
b3JlIGdlbmVyYXRvciByZWxhdGVkIGZpZWxkcyBhcyBpdHMgcHJvcGVydGllcyBmb3IgZWFzZS4K
LSAgICAvLyBCdXQgdG8gbWFrZSBpdCBlZmZpY2llbnQsIHdlIHdpbGwgaW50cm9kdWNlIEpTR2Vu
ZXJhdG9yIGNsYXNzLCBhZGQgb3Bjb2RlIG5ld19nZW5lcmF0b3IgYW5kIHVzZSBpdHMgQysrIGZp
ZWxkcyBpbnN0ZWFkIG9mIHRoZXNlIHByaXZhdGUgcHJvcGVydGllcy4KLSAgICAvLyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTQ1Ci0KLSAgICBlbWl0RGlyZWN0
UHV0QnlJZChtX2dlbmVyYXRvclJlZ2lzdGVyLCBwcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVz
KCkuZ2VuZXJhdG9yTmV4dFByaXZhdGVOYW1lKCksIG5leHRGdW5jdGlvbiwgUHJvcGVydHlOb2Rl
OjpLbm93bkRpcmVjdCk7CisgICAgZW1pdFB1dEludGVybmFsRmllbGQobV9nZW5lcmF0b3JSZWdp
c3Rlciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTR2VuZXJhdG9yOjpGaWVsZDo6TmV4dCksIG5l
eHRGdW5jdGlvbik7CiAKICAgICAvLyBXZSBkbyBub3Qgc3RvcmUgJ3RoaXMnIGluIGFycm93IGZ1
bmN0aW9uIHdpdGhpbiBjb25zdHJ1Y3RvciwKICAgICAvLyBiZWNhdXNlIGl0IG1pZ2h0IGJlIG5v
dCBpbml0aWFsaXplZCwgaWYgc3VwZXIgaXMgY2FsbGVkIGxhdGVyLgogICAgIGlmICghKGlzRGVy
aXZlZENvbnN0cnVjdG9yQ29udGV4dCgpICYmIG1fY29kZUJsb2NrLT5wYXJzZU1vZGUoKSA9PSBT
b3VyY2VQYXJzZU1vZGU6OkFzeW5jQXJyb3dGdW5jdGlvbk1vZGUpKQotICAgICAgICBlbWl0RGly
ZWN0UHV0QnlJZChtX2dlbmVyYXRvclJlZ2lzdGVyLCBwcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5h
bWVzKCkuZ2VuZXJhdG9yVGhpc1ByaXZhdGVOYW1lKCksICZtX3RoaXNSZWdpc3RlciwgUHJvcGVy
dHlOb2RlOjpLbm93bkRpcmVjdCk7Ci0KLSAgICBlbWl0RGlyZWN0UHV0QnlJZChtX2dlbmVyYXRv
clJlZ2lzdGVyLCBwcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yU3RhdGVQ
cml2YXRlTmFtZSgpLCBlbWl0TG9hZChudWxscHRyLCBqc051bWJlcigwKSksIFByb3BlcnR5Tm9k
ZTo6S25vd25EaXJlY3QpOwotCi0gICAgZW1pdERpcmVjdFB1dEJ5SWQobV9nZW5lcmF0b3JSZWdp
c3RlciwgcHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvckZyYW1lUHJpdmF0
ZU5hbWUoKSwgZW1pdExvYWQobnVsbHB0ciwganNOdWxsKCkpLCBQcm9wZXJ0eU5vZGU6Oktub3du
RGlyZWN0KTsKKyAgICAgICAgZW1pdFB1dEludGVybmFsRmllbGQobV9nZW5lcmF0b3JSZWdpc3Rl
ciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTR2VuZXJhdG9yOjpGaWVsZDo6VGhpcyksICZtX3Ro
aXNSZWdpc3Rlcik7CiB9CiAKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRBc3luY0dl
bmVyYXRvckZpZWxkcyhSZWdpc3RlcklEKiBuZXh0RnVuY3Rpb24pCkBAIC0yODU4LDYgKzI4NjMs
MTggQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdQcm9taXNlKFJlZ2lz
dGVySUQqIGRzdCwgYm9vbCBpc0ludGVybmFsUHIKICAgICByZXR1cm4gZHN0OwogfQogCitSZWdp
c3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENyZWF0ZUdlbmVyYXRvcihSZWdpc3RlcklE
KiBkc3QsIFJlZ2lzdGVySUQqIG5ld1RhcmdldCkKK3sKKyAgICBPcENyZWF0ZUdlbmVyYXRvcjo6
ZW1pdCh0aGlzLCBkc3QsIG5ld1RhcmdldCk7CisgICAgcmV0dXJuIGRzdDsKK30KKworUmVnaXN0
ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdHZW5lcmF0b3IoUmVnaXN0ZXJJRCogZHN0
KQoreworICAgIE9wTmV3R2VuZXJhdG9yOjplbWl0KHRoaXMsIGRzdCk7CisgICAgcmV0dXJuIGRz
dDsKK30KKwogdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFREWkNoZWNrKFJlZ2lzdGVySUQq
IHRhcmdldCkKIHsKICAgICBPcENoZWNrVGR6OjplbWl0KHRoaXMsIHRhcmdldCk7CkBAIC00NTQ0
LDExICs0NTYxLDExIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0WWllbGQo
UmVnaXN0ZXJJRCogYXJndW1lbnQsIEpTQXN5bmNHZW5lcmF0b3JGCiAKICAgICBSZWY8TGFiZWw+
IG5vcm1hbExhYmVsID0gbmV3TGFiZWwoKTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gY29uZGl0
aW9uID0gbmV3VGVtcG9yYXJ5KCk7Ci0gICAgZW1pdEVxdWFsaXR5T3A8T3BTdHJpY3RlcT4oY29u
ZGl0aW9uLmdldCgpLCBnZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSwgZW1pdExvYWQobnVs
bHB0ciwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6
R2VuZXJhdG9yUmVzdW1lTW9kZTo6Tm9ybWFsTW9kZSkpKSk7CisgICAgZW1pdEVxdWFsaXR5T3A8
T3BTdHJpY3RlcT4oY29uZGl0aW9uLmdldCgpLCBnZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIo
KSwgZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5l
cmF0b3I6OkdlbmVyYXRvclJlc3VtZU1vZGU6Ok5vcm1hbE1vZGUpKSkpOwogICAgIGVtaXRKdW1w
SWZUcnVlKGNvbmRpdGlvbi5nZXQoKSwgbm9ybWFsTGFiZWwuZ2V0KCkpOwogCiAgICAgUmVmPExh
YmVsPiB0aHJvd0xhYmVsID0gbmV3TGFiZWwoKTsKLSAgICBlbWl0RXF1YWxpdHlPcDxPcFN0cmlj
dGVxPihjb25kaXRpb24uZ2V0KCksIGdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3RlcigpLCBlbWl0
TG9hZChudWxscHRyLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1
bmN0aW9uOjpHZW5lcmF0b3JSZXN1bWVNb2RlOjpUaHJvd01vZGUpKSkpOworICAgIGVtaXRFcXVh
bGl0eU9wPE9wU3RyaWN0ZXE+KGNvbmRpdGlvbi5nZXQoKSwgZ2VuZXJhdG9yUmVzdW1lTW9kZVJl
Z2lzdGVyKCksIGVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+
KEpTR2VuZXJhdG9yOjpHZW5lcmF0b3JSZXN1bWVNb2RlOjpUaHJvd01vZGUpKSkpOwogICAgIGVt
aXRKdW1wSWZUcnVlKGNvbmRpdGlvbi5nZXQoKSwgdGhyb3dMYWJlbC5nZXQoKSk7CiAgICAgLy8g
UmV0dXJuLgogICAgIHsKQEAgLTQ2NTYsMTAgKzQ2NzMsMTAgQEAgUmVnaXN0ZXJJRCogQnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXREZWxlZ2F0ZVlpZWxkKFJlZ2lzdGVySUQqIGFyZ3VtZW50LCBUaHJv
d2FibGUKICAgICAgICAgICAgICAgICBSZWY8TGFiZWw+IHJldHVybkxhYmVsID0gbmV3TGFiZWwo
KTsKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiBjb25kaXRpb24gPSBuZXdUZW1wb3JhcnkoKTsKLSAgICAgICAgICAgICAgICAgICAgZW1p
dEVxdWFsaXR5T3A8T3BTdHJpY3RlcT4oY29uZGl0aW9uLmdldCgpLCBnZW5lcmF0b3JSZXN1bWVN
b2RlUmVnaXN0ZXIoKSwgZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50
MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yUmVzdW1lTW9kZTo6Tm9ybWFsTW9k
ZSkpKSk7CisgICAgICAgICAgICAgICAgICAgIGVtaXRFcXVhbGl0eU9wPE9wU3RyaWN0ZXE+KGNv
bmRpdGlvbi5nZXQoKSwgZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCksIGVtaXRMb2FkKG51
bGxwdHIsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpHZW5lcmF0
b3JSZXN1bWVNb2RlOjpOb3JtYWxNb2RlKSkpKTsKICAgICAgICAgICAgICAgICAgICAgZW1pdEp1
bXBJZlRydWUoY29uZGl0aW9uLmdldCgpLCBub3JtYWxMYWJlbC5nZXQoKSk7CiAKLSAgICAgICAg
ICAgICAgICAgICAgZW1pdEVxdWFsaXR5T3A8T3BTdHJpY3RlcT4oY29uZGl0aW9uLmdldCgpLCBn
ZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSwgZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIo
c3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yUmVzdW1l
TW9kZTo6UmV0dXJuTW9kZSkpKSk7CisgICAgICAgICAgICAgICAgICAgIGVtaXRFcXVhbGl0eU9w
PE9wU3RyaWN0ZXE+KGNvbmRpdGlvbi5nZXQoKSwgZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVy
KCksIGVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2Vu
ZXJhdG9yOjpHZW5lcmF0b3JSZXN1bWVNb2RlOjpSZXR1cm5Nb2RlKSkpKTsKICAgICAgICAgICAg
ICAgICAgICAgZW1pdEp1bXBJZlRydWUoY29uZGl0aW9uLmdldCgpLCByZXR1cm5MYWJlbC5nZXQo
KSk7CiAKICAgICAgICAgICAgICAgICAgICAgLy8gRmFsbHRocm91Z2ggdG8gVGhyb3dNb2RlLgpA
QCAtNDc2MSw3ICs0Nzc4LDEwIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
RGVsZWdhdGVZaWVsZChSZWdpc3RlcklEKiBhcmd1bWVudCwgVGhyb3dhYmxlCiB2b2lkIEJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0R2VuZXJhdG9yU3RhdGVDaGFuZ2UoaW50MzJfdCBzdGF0ZSkKIHsK
ICAgICBSZWdpc3RlcklEKiBjb21wbGV0ZWRTdGF0ZSA9IGVtaXRMb2FkKG51bGxwdHIsIGpzTnVt
YmVyKHN0YXRlKSk7Ci0gICAgZW1pdFB1dEJ5SWQoZ2VuZXJhdG9yUmVnaXN0ZXIoKSwgcHJvcGVy
dHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclN0YXRlUHJpdmF0ZU5hbWUoKSwgY29t
cGxldGVkU3RhdGUpOworICAgIGlmIChtX2NvZGVCbG9jay0+cGFyc2VNb2RlKCkgPT0gU291cmNl
UGFyc2VNb2RlOjpBc3luY0dlbmVyYXRvckJvZHlNb2RlKQorICAgICAgICBlbWl0UHV0QnlJZChn
ZW5lcmF0b3JSZWdpc3RlcigpLCBwcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuZ2VuZXJh
dG9yU3RhdGVQcml2YXRlTmFtZSgpLCBjb21wbGV0ZWRTdGF0ZSk7CisgICAgZWxzZQorICAgICAg
ICBlbWl0UHV0SW50ZXJuYWxGaWVsZChnZW5lcmF0b3JSZWdpc3RlcigpLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNHZW5lcmF0b3I6OkZpZWxkOjpTdGF0ZSksIGNvbXBsZXRlZFN0YXRlKTsKIH0K
IAogYm9vbCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEp1bXBWaWFGaW5hbGx5SWZOZWVkZWQoaW50
IHRhcmdldExhYmVsU2NvcGVEZXB0aCwgTGFiZWwmIGp1bXBUYXJnZXQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5k
ZXggOTRlZWIxMzI2MTA2ZmY2ZGRjZDc0OTMxZGVhMGFiMjkxOTRkZGNjNy4uN2E1ZjFkNGRlOGUx
ZmMxMjg5N2IzN2YzNDY3ZmQ1M2QzZDM3ZGI4YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtMzUsNyArMzUs
NyBAQAogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSlNBc3luY0dlbmVyYXRv
ckZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNCaWdJbnQuaCIKLSNpbmNsdWRlICJKU0dlbmVyYXRv
ckZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJKU1RlbXBs
YXRlT2JqZWN0RGVzY3JpcHRvci5oIgogI2luY2x1ZGUgIkxhYmVsLmgiCiAjaW5jbHVkZSAiTGFi
ZWxTY29wZS5oIgpAQCAtNzI0LDEyICs3MjQsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAg
ICAgUmVnaXN0ZXJJRCogZW1pdENyZWF0ZVRoaXMoUmVnaXN0ZXJJRCogZHN0KTsKICAgICAgICAg
UmVnaXN0ZXJJRCogZW1pdENyZWF0ZVByb21pc2UoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklE
KiBuZXdUYXJnZXQsIGJvb2wgaXNJbnRlcm5hbFByb21pc2UpOworICAgICAgICBSZWdpc3RlcklE
KiBlbWl0Q3JlYXRlR2VuZXJhdG9yKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogbmV3VGFy
Z2V0KTsKICAgICAgICAgdm9pZCBlbWl0VERaQ2hlY2soUmVnaXN0ZXJJRCogdGFyZ2V0KTsKICAg
ICAgICAgYm9vbCBuZWVkc1REWkNoZWNrKGNvbnN0IFZhcmlhYmxlJik7CiAgICAgICAgIHZvaWQg
ZW1pdFREWkNoZWNrSWZOZWNlc3NhcnkoY29uc3QgVmFyaWFibGUmLCBSZWdpc3RlcklEKiB0YXJn
ZXQsIFJlZ2lzdGVySUQqIHNjb3BlKTsKICAgICAgICAgdm9pZCBsaWZ0VERaQ2hlY2tJZlBvc3Np
YmxlKGNvbnN0IFZhcmlhYmxlJik7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdPYmplY3Qo
UmVnaXN0ZXJJRCogZHN0KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld1Byb21pc2UoUmVn
aXN0ZXJJRCogZHN0LCBib29sIGlzSW50ZXJuYWxQcm9taXNlKTsKKyAgICAgICAgUmVnaXN0ZXJJ
RCogZW1pdE5ld0dlbmVyYXRvcihSZWdpc3RlcklEKiBkc3QpOwogICAgICAgICBSZWdpc3RlcklE
KiBlbWl0TmV3QXJyYXkoUmVnaXN0ZXJJRCogZHN0LCBFbGVtZW50Tm9kZSosIHVuc2lnbmVkIGxl
bmd0aCwgSW5kZXhpbmdUeXBlIHJlY29tbWVuZGVkSW5kZXhpbmdUeXBlKTsgLy8gc3RvcHMgYXQg
Zmlyc3QgZWxpc2lvbgogICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3QXJyYXlCdWZmZXIoUmVn
aXN0ZXJJRCogZHN0LCBKU0ltbXV0YWJsZUJ1dHRlcmZseSosIEluZGV4aW5nVHlwZSByZWNvbW1l
bmRlZEluZGV4aW5nVHlwZSk7CiAgICAgICAgIC8vIEZJWE1FOiBuZXdfYXJyYXlfd2l0aF9zcHJl
YWQgc2hvdWxkIHVzZSBhbiBhcnJheSBhbGxvY2F0aW9uIHByb2ZpbGUgYW5kIHRha2UgYSByZWNv
bW1lbmRlZEluZGV4aW5nVHlwZQpAQCAtODY2LDYgKzg2OCw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICBSZWdpc3RlcklEKiBlbWl0VG9JbmRleFN0cmluZyhSZWdpc3RlcklEKiBkc3QsIFJl
Z2lzdGVySUQqIGluZGV4KTsKIAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXNDZWxsV2l0aFR5
cGUoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMsIEpTVHlwZSk7CisgICAgICAgIFJl
Z2lzdGVySUQqIGVtaXRJc0dlbmVyYXRvcihSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNy
YykgeyByZXR1cm4gZW1pdElzQ2VsbFdpdGhUeXBlKGRzdCwgc3JjLCBKU0dlbmVyYXRvclR5cGUp
OyB9CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJc0pTQXJyYXkoUmVnaXN0ZXJJRCogZHN0LCBS
ZWdpc3RlcklEKiBzcmMpIHsgcmV0dXJuIGVtaXRJc0NlbGxXaXRoVHlwZShkc3QsIHNyYywgQXJy
YXlUeXBlKTsgfQogICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXNQcm9taXNlKFJlZ2lzdGVySUQq
IGRzdCwgUmVnaXN0ZXJJRCogc3JjKSB7IHJldHVybiBlbWl0SXNDZWxsV2l0aFR5cGUoZHN0LCBz
cmMsIEpTUHJvbWlzZVR5cGUpOyB9CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJc1Byb3h5T2Jq
ZWN0KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjKSB7IHJldHVybiBlbWl0SXNDZWxs
V2l0aFR5cGUoZHN0LCBzcmMsIFByb3h5T2JqZWN0VHlwZSk7IH0KQEAgLTk4OCwxMCArOTkxLDEw
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRHZW5lcmF0b3JTdGF0ZUNoYW5n
ZShpbnQzMl90IHN0YXRlKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFlpZWxkKFJlZ2lzdGVy
SUQqIGFyZ3VtZW50LCBKU0FzeW5jR2VuZXJhdG9yRnVuY3Rpb246OkFzeW5jR2VuZXJhdG9yU3Vz
cGVuZFJlYXNvbiA9IEpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbjo6QXN5bmNHZW5lcmF0b3JTdXNw
ZW5kUmVhc29uOjpZaWVsZCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXREZWxlZ2F0ZVlpZWxk
KFJlZ2lzdGVySUQqIGFyZ3VtZW50LCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSopOwotICAgICAg
ICBSZWdpc3RlcklEKiBnZW5lcmF0b3JTdGF0ZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1fcGFyYW1l
dGVyc1tzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JB
cmd1bWVudDo6U3RhdGUpXTsgfQotICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JWYWx1ZVJl
Z2lzdGVyKCkgeyByZXR1cm4gJm1fcGFyYW1ldGVyc1tzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dl
bmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JBcmd1bWVudDo6VmFsdWUpXTsgfQotICAgICAgICBS
ZWdpc3RlcklEKiBnZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSB7IHJldHVybiAmbV9wYXJh
bWV0ZXJzW3N0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRv
ckFyZ3VtZW50OjpSZXN1bWVNb2RlKV07IH0KLSAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9y
RnJhbWVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbc3RhdGljX2Nhc3Q8aW50MzJf
dD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yQXJndW1lbnQ6OkZyYW1lKV07IH0KKyAg
ICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yU3RhdGVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3Bh
cmFtZXRlcnNbc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6OkdlbmVyYXRvckFyZ3Vt
ZW50OjpTdGF0ZSldOyB9CisgICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRvclZhbHVlUmVnaXN0
ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJzW3N0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJh
dG9yOjpHZW5lcmF0b3JBcmd1bWVudDo6VmFsdWUpXTsgfQorICAgICAgICBSZWdpc3RlcklEKiBn
ZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJzW3N0YXRp
Y19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpHZW5lcmF0b3JBcmd1bWVudDo6UmVzdW1lTW9k
ZSldOyB9CisgICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRvckZyYW1lUmVnaXN0ZXIoKSB7IHJl
dHVybiAmbV9wYXJhbWV0ZXJzW3N0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpHZW5l
cmF0b3JBcmd1bWVudDo6RnJhbWUpXTsgfQogCiAgICAgICAgIENvZGVUeXBlIGNvZGVUeXBlKCkg
Y29uc3QgeyByZXR1cm4gbV9jb2RlVHlwZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggNDg5MDllZjliMDRkMTVh
ZGM0YTAyZDI2Yzc1ZjhjYzVjOWMxNTNiMS4uODc3OGZiNjY0Njk1OTljZTI1YjBiNjg5ZDBkMzkw
ZWEzMDlhNmRjMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUgIkpJVC5oIgog
I2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCi0jaW5jbHVk
ZSAiSlNHZW5lcmF0b3JGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTR2VuZXJhdG9yLmgiCiAjaW5j
bHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU0ltbXV0YWJsZUJ1dHRlcmZseS5o
IgogI2luY2x1ZGUgIkxhYmVsU2NvcGUuaCIKQEAgLTEwMjAsNiArMTAyMCwyMCBAQCBzdGF0aWMg
SlNQcm9taXNlOjpGaWVsZCBwcm9taXNlSW50ZXJuYWxGaWVsZEluZGV4KEJ5dGVjb2RlSW50cmlu
c2ljTm9kZSogbm9kZSkKICAgICByZXR1cm4gSlNQcm9taXNlOjpGaWVsZDo6RmxhZ3M7CiB9CiAK
K3N0YXRpYyBKU0dlbmVyYXRvcjo6RmllbGQgZ2VuZXJhdG9ySW50ZXJuYWxGaWVsZEluZGV4KEJ5
dGVjb2RlSW50cmluc2ljTm9kZSogbm9kZSkKK3sKKyAgICBpZiAobm9kZS0+ZW1pdHRlcigpID09
ICZCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dlbmVyYXRvckZpZWxkU3Rh
dGUpCisgICAgICAgIHJldHVybiBKU0dlbmVyYXRvcjo6RmllbGQ6OlN0YXRlOworICAgIGlmIChu
b2RlLT5lbWl0dGVyKCkgPT0gJkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNf
Z2VuZXJhdG9yRmllbGROZXh0KQorICAgICAgICByZXR1cm4gSlNHZW5lcmF0b3I6OkZpZWxkOjpO
ZXh0OworICAgIGlmIChub2RlLT5lbWl0dGVyKCkgPT0gJkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6
ZW1pdF9pbnRyaW5zaWNfZ2VuZXJhdG9yRmllbGRUaGlzKQorICAgICAgICByZXR1cm4gSlNHZW5l
cmF0b3I6OkZpZWxkOjpUaGlzOworICAgIGlmIChub2RlLT5lbWl0dGVyKCkgPT0gJkJ5dGVjb2Rl
SW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfZ2VuZXJhdG9yRmllbGRGcmFtZSkKKyAgICAg
ICAgcmV0dXJuIEpTR2VuZXJhdG9yOjpGaWVsZDo6RnJhbWU7CisgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gSlNHZW5lcmF0b3I6OkZpZWxkOjpTdGF0ZTsKK30K
KwogUmVnaXN0ZXJJRCogQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19nZXRQ
cm9taXNlSW50ZXJuYWxGaWVsZChCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3Rl
cklEKiBkc3QpCiB7CiAgICAgQXJndW1lbnRMaXN0Tm9kZSogbm9kZSA9IG1fYXJncy0+bV9saXN0
Tm9kZTsKQEAgLTEwMzMsNiArMTA0NywxOSBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUludHJpbnNp
Y05vZGU6OmVtaXRfaW50cmluc2ljX2dldFByb21pc2VJbnRlcm5hbEZpZWxkKEJ5dGVjbwogICAg
IHJldHVybiBnZW5lcmF0b3IuZW1pdEdldEludGVybmFsRmllbGQoZ2VuZXJhdG9yLmZpbmFsRGVz
dGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSwgaW5kZXgpOwogfQogCitSZWdpc3RlcklEKiBCeXRl
Y29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dldEdlbmVyYXRvckludGVybmFsRmll
bGQoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQoreworICAg
IEFyZ3VtZW50TGlzdE5vZGUqIG5vZGUgPSBtX2FyZ3MtPm1fbGlzdE5vZGU7CisgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IGJhc2UgPSBnZW5lcmF0b3IuZW1pdE5vZGUobm9kZSk7CisgICAgbm9kZSA9
IG5vZGUtPm1fbmV4dDsKKyAgICBSRUxFQVNFX0FTU0VSVChub2RlLT5tX2V4cHItPmlzQnl0ZWNv
ZGVJbnRyaW5zaWNOb2RlKCkpOworICAgIHVuc2lnbmVkIGluZGV4ID0gc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KGdlbmVyYXRvckludGVybmFsRmllbGRJbmRleChzdGF0aWNfY2FzdDxCeXRlY29kZUlu
dHJpbnNpY05vZGUqPihub2RlLT5tX2V4cHIpKSk7CisgICAgQVNTRVJUKGluZGV4IDwgSlNHZW5l
cmF0b3I6Om51bWJlck9mSW50ZXJuYWxGaWVsZHMpOworICAgIEFTU0VSVCghbm9kZS0+bV9uZXh0
KTsKKworICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdEdldEludGVybmFsRmllbGQoZ2VuZXJhdG9y
LmZpbmFsRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSwgaW5kZXgpOworfQorCiBSZWdpc3Rl
cklEKiBCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2FyZ3VtZW50KEJ5dGVj
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKICAgICBBcmd1bWVu
dExpc3ROb2RlKiBub2RlID0gbV9hcmdzLT5tX2xpc3ROb2RlOwpAQCAtMTExOCw2ICsxMTQ1LDIy
IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfcHV0
UHJvbWlzZUludGVybmFsRmllbGQoQnl0ZWNvCiAgICAgcmV0dXJuIGdlbmVyYXRvci5tb3ZlKGRz
dCwgZ2VuZXJhdG9yLmVtaXRQdXRJbnRlcm5hbEZpZWxkKGJhc2UuZ2V0KCksIGluZGV4LCB2YWx1
ZS5nZXQoKSkpOwogfQogCitSZWdpc3RlcklEKiBCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRf
aW50cmluc2ljX3B1dEdlbmVyYXRvckludGVybmFsRmllbGQoQnl0ZWNvZGVHZW5lcmF0b3ImIGdl
bmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQoreworICAgIEFyZ3VtZW50TGlzdE5vZGUqIG5vZGUg
PSBtX2FyZ3MtPm1fbGlzdE5vZGU7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGJhc2UgPSBnZW5l
cmF0b3IuZW1pdE5vZGUobm9kZSk7CisgICAgbm9kZSA9IG5vZGUtPm1fbmV4dDsKKyAgICBSRUxF
QVNFX0FTU0VSVChub2RlLT5tX2V4cHItPmlzQnl0ZWNvZGVJbnRyaW5zaWNOb2RlKCkpOworICAg
IHVuc2lnbmVkIGluZGV4ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGdlbmVyYXRvckludGVybmFs
RmllbGRJbmRleChzdGF0aWNfY2FzdDxCeXRlY29kZUludHJpbnNpY05vZGUqPihub2RlLT5tX2V4
cHIpKSk7CisgICAgQVNTRVJUKGluZGV4IDwgSlNHZW5lcmF0b3I6Om51bWJlck9mSW50ZXJuYWxG
aWVsZHMpOworICAgIG5vZGUgPSBub2RlLT5tX25leHQ7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXROb2RlKG5vZGUpOworCisgICAgQVNTRVJUKCFub2RlLT5t
X25leHQpOworCisgICAgcmV0dXJuIGdlbmVyYXRvci5tb3ZlKGRzdCwgZ2VuZXJhdG9yLmVtaXRQ
dXRJbnRlcm5hbEZpZWxkKGJhc2UuZ2V0KCksIGluZGV4LCB2YWx1ZS5nZXQoKSkpOworfQorCiBS
ZWdpc3RlcklEKiBCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX3RhaWxDYWxs
Rm9yd2FyZEFyZ3VtZW50cyhCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklE
KiBkc3QpCiB7CiAgICAgQXJndW1lbnRMaXN0Tm9kZSogbm9kZSA9IG1fYXJncy0+bV9saXN0Tm9k
ZTsKQEAgLTEyMzEsNiArMTI3NCwxNSBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUludHJpbnNpY05v
ZGU6OmVtaXRfaW50cmluc2ljX2lkV2l0aFByb2ZpbGUoQnl0ZWNvZGVHZW5lcmF0bwogCiAgICAg
cmV0dXJuIGdlbmVyYXRvci5tb3ZlKGRzdCwgZ2VuZXJhdG9yLmVtaXRJZFdpdGhQcm9maWxlKGlk
VmFsdWUuZ2V0KCksIHNwZWN1bGF0aW9uKSk7CiB9CisKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlSW50
cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfaXNHZW5lcmF0b3IoSlNDOjpCeXRlY29kZUdlbmVy
YXRvciYgZ2VuZXJhdG9yLCBKU0M6OlJlZ2lzdGVySUQqIGRzdCkKK3sKKyAgICBBcmd1bWVudExp
c3ROb2RlKiBub2RlID0gbV9hcmdzLT5tX2xpc3ROb2RlOworICAgIFJlZlB0cjxSZWdpc3RlcklE
PiBzcmMgPSBnZW5lcmF0b3IuZW1pdE5vZGUobm9kZSk7CisgICAgQVNTRVJUKCFub2RlLT5tX25l
eHQpOworCisgICAgcmV0dXJuIGdlbmVyYXRvci5tb3ZlKGRzdCwgZ2VuZXJhdG9yLmVtaXRJc0dl
bmVyYXRvcihnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIHNyYy5nZXQoKSkpOworfQog
ICAgIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19p
c0pTQXJyYXkoSlNDOjpCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBKU0M6OlJlZ2lzdGVy
SUQqIGRzdCkKIHsKQEAgLTM5OTMsNyArNDA0NSw3IEBAIHZvaWQgRnVuY3Rpb25Ob2RlOjplbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCiAgICAg
ICAgIGdlbmVyYXRvci5tb3ZlKGFyZ3MuYXJndW1lbnRSZWdpc3Rlcihhcmd1bWVudENvdW50Kysp
LCBnZW5lcmF0b3IuZ2VuZXJhdG9yUmVnaXN0ZXIoKSk7CiAgICAgICAgIGdlbmVyYXRvci5tb3Zl
KGFyZ3MuYXJndW1lbnRSZWdpc3Rlcihhcmd1bWVudENvdW50KyspLCBnZW5lcmF0b3IucHJvbWlz
ZVJlZ2lzdGVyKCkpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdExvYWQoYXJncy5hcmd1bWVudFJl
Z2lzdGVyKGFyZ3VtZW50Q291bnQrKyksIGpzVW5kZWZpbmVkKCkpOwotICAgICAgICBnZW5lcmF0
b3IuZW1pdExvYWQoYXJncy5hcmd1bWVudFJlZ2lzdGVyKGFyZ3VtZW50Q291bnQrKyksIGpzTnVt
YmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvclJl
c3VtZU1vZGU6Ok5vcm1hbE1vZGUpKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0TG9hZChhcmdz
LmFyZ3VtZW50UmVnaXN0ZXIoYXJndW1lbnRDb3VudCsrKSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8
aW50MzJfdD4oSlNHZW5lcmF0b3I6OkdlbmVyYXRvclJlc3VtZU1vZGU6Ok5vcm1hbE1vZGUpKSk7
CiAgICAgICAgIC8vIEpTVGV4dFBvc2l0aW9uKGludCBfbGluZSwgaW50IF9vZmZzZXQsIGludCBf
bGluZVN0YXJ0T2Zmc2V0KQogICAgICAgICBKU1RleHRQb3NpdGlvbiBkaXZvdChmaXJzdExpbmUo
KSwgc3RhcnRPZmZzZXQoKSwgbGluZVN0YXJ0T2Zmc2V0KCkpOwogCkBAIC00MDEwLDExICs0MDYy
LDExIEBAIHZvaWQgRnVuY3Rpb25Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
IGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCiAgICAgICAgIFJlZjxMYWJlbD4gZ2VuZXJhdG9yQm9k
eUxhYmVsID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CiAgICAgICAgIHsKICAgICAgICAgICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiBjb25kaXRpb24gPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7Ci0g
ICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEVxdWFsaXR5T3A8T3BTdHJpY3RlcT4oY29uZGl0aW9u
LmdldCgpLCBnZW5lcmF0b3IuZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCksIGdlbmVyYXRv
ci5lbWl0TG9hZChudWxscHRyLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVy
YXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JSZXN1bWVNb2RlOjpOb3JtYWxNb2RlKSkpKTsKKyAgICAg
ICAgICAgIGdlbmVyYXRvci5lbWl0RXF1YWxpdHlPcDxPcFN0cmljdGVxPihjb25kaXRpb24uZ2V0
KCksIGdlbmVyYXRvci5nZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSwgZ2VuZXJhdG9yLmVt
aXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9y
OjpHZW5lcmF0b3JSZXN1bWVNb2RlOjpOb3JtYWxNb2RlKSkpKTsKICAgICAgICAgICAgIGdlbmVy
YXRvci5lbWl0SnVtcElmVHJ1ZShjb25kaXRpb24uZ2V0KCksIGdlbmVyYXRvckJvZHlMYWJlbC5n
ZXQoKSk7CiAKICAgICAgICAgICAgIFJlZjxMYWJlbD4gdGhyb3dMYWJlbCA9IGdlbmVyYXRvci5u
ZXdMYWJlbCgpOwotICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRFcXVhbGl0eU9wPE9wU3RyaWN0
ZXE+KGNvbmRpdGlvbi5nZXQoKSwgZ2VuZXJhdG9yLmdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3Rl
cigpLCBnZW5lcmF0b3IuZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50
MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yUmVzdW1lTW9kZTo6VGhyb3dNb2Rl
KSkpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0RXF1YWxpdHlPcDxPcFN0cmljdGVxPihj
b25kaXRpb24uZ2V0KCksIGdlbmVyYXRvci5nZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSwg
Z2VuZXJhdG9yLmVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+
KEpTR2VuZXJhdG9yOjpHZW5lcmF0b3JSZXN1bWVNb2RlOjpUaHJvd01vZGUpKSkpOwogICAgICAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZUcnVlKGNvbmRpdGlvbi5nZXQoKSwgdGhyb3dMYWJl
bC5nZXQoKSk7CiAKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UmV0dXJuKGdlbmVyYXRvci5n
ZW5lcmF0b3JWYWx1ZVJlZ2lzdGVyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCmluZGV4IDliNmJmMDM1
OTc4Nzk3YTNlMzNhNGM4NDk1MTQwMzE0MGM1MzFkMTMuLmUzMDcxYzViZjMyZWQxMWY5NWZlMTE3
ZTNmMzYwOGQxYWI0ZDc4MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTM3LDYgKzM3LDcgQEAK
ICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJIYXNoTWFwSW1wbC5oIgogI2lu
Y2x1ZGUgIkpJVE9wZXJhdGlvbnMuaCIKKyNpbmNsdWRlICJKU0dlbmVyYXRvci5oIgogI2luY2x1
ZGUgIkpTSW1tdXRhYmxlQnV0dGVyZmx5LmgiCiAjaW5jbHVkZSAiSlNJbnRlcm5hbFByb21pc2Uu
aCIKICNpbmNsdWRlICJKU0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmgiCkBAIC0xNTY1LDYg
KzE1NjYsMTMgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6
ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgICAgIGJyZWFrOwog
CiAgICAgICAgIGNhc2UgSXNDZWxsV2l0aFR5cGU6CisgICAgICAgICAgICBpZiAobm9kZS0+c3Bl
Y3VsYXRlZFR5cGVGb3JRdWVyeSgpID09IFNwZWNDZWxsKSB7CisgICAgICAgICAgICAgICAgaWYg
KCEoY2hpbGQubV90eXBlICYgU3BlY0NlbGwpKSB7CisgICAgICAgICAgICAgICAgICAgIHNldENv
bnN0YW50KG5vZGUsIGpzQm9vbGVhbihmYWxzZSkpOworICAgICAgICAgICAgICAgICAgICBjb25z
dGFudFdhc1NldCA9IHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCEoY2hpbGQubV90eXBlICYgfm5v
ZGUtPnNwZWN1bGF0ZWRUeXBlRm9yUXVlcnkoKSkpIHsKICAgICAgICAgICAgICAgICBzZXRDb25z
dGFudChub2RlLCBqc0Jvb2xlYW4odHJ1ZSkpOwogICAgICAgICAgICAgICAgIGNvbnN0YW50V2Fz
U2V0ID0gdHJ1ZTsKQEAgLTI2NzUsMTAgKzI2ODMsNDIgQEAgYm9vbCBBYnN0cmFjdEludGVycHJl
dGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxp
bWkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBDcmVhdGVHZW5lcmF0b3I6IHsK
KyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgIGlmIChKU1ZhbHVlIGJhc2Ug
PSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3ZhbHVlKSB7CisgICAgICAgICAgICBpZiAoYXV0
byogZnVuY3Rpb24gPSBqc0R5bmFtaWNDYXN0PEpTRnVuY3Rpb24qPihtX2dyYXBoLm1fdm0sIGJh
c2UpKSB7CisgICAgICAgICAgICAgICAgaWYgKEZ1bmN0aW9uUmFyZURhdGEqIHJhcmVEYXRhID0g
ZnVuY3Rpb24tPnJhcmVEYXRhKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHJhcmVEYXRh
LT5hbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnRTZXQoKS5pc1N0aWxsVmFsaWQoKSkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSByYXJlRGF0YS0+aW50
ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25TdHJ1Y3R1cmUoKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChzdHJ1Y3R1cmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBzdHJ1Y3R1
cmUtPmNsYXNzSW5mbygpID09IEpTR2VuZXJhdG9yOjppbmZvKCkKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAmJiBzdHJ1Y3R1cmUtPmdsb2JhbE9iamVjdCgpID09IGdsb2JhbE9iamVjdAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIHJhcmVEYXRhLT5hbGxvY2F0aW9uUHJvZmls
ZVdhdGNocG9pbnRTZXQoKS5pc1N0aWxsVmFsaWQoKSkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1fZ3JhcGguZnJlZXplKHJhcmVEYXRhKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtX2dyYXBoLndhdGNocG9pbnRzKCkuYWRkTGF6aWx5KHJhcmVEYXRhLT5hbGxvY2F0aW9u
UHJvZmlsZVdhdGNocG9pbnRTZXQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9z
dGF0ZS5zZXRGb3VuZENvbnN0YW50cyh0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkaWRGb2xkQ2xvYmJlcldvcmxkKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0
Rm9yTm9kZShub2RlLCBzdHJ1Y3R1cmUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGNsb2Ji
ZXJXb3JsZCgpOworICAgICAgICBzZXRUeXBlRm9yTm9kZShub2RlLCBTcGVjT2JqZWN0T3RoZXIp
OworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIE5ld1Byb21pc2U6CiAgICAgICAg
IEFTU0VSVCghIW5vZGUtPnN0cnVjdHVyZSgpLmdldCgpKTsKICAgICAgICAgc2V0Rm9yTm9kZShu
b2RlLCBub2RlLT5zdHJ1Y3R1cmUoKSk7CiAgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBOZXdH
ZW5lcmF0b3I6CisgICAgICAgIEFTU0VSVCghIW5vZGUtPnN0cnVjdHVyZSgpLmdldCgpKTsKKyAg
ICAgICAgc2V0Rm9yTm9kZShub2RlLCBub2RlLT5zdHJ1Y3R1cmUoKSk7CisgICAgICAgIGJyZWFr
OwogICAgICAgICAKICAgICBjYXNlIE5ld09iamVjdDoKICAgICAgICAgQVNTRVJUKCEhbm9kZS0+
c3RydWN0dXJlKCkuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcAppbmRleCAyYzgyYjFlOTNiZDFmZDUyY2VkNTUwNGE0MWJhZWM5YTVk
OWI5MzkyLi4zZTU0MjgxZTM3NjFkZDAwMGNiNGM2ZmJhMTBkMDFiN2Y3MmI5YThhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtNDkz
OSw2ICs0OTM5LDUyIEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQg
bGltaXQpCiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9jcmVhdGVfcHJvbWlzZSk7CiAgICAg
ICAgIH0KIAorICAgICAgICBjYXNlIG9wX2NyZWF0ZV9nZW5lcmF0b3I6IHsKKyAgICAgICAgICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihj
dXJyZW50Tm9kZU9yaWdpbigpLnNlbWFudGljKTsKKyAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUg
PSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wQ3JlYXRlR2VuZXJhdG9yPigpOworICAgICAgICAg
ICAgTm9kZSogY2FsbGVlID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2NhbGxlZSkp
OworCisgICAgICAgICAgICBib29sIGFscmVhZHlFbWl0dGVkID0gZmFsc2U7CisKKyAgICAgICAg
ICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gY2FsbGVlLT5keW5hbWljQ2FzdENvbnN0YW50PEpT
RnVuY3Rpb24qPigqbV92bSk7CisgICAgICAgICAgICBpZiAoIWZ1bmN0aW9uKSB7CisgICAgICAg
ICAgICAgICAgSlNDZWxsKiBjYWNoZWRGdW5jdGlvbiA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVC
bG9jaykubV9jYWNoZWRDYWxsZWUudW52YWxpZGF0ZWRHZXQoKTsKKyAgICAgICAgICAgICAgICBp
ZiAoY2FjaGVkRnVuY3Rpb24KKyAgICAgICAgICAgICAgICAgICAgJiYgY2FjaGVkRnVuY3Rpb24g
IT0gSlNDZWxsOjpzZWVuTXVsdGlwbGVDYWxsZWVPYmplY3RzKCkKKyAgICAgICAgICAgICAgICAg
ICAgJiYgIW1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJy
ZW50SW5kZXgsIEJhZENlbGwpKSB7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChjYWNoZWRG
dW5jdGlvbi0+aW5oZXJpdHM8SlNGdW5jdGlvbj4oKm1fdm0pKTsKKworICAgICAgICAgICAgICAg
ICAgICBGcm96ZW5WYWx1ZSogZnJvemVuID0gbV9ncmFwaC5mcmVlemUoY2FjaGVkRnVuY3Rpb24p
OworICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKENoZWNrQ2VsbCwgT3BJbmZvKGZyb3pl
biksIGNhbGxlZSk7CisKKyAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gPSBzdGF0aWNfY2Fz
dDxKU0Z1bmN0aW9uKj4oY2FjaGVkRnVuY3Rpb24pOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGZ1bmN0aW9uKSB7CisgICAgICAgICAgICAgICAg
aWYgKEZ1bmN0aW9uUmFyZURhdGEqIHJhcmVEYXRhID0gZnVuY3Rpb24tPnJhcmVEYXRhKCkpIHsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKHJhcmVEYXRhLT5hbGxvY2F0aW9uUHJvZmlsZVdhdGNo
cG9pbnRTZXQoKS5pc1N0aWxsVmFsaWQoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUgPSByYXJlRGF0YS0+aW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25T
dHJ1Y3R1cmUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdHJ1Y3R1cmUKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAmJiBzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpID09IEpTR2Vu
ZXJhdG9yOjppbmZvKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBzdHJ1Y3R1cmUt
Pmdsb2JhbE9iamVjdCgpID09IGdsb2JhbE9iamVjdAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICYmIHJhcmVEYXRhLT5hbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnRTZXQoKS5pc1N0aWxs
VmFsaWQoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguZnJlZXplKHJh
cmVEYXRhKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLndhdGNocG9pbnRz
KCkuYWRkTGF6aWx5KHJhcmVEYXRhLT5hbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnRTZXQoKSk7
CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgY2FsbGVlIGlzIHN0aWxsIGxp
dmUgdXAgdG8gdGhpcyBwb2ludC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRUb0dy
YXBoKFBoYW50b20sIGNhbGxlZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0KFZp
cnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2RzdCksIGFkZFRvR3JhcGgoTmV3R2VuZXJhdG9yLCBP
cEluZm8obV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShzdHJ1Y3R1cmUpKSkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGFscmVhZHlFbWl0dGVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghYWxyZWFkeUVtaXR0ZWQpCisgICAgICAgICAg
ICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2RzdCksIGFkZFRvR3JhcGgoQ3Jl
YXRlR2VuZXJhdG9yLCBjYWxsZWUpKTsKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2NyZWF0
ZV9nZW5lcmF0b3IpOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBvcF9uZXdfb2JqZWN0OiB7
CiAgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcE5l
d09iamVjdD4oKTsKICAgICAgICAgICAgIHNldChieXRlY29kZS5tX2RzdCwKQEAgLTQ5NTMsNiAr
NDk5OSwxMyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0
KQogICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLm1fZHN0LCBhZGRUb0dyYXBoKE5ld1Byb21pc2Us
IE9wSW5mbyhtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKGJ5dGVjb2RlLm1faXNJbnRlcm5hbFBy
b21pc2UgPyBnbG9iYWxPYmplY3QtPmludGVybmFsUHJvbWlzZVN0cnVjdHVyZSgpIDogZ2xvYmFs
T2JqZWN0LT5wcm9taXNlU3RydWN0dXJlKCkpKSwgT3BJbmZvKGJ5dGVjb2RlLm1faXNJbnRlcm5h
bFByb21pc2UpKSk7CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9uZXdfcHJvbWlzZSk7CiAg
ICAgICAgIH0KKworICAgICAgICBjYXNlIG9wX25ld19nZW5lcmF0b3I6IHsKKyAgICAgICAgICAg
IGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wTmV3R2VuZXJhdG9yPigp
OworICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKGN1cnJlbnROb2RlT3JpZ2luKCkuc2VtYW50aWMpOworICAgICAgICAgICAg
c2V0KGJ5dGVjb2RlLm1fZHN0LCBhZGRUb0dyYXBoKE5ld0dlbmVyYXRvciwgT3BJbmZvKG1fZ3Jh
cGgucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5nZW5lcmF0b3JTdHJ1Y3R1cmUoKSkp
KSk7CisgICAgICAgICAgICBORVhUX09QQ09ERShvcF9uZXdfZ2VuZXJhdG9yKTsKKyAgICAgICAg
fQogICAgICAgICAgICAgCiAgICAgICAgIGNhc2Ugb3BfbmV3X2FycmF5OiB7CiAgICAgICAgICAg
ICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcE5ld0FycmF5PigpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCmluZGV4IGMw
ZWU5OGFlYTgzOGQ3MjU2ZTZiNzU0YjU0NTc0YmI4ZDZlOWY5ZmEuLjcxZWM3ZjE2Mjg0OTVlYjJj
ODQwNDU5NTE3ODU3MTAyZjFkOGU0MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NhcGFiaWxpdGllcy5jcHAKQEAgLTExNyw2ICsxMTcsNyBAQCBDYXBhYmlsaXR5TGV2ZWwg
Y2FwYWJpbGl0eUxldmVsKE9wY29kZUlEIG9wY29kZUlELCBDb2RlQmxvY2sqIGNvZGVCbG9jaywg
Y29uc3QgSQogICAgIGNhc2Ugb3BfY2hlY2tfdGR6OgogICAgIGNhc2Ugb3BfY3JlYXRlX3RoaXM6
CiAgICAgY2FzZSBvcF9jcmVhdGVfcHJvbWlzZToKKyAgICBjYXNlIG9wX2NyZWF0ZV9nZW5lcmF0
b3I6CiAgICAgY2FzZSBvcF9iaXRub3Q6CiAgICAgY2FzZSBvcF9iaXRhbmQ6CiAgICAgY2FzZSBv
cF9iaXRvcjoKQEAgLTIxMiw2ICsyMTMsNyBAQCBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxl
dmVsKE9wY29kZUlEIG9wY29kZUlELCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgSQogICAg
IGNhc2Ugb3BfZW5kOgogICAgIGNhc2Ugb3BfbmV3X29iamVjdDoKICAgICBjYXNlIG9wX25ld19w
cm9taXNlOgorICAgIGNhc2Ugb3BfbmV3X2dlbmVyYXRvcjoKICAgICBjYXNlIG9wX25ld19hcnJh
eToKICAgICBjYXNlIG9wX25ld19hcnJheV93aXRoX3NpemU6CiAgICAgY2FzZSBvcF9uZXdfYXJy
YXlfYnVmZmVyOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9i
YmVyaXplLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAppbmRl
eCBjMWI3YTBiYzIyMWNmNDg0MWM2ZDQzMWFjNGU1Y2U1YWRhMWY3MWEwLi5iOGMxNzFkM2E3NmNk
YzMzODMyOWQ4OTFhZWI1YmUwNzZiMjRkZjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Nsb2JiZXJpemUuaApAQCAtNjY3LDYgKzY2Nyw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFw
aCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0
ZUZ1CiAgICAgY2FzZSBOdW1iZXJUb1N0cmluZ1dpdGhSYWRpeDoKICAgICBjYXNlIENyZWF0ZVRo
aXM6CiAgICAgY2FzZSBDcmVhdGVQcm9taXNlOgorICAgIGNhc2UgQ3JlYXRlR2VuZXJhdG9yOgog
ICAgIGNhc2UgSW5zdGFuY2VPZjoKICAgICBjYXNlIFN0cmluZ1ZhbHVlT2Y6CiAgICAgY2FzZSBP
YmplY3RLZXlzOgpAQCAtMTU2NSw2ICsxNTY2LDcgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBn
cmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUK
IAogICAgIGNhc2UgTmV3T2JqZWN0OgogICAgIGNhc2UgTmV3UHJvbWlzZToKKyAgICBjYXNlIE5l
d0dlbmVyYXRvcjoKICAgICBjYXNlIE5ld1JlZ2V4cDoKICAgICBjYXNlIE5ld1N5bWJvbDoKICAg
ICBjYXNlIE5ld1N0cmluZ09iamVjdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHAKaW5kZXggMzcwZmQxZGMyYzVjMTQ3NmM3YjVhNTNj
ZmRjMmRiN2MxZjRlMDFjNC4uZDJmN2JhNDc4ZDhlYzgzNGNkMjUwOGQ1M2JkOWZhMTRkMjgwMDkw
ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyc0V4aXRT
dGF0ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyc0V4aXRT
dGF0ZS5jcHAKQEAgLTU4LDYgKzU4LDcgQEAgYm9vbCBjbG9iYmVyc0V4aXRTdGF0ZShHcmFwaCYg
Z3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBBcnJheWlmeToKICAgICBjYXNlIE5ld09iamVj
dDoKICAgICBjYXNlIE5ld1Byb21pc2U6CisgICAgY2FzZSBOZXdHZW5lcmF0b3I6CiAgICAgY2Fz
ZSBOZXdSZWdleHA6CiAgICAgY2FzZSBOZXdTeW1ib2w6CiAgICAgY2FzZSBOZXdTdHJpbmdPYmpl
Y3Q6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9s
ZGluZ1BoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xk
aW5nUGhhc2UuY3BwCmluZGV4IDk5ZDg3NWU2NmE2YjcwZmJlNTI4ODFlMDAxMTdhNzA4YmVhNDNi
ZDAuLmYzZjVjYjYwZDg4YWM1YzY0NTJkZGYxNWJlNGM0NWRmZTEwOGQ5YTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3Bw
CkBAIC03NzgsNiArNzc4LDMwIEBAIGNsYXNzIENvbnN0YW50Rm9sZGluZ1BoYXNlIDogcHVibGlj
IFBoYXNlIHsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KIAorICAgICAg
ICAgICAgY2FzZSBDcmVhdGVHZW5lcmF0b3I6IHsKKyAgICAgICAgICAgICAgICBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKTsKKyAgICAgICAgICAgICAgICBpZiAoSlNWYWx1ZSBiYXNlID0gbV9zdGF0ZS5m
b3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3ZhbHVlKSB7CisgICAgICAgICAgICAgICAgICAgIGlm
IChhdXRvKiBmdW5jdGlvbiA9IGpzRHluYW1pY0Nhc3Q8SlNGdW5jdGlvbio+KG1fZ3JhcGgubV92
bSwgYmFzZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChGdW5jdGlvblJhcmVEYXRh
KiByYXJlRGF0YSA9IGZ1bmN0aW9uLT5yYXJlRGF0YSgpKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKHJhcmVEYXRhLT5hbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnRTZXQoKS5p
c1N0aWxsVmFsaWQoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSA9IHJhcmVEYXRhLT5pbnRlcm5hbEZ1bmN0aW9uQWxsb2NhdGlvblN0cnVj
dHVyZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RydWN0dXJlCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBzdHJ1Y3R1cmUtPmNsYXNzSW5m
bygpID09IEpTR2VuZXJhdG9yOjppbmZvKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICYmIHN0cnVjdHVyZS0+Z2xvYmFsT2JqZWN0KCkgPT0gZ2xvYmFsT2JqZWN0CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiByYXJlRGF0YS0+YWxsb2NhdGlvblBy
b2ZpbGVXYXRjaHBvaW50U2V0KCkuaXNTdGlsbFZhbGlkKCkpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguZnJlZXplKHJhcmVEYXRhKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgud2F0Y2hwb2ludHMoKS5hZGRMYXppbHko
cmFyZURhdGEtPmFsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludFNldCgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb05ld0dlbmVyYXRvcihtX2dy
YXBoLnJlZ2lzdGVyU3RydWN0dXJlKHN0cnVjdHVyZSkpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgY2FzZSBPYmplY3RDcmVhdGU6IHsK
ICAgICAgICAgICAgICAgICBpZiAoSlNWYWx1ZSBiYXNlID0gbV9zdGF0ZS5mb3JOb2RlKG5vZGUt
PmNoaWxkMSgpKS5tX3ZhbHVlKSB7CiAgICAgICAgICAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0Mu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCmluZGV4IGZiMzEy
MmI3YzI2NWQzYjhlZDFhNmEwMDZiMmRjODI0YTVlNThkNzUuLmJlYTFlMTY2ZTQ5ZTZmZGJhMDM1
Nzc1OGYwNWNlMzU4MWVmY2JhZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRG9lc0dDLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNH
Qy5jcHAKQEAgLTMzMiw2ICszMzIsNyBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUq
IG5vZGUpCiAgICAgY2FzZSBUcnlHZXRCeUlkOgogICAgIGNhc2UgQ3JlYXRlVGhpczoKICAgICBj
YXNlIENyZWF0ZVByb21pc2U6CisgICAgY2FzZSBDcmVhdGVHZW5lcmF0b3I6CiAgICAgY2FzZSBP
YmplY3RDcmVhdGU6CiAgICAgY2FzZSBPYmplY3RLZXlzOgogICAgIGNhc2UgQWxsb2NhdGVQcm9w
ZXJ0eVN0b3JhZ2U6CkBAIC0zNDAsNiArMzQxLDcgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBo
LCBOb2RlKiBub2RlKQogICAgIGNhc2UgQXJyYXlpZnlUb1N0cnVjdHVyZToKICAgICBjYXNlIE5l
d09iamVjdDoKICAgICBjYXNlIE5ld1Byb21pc2U6CisgICAgY2FzZSBOZXdHZW5lcmF0b3I6CiAg
ICAgY2FzZSBOZXdBcnJheToKICAgICBjYXNlIE5ld0FycmF5V2l0aFNwcmVhZDoKICAgICBjYXNl
IFNwcmVhZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQ
aGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmlu
ZGV4IGU0NWFjNWMxZTY0YzczZmUyNjg5YzRlMzhlNGVlMmIxMjVkYzM3MWQuLmE1MDFjZGQ4NDNl
MTBjNGVmMjg4OWM0MDU3MGUwMDBkYjIxNjQ5NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdGaXh1cFBoYXNlLmNwcApAQCAtMTY0Niw2ICsxNjQ2LDcgQEAgY2xhc3MgRml4dXBQ
aGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgIGNhc2UgQ2hlY2tDZWxsOgogICAgICAgICBj
YXNlIENyZWF0ZVRoaXM6CiAgICAgICAgIGNhc2UgQ3JlYXRlUHJvbWlzZToKKyAgICAgICAgY2Fz
ZSBDcmVhdGVHZW5lcmF0b3I6CiAgICAgICAgIGNhc2UgR2V0QnV0dGVyZmx5OiB7CiAgICAgICAg
ICAgICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIGJyZWFr
OwpAQCAtMjQwOCw2ICsyNDA5LDcgQEAgY2xhc3MgRml4dXBQaGFzZSA6IHB1YmxpYyBQaGFzZSB7
CiAgICAgICAgIGNhc2UgUHJvZmlsZUNvbnRyb2xGbG93OgogICAgICAgICBjYXNlIE5ld09iamVj
dDoKICAgICAgICAgY2FzZSBOZXdQcm9taXNlOgorICAgICAgICBjYXNlIE5ld0dlbmVyYXRvcjoK
ICAgICAgICAgY2FzZSBOZXdSZWdleHA6CiAgICAgICAgIGNhc2UgRGVsZXRlQnlJZDoKICAgICAg
ICAgY2FzZSBEZWxldGVCeVZhbDoKQEAgLTI2MzMsNiArMjYzNSw5IEBAIGNsYXNzIEZpeHVwUGhh
c2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgU3BlY0NlbGw6CisgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hv
dWxkU3BlY3VsYXRlQ2VsbCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR05vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCmluZGV4
IDY5ZjA4YzE4NmQ0OGNlYmY2Yzc2Yjg5YTRkNWQ0ODQ0MDdkYjNkMGUuLjkyMmNlMWVjY2YyMGFj
MmQzNzY0MjFiZjA4NDM5Yzc2ZTI4Zjk4MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTm9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZS5oCkBAIC03NjcsNiArNzY3LDE1IEBAIHN0cnVjdCBOb2RlIHsKICAgICAgICAgbV9vcEluZm8y
ID0gaW50ZXJuYWw7CiAgICAgfQogCisgICAgdm9pZCBjb252ZXJ0VG9OZXdHZW5lcmF0b3IoUmVn
aXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUpCisgICAgeworICAgICAgICBBU1NFUlQobV9vcCA9
PSBDcmVhdGVHZW5lcmF0b3IpOworICAgICAgICBzZXRPcEFuZERlZmF1bHRGbGFncyhOZXdHZW5l
cmF0b3IpOworICAgICAgICBjaGlsZHJlbi5yZXNldCgpOworICAgICAgICBtX29wSW5mbyA9IHN0
cnVjdHVyZTsKKyAgICAgICAgbV9vcEluZm8yID0gT3BJbmZvV3JhcHBlcigpOworICAgIH0KKwog
ICAgIHZvaWQgY29udmVydFRvTmV3QXJyYXlCdWZmZXIoRnJvemVuVmFsdWUqIGltbXV0YWJsZUJ1
dHRlcmZseSk7CiAgICAgCiAgICAgdm9pZCBjb252ZXJ0VG9EaXJlY3RDYWxsKEZyb3plblZhbHVl
Kik7CkBAIC0xOTA5LDYgKzE5MTgsNyBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgICAgIGNhc2UgQXJy
YXlpZnlUb1N0cnVjdHVyZToKICAgICAgICAgY2FzZSBOZXdPYmplY3Q6CiAgICAgICAgIGNhc2Ug
TmV3UHJvbWlzZToKKyAgICAgICAgY2FzZSBOZXdHZW5lcmF0b3I6CiAgICAgICAgIGNhc2UgTmV3
U3RyaW5nT2JqZWN0OgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGRlZmF1bHQ6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKaW5kZXggNGQ3MTU4MmUxN2E2
OTFhMDU4YTgzNDcyMjg0ZjYwMTlmOTdkODAzOS4uMDYyY2RjMDg0OTMwZDc0YTAyYTcyYTMwYmU5
NjBmNmYxODUwM2RmMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaApA
QCAtNTQsNiArNTQsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFj
cm8oVG9UaGlzLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhDcmVhdGVUaGlzLCBOb2RlUmVz
dWx0SlMpIC8qIE5vdGUgdGhpcyBpcyBub3QgTXVzdEdlbmVyYXRlIHNpbmNlIHdlJ3JlIHJldHVy
bmluZyBpdCBhbnl3YXkuICovIFwKICAgICBtYWNybyhDcmVhdGVQcm9taXNlLCBOb2RlUmVzdWx0
SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oQ3JlYXRlR2VuZXJhdG9yLCBOb2Rl
UmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oR2V0Q2FsbGVlLCBOb2Rl
UmVzdWx0SlMpIFwKICAgICBtYWNybyhTZXRDYWxsZWUsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAg
ICBtYWNybyhHZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgTm9kZVJlc3VsdEludDMyKSBc
CkBAIC0zNDAsNiArMzQxLDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAg
IC8qIEFsbG9jYXRpb25zLiAqL1wKICAgICBtYWNybyhOZXdPYmplY3QsIE5vZGVSZXN1bHRKUykg
XAogICAgIG1hY3JvKE5ld1Byb21pc2UsIE5vZGVSZXN1bHRKUykgXAorICAgIG1hY3JvKE5ld0dl
bmVyYXRvciwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oTmV3QXJyYXksIE5vZGVSZXN1bHRK
UyB8IE5vZGVIYXNWYXJBcmdzKSBcCiAgICAgbWFjcm8oTmV3QXJyYXlXaXRoU3ByZWFkLCBOb2Rl
UmVzdWx0SlMgfCBOb2RlSGFzVmFyQXJncykgXAogICAgIG1hY3JvKE5ld0FycmF5V2l0aFNpemUs
IE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCmluZGV4IGFmYTI4MjIwZGNmMzAyNDQxNDQxNTkzZTM1
NzNkODllM2FkNTAzM2QuLmMzMTVjMjY1MjdjNzYyYjEzYzBlNmUzM2MzNDljMmJjYjY0NDQ5YWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcApAQCAtMzk4
LDYgKzM5OCwxNiBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlSW50ZXJu
YWxQcm9taXNlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqCiAgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCBKU0ludGVybmFsUHJvbWlzZTo6Y3JlYXRlKHZtLCBzdHJ1Y3R1cmUpKTsKIH0K
IAorSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZUdlbmVyYXRvcihFeGVjU3Rh
dGUqIGV4ZWMsIEpTT2JqZWN0KiBjb25zdHJ1Y3RvciwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCkKK3sKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIodm0sIGV4ZWMpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rpb246OmNy
ZWF0ZVN1YmNsYXNzU3RydWN0dXJlKGV4ZWMsIG51bGxwdHIsIGNvbnN0cnVjdG9yLCBnbG9iYWxP
YmplY3QtPmdlbmVyYXRvclN0cnVjdHVyZSgpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBudWxscHRyKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTR2VuZXJhdG9y
OjpjcmVhdGUodm0sIHN0cnVjdHVyZSkpOworfQorCiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uQ2FsbE9iamVjdENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFRhcmdldCkKIHsKICAgICBW
TSYgdm0gPSBleGVjLT52bSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlv
bnMuaAppbmRleCBiOThlNjIxNzVjNjZmMzZlMzY0ZDU4ZTlkYzgwNmFkMDUyZGM2NTJiLi43NDRh
NTBkYmZlZjgyNzVlMjlhZjcyOTY5YzY4NjRhMzY2MmM1NzAyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaApAQCAtNTAsNiArNTAsNyBAQCBKU0NlbGwqIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uT2JqZWN0Q3JlYXRlT2JqZWN0KEV4ZWNTdGF0ZSosIEpTT2JqZWN0
KikgV1RGX0lOVAogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZVRoaXMoRXhl
Y1N0YXRlKiwgSlNPYmplY3QqIGNvbnN0cnVjdG9yLCB1aW50MzJfdCBpbmxpbmVDYXBhY2l0eSkg
V1RGX0lOVEVSTkFMOwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZVByb21p
c2UoRXhlY1N0YXRlKiwgSlNPYmplY3QqIGNvbnN0cnVjdG9yLCBKU0dsb2JhbE9iamVjdCopIFdU
Rl9JTlRFUk5BTDsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVJbnRlcm5h
bFByb21pc2UoRXhlY1N0YXRlKiwgSlNPYmplY3QqIGNvbnN0cnVjdG9yLCBKU0dsb2JhbE9iamVj
dCopIFdURl9JTlRFUk5BTDsKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVH
ZW5lcmF0b3IoRXhlY1N0YXRlKiwgSlNPYmplY3QqIGNvbnN0cnVjdG9yLCBKU0dsb2JhbE9iamVj
dCopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
VG9UaGlzKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEpIFdURl9JTlRFUk5B
TDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVG9UaGlzU3RyaWN0KEV4
ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEpIFdURl9JTlRFUk5BTDsKIEVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVNb2QoRXhlY1N0YXRlKiwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMikgV1RGX0lO
VEVSTkFMOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0
aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1By
ZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAppbmRleCA0OGE0MWIzMDcyYjc2NzYzNjE5MTA0
NTNhNGRlNGY1YWFlYjU0YmFiLi5mMjA5YzRhNmY3NDcxYmRhZTJlOGZkYjNhNzg3MDcyZTE0MGM4
N2Q2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1By
ZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcApAQCAtMTAxNCw2ICsxMDE0LDExIEBAIGNsYXNz
IFByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgY2Fz
ZSBOZXdQcm9taXNlOgogICAgICAgICAgICAgc2V0UHJlZGljdGlvbihTcGVjUHJvbWlzZU9iamVj
dCk7CiAgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIENyZWF0ZUdlbmVyYXRvcjoK
KyAgICAgICAgY2FzZSBOZXdHZW5lcmF0b3I6CisgICAgICAgICAgICBzZXRQcmVkaWN0aW9uKFNw
ZWNPYmplY3RPdGhlcik7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIAogICAgICAg
ICBjYXNlIEFycmF5U2xpY2U6CiAgICAgICAgIGNhc2UgTmV3QXJyYXlXaXRoU3ByZWFkOgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAppbmRleCBjYThhZWEz
MGEzNTI2NmM2NzU0NTliOWI1ZWY1NDUyYzUzMTc2ZDVkLi4wOTVlMTVhZDlkMzY3M2U4ZmM4OTY3
OTI0YmVhODRlMjg4ODAzOWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NhZmVUb0V4ZWN1dGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nh
ZmVUb0V4ZWN1dGUuaApAQCAtMTc5LDYgKzE3OSw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0
cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgYm9vbCBpZ25v
CiAgICAgY2FzZSBUb1RoaXM6CiAgICAgY2FzZSBDcmVhdGVUaGlzOgogICAgIGNhc2UgQ3JlYXRl
UHJvbWlzZToKKyAgICBjYXNlIENyZWF0ZUdlbmVyYXRvcjoKICAgICBjYXNlIE9iamVjdENyZWF0
ZToKICAgICBjYXNlIE9iamVjdEtleXM6CiAgICAgY2FzZSBHZXRDYWxsZWU6CkBAIC0zMjEsNiAr
MzIyLDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3Jh
cGgmIGdyYXBoLCBOb2RlKiBub2RlLCBib29sIGlnbm8KICAgICBjYXNlIENvbnN0cnVjdEZvcndh
cmRWYXJhcmdzOgogICAgIGNhc2UgTmV3T2JqZWN0OgogICAgIGNhc2UgTmV3UHJvbWlzZToKKyAg
ICBjYXNlIE5ld0dlbmVyYXRvcjoKICAgICBjYXNlIE5ld0FycmF5OgogICAgIGNhc2UgTmV3QXJy
YXlXaXRoU2l6ZToKICAgICBjYXNlIE5ld0FycmF5QnVmZmVyOgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCA1MjhlMTEzZjc2ODZmZmUy
NmQyY2EyZDM5MjQyMDVkN2Q1NGI4NTAwLi4zZDc3Y2Y1ZjZmMmRkY2Y4MDRkMzc2MGYzNjRlNjU0
NDIzOGRkMjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmNwcApAQCAtMTI3NDQsNiArMTI3NDQsNTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUNyZWF0ZVByb21pc2UoTm9kZSogbm9kZSkKICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQ
Uiwgbm9kZSk7CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVHZW5lcmF0
b3IoTm9kZSogbm9kZSkKK3sKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9q
aXQuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisKKyAgICBTcGVjdWxh
dGVDZWxsT3BlcmFuZCBjYWxsZWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgIEdQUlRlbXBv
cmFyeSByZXN1bHQodGhpcyk7CisgICAgR1BSVGVtcG9yYXJ5IHN0cnVjdHVyZSh0aGlzKTsKKyAg
ICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDEodGhpcyk7CisgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2gy
KHRoaXMpOworCisgICAgR1BSUmVnIGNhbGxlZUdQUiA9IGNhbGxlZS5ncHIoKTsKKyAgICBHUFJS
ZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworICAgIEdQUlJlZyBzdHJ1Y3R1cmVHUFIgPSBz
dHJ1Y3R1cmUuZ3ByKCk7CisgICAgR1BSUmVnIHNjcmF0Y2gxR1BSID0gc2NyYXRjaDEuZ3ByKCk7
CisgICAgR1BSUmVnIHNjcmF0Y2gyR1BSID0gc2NyYXRjaDIuZ3ByKCk7CisgICAgLy8gUmFyZSBk
YXRhIGlzIG9ubHkgdXNlZCB0byBhY2Nlc3MgdGhlIGFsbG9jYXRvciAmIHN0cnVjdHVyZQorICAg
IC8vIFdlIGNhbiBhdm9pZCB1c2luZyBhbiBhZGRpdGlvbmFsIEdQUiB0aGlzIHdheQorICAgIEdQ
UlJlZyByYXJlRGF0YUdQUiA9IHN0cnVjdHVyZUdQUjsKKworICAgIE1hY3JvQXNzZW1ibGVyOjpK
dW1wTGlzdCBzbG93Q2FzZXM7CisKKyAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaElm
Tm90RnVuY3Rpb24oY2FsbGVlR1BSKSk7CisgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6
QWRkcmVzcyhjYWxsZWVHUFIsIEpTRnVuY3Rpb246Om9mZnNldE9mUmFyZURhdGEoKSksIHJhcmVE
YXRhR1BSKTsKKyAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9B
c3NlbWJsZXI6Olplcm8sIHJhcmVEYXRhR1BSKSk7CisgICAgbV9qaXQubG9hZFB0cihKSVRDb21w
aWxlcjo6QWRkcmVzcyhyYXJlRGF0YUdQUiwgRnVuY3Rpb25SYXJlRGF0YTo6b2Zmc2V0T2ZJbnRl
cm5hbEZ1bmN0aW9uQWxsb2NhdGlvblByb2ZpbGUoKSArIEludGVybmFsRnVuY3Rpb25BbGxvY2F0
aW9uUHJvZmlsZTo6b2Zmc2V0T2ZTdHJ1Y3R1cmUoKSksIHN0cnVjdHVyZUdQUik7CisgICAgbV9q
aXQubW92ZShUcnVzdGVkSW1tUHRyKEpTR2VuZXJhdG9yOjppbmZvKCkpLCBzY3JhdGNoMUdQUik7
CisgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hQdHIoQ0NhbGxIZWxwZXJzOjpOb3RF
cXVhbCwgc2NyYXRjaDFHUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHJ1Y3R1cmVHUFIsIFN0
cnVjdHVyZTo6Y2xhc3NJbmZvT2Zmc2V0KCkpKSk7CisgICAgbV9qaXQubW92ZShUcnVzdGVkSW1t
UHRyOjp3ZWFrUG9pbnRlcihtX2ppdC5ncmFwaCgpLCBnbG9iYWxPYmplY3QpLCBzY3JhdGNoMUdQ
Uik7CisgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hQdHIoQ0NhbGxIZWxwZXJzOjpO
b3RFcXVhbCwgc2NyYXRjaDFHUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHJ1Y3R1cmVHUFIs
IFN0cnVjdHVyZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0KCkpKSk7CisKKyAgICBhdXRvIGJ1dHRlcmZs
eSA9IFRydXN0ZWRJbW1QdHIobnVsbHB0cik7CisgICAgZW1pdEFsbG9jYXRlSlNPYmplY3RXaXRo
S25vd25TaXplPEpTR2VuZXJhdG9yPihyZXN1bHRHUFIsIHN0cnVjdHVyZUdQUiwgYnV0dGVyZmx5
LCBzY3JhdGNoMUdQUiwgc2NyYXRjaDJHUFIsIHNsb3dDYXNlcywgc2l6ZW9mKEpTR2VuZXJhdG9y
KSk7CisgICAgbV9qaXQuc3RvcmVUcnVzdGVkVmFsdWUoanNOdWxsKCksIENDYWxsSGVscGVyczo6
QWRkcmVzcyhyZXN1bHRHUFIsIEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGw8Pjo6b2Zmc2V0T2ZJ
bnRlcm5hbEZpZWxkKHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0dlbmVyYXRvcjo6RmllbGQ6OlBv
bHlQcm90bykpKSk7CisgICAgbV9qaXQuc3RvcmVUcnVzdGVkVmFsdWUoanNOdW1iZXIoc3RhdGlj
X2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6OkdlbmVyYXRvclN0YXRlOjpJbml0KSksIENDYWxs
SGVscGVyczo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGw8Pjo6
b2Zmc2V0T2ZJbnRlcm5hbEZpZWxkKHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0dlbmVyYXRvcjo6
RmllbGQ6OlN0YXRlKSkpKTsKKyAgICBtX2ppdC5zdG9yZVRydXN0ZWRWYWx1ZShqc1VuZGVmaW5l
ZCgpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0ludGVybmFsRmllbGRPYmpl
Y3RJbXBsPD46Om9mZnNldE9mSW50ZXJuYWxGaWVsZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNH
ZW5lcmF0b3I6OkZpZWxkOjpOZXh0KSkpKTsKKyAgICBtX2ppdC5zdG9yZVRydXN0ZWRWYWx1ZShq
c1VuZGVmaW5lZCgpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0ludGVybmFs
RmllbGRPYmplY3RJbXBsPD46Om9mZnNldE9mSW50ZXJuYWxGaWVsZChzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNHZW5lcmF0b3I6OkZpZWxkOjpUaGlzKSkpKTsKKyAgICBtX2ppdC5zdG9yZVRydXN0
ZWRWYWx1ZShqc1VuZGVmaW5lZCgpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MocmVzdWx0R1BSLCBK
U0ludGVybmFsRmllbGRPYmplY3RJbXBsPD46Om9mZnNldE9mSW50ZXJuYWxGaWVsZChzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNHZW5lcmF0b3I6OkZpZWxkOjpGcmFtZSkpKSk7CisgICAgbV9qaXQu
bXV0YXRvckZlbmNlKG1faml0LnZtKCkpOworCisgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xv
d1BhdGhDYWxsKHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uQ3JlYXRlR2VuZXJhdG9yLCByZXN1
bHRHUFIsIGNhbGxlZUdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9qaXQuZ3JhcGgo
KSwgZ2xvYmFsT2JqZWN0KSkpOworCisgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwor
fQorCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3T2JqZWN0KE5vZGUqIG5vZGUpCiB7
CiAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKQEAgLTEyODAwLDYgKzEyODQ0LDMzIEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdQcm9taXNlKE5vZGUqIG5vZGUpCiAgICAg
Y2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogfQogCit2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlTmV3R2VuZXJhdG9yKE5vZGUqIG5vZGUpCit7CisgICAgR1BSVGVtcG9yYXJ5IHJlc3Vs
dCh0aGlzKTsKKyAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDEodGhpcyk7CisgICAgR1BSVGVtcG9y
YXJ5IHNjcmF0Y2gyKHRoaXMpOworCisgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIo
KTsKKyAgICBHUFJSZWcgc2NyYXRjaDFHUFIgPSBzY3JhdGNoMS5ncHIoKTsKKyAgICBHUFJSZWcg
c2NyYXRjaDJHUFIgPSBzY3JhdGNoMi5ncHIoKTsKKworICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1w
TGlzdCBzbG93Q2FzZXM7CisKKyAgICBGcm96ZW5WYWx1ZSogc3RydWN0dXJlID0gbV9ncmFwaC5m
cmVlemVTdHJvbmcobm9kZS0+c3RydWN0dXJlKCkuZ2V0KCkpOworICAgIGF1dG8gYnV0dGVyZmx5
ID0gVHJ1c3RlZEltbVB0cihudWxscHRyKTsKKyAgICBlbWl0QWxsb2NhdGVKU09iamVjdFdpdGhL
bm93blNpemU8SlNHZW5lcmF0b3I+KHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUp
LCBidXR0ZXJmbHksIHNjcmF0Y2gxR1BSLCBzY3JhdGNoMkdQUiwgc2xvd0Nhc2VzLCBzaXplb2Yo
SlNHZW5lcmF0b3IpKTsKKyAgICBtX2ppdC5zdG9yZVRydXN0ZWRWYWx1ZShqc051bGwoKSwgQ0Nh
bGxIZWxwZXJzOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbDw+
OjpvZmZzZXRPZkludGVybmFsRmllbGQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTR2VuZXJhdG9y
OjpGaWVsZDo6UG9seVByb3RvKSkpKTsKKyAgICBtX2ppdC5zdG9yZVRydXN0ZWRWYWx1ZShqc051
bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9yU3RhdGU6Oklu
aXQpKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNJbnRlcm5hbEZpZWxkT2Jq
ZWN0SW1wbDw+OjpvZmZzZXRPZkludGVybmFsRmllbGQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
R2VuZXJhdG9yOjpGaWVsZDo6U3RhdGUpKSkpOworICAgIG1faml0LnN0b3JlVHJ1c3RlZFZhbHVl
KGpzVW5kZWZpbmVkKCksIENDYWxsSGVscGVyczo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTSW50ZXJu
YWxGaWVsZE9iamVjdEltcGw8Pjo6b2Zmc2V0T2ZJbnRlcm5hbEZpZWxkKHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0dlbmVyYXRvcjo6RmllbGQ6Ok5leHQpKSkpOworICAgIG1faml0LnN0b3JlVHJ1
c3RlZFZhbHVlKGpzVW5kZWZpbmVkKCksIENDYWxsSGVscGVyczo6QWRkcmVzcyhyZXN1bHRHUFIs
IEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGw8Pjo6b2Zmc2V0T2ZJbnRlcm5hbEZpZWxkKHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0dlbmVyYXRvcjo6RmllbGQ6OlRoaXMpKSkpOworICAgIG1faml0
LnN0b3JlVHJ1c3RlZFZhbHVlKGpzVW5kZWZpbmVkKCksIENDYWxsSGVscGVyczo6QWRkcmVzcyhy
ZXN1bHRHUFIsIEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGw8Pjo6b2Zmc2V0T2ZJbnRlcm5hbEZp
ZWxkKHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0dlbmVyYXRvcjo6RmllbGQ6OkZyYW1lKSkpKTsK
KyAgICBtX2ppdC5tdXRhdG9yRmVuY2UobV9qaXQudm0oKSk7CisKKyAgICBhZGRTbG93UGF0aEdl
bmVyYXRvcihzbG93UGF0aENhbGwoc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25OZXdHZW5lcmF0
b3IsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpKSk7CisKKyAgICBjZWxsUmVz
dWx0KHJlc3VsdEdQUiwgbm9kZSk7Cit9CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVU
b1ByaW1pdGl2ZShOb2RlKiBub2RlKQogewogICAgIERGR19BU1NFUlQobV9qaXQuZ3JhcGgoKSwg
bm9kZSwgbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFVudHlwZWRVc2UsIG5vZGUtPmNoaWxk
MSgpLnVzZUtpbmQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmgKaW5kZXggZjk5MWRkMjAxNjI0ZTYwM2IyMWVkNzNkZDAzYzUzYzNiNzMxYWRlMi4u
MGYyZjVlNTg5MDgzMmQ5NTc4ZThhNGUwZmM3MWZhOWI4NjdhOWQyNSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaApAQCAtMTQ4NCw4ICsxNDg0LDEw
IEBAIGNsYXNzIFNwZWN1bGF0aXZlSklUIHsKICAgICB2b2lkIGNvbXBpbGVPYmplY3RDcmVhdGUo
Tm9kZSopOwogICAgIHZvaWQgY29tcGlsZUNyZWF0ZVRoaXMoTm9kZSopOwogICAgIHZvaWQgY29t
cGlsZUNyZWF0ZVByb21pc2UoTm9kZSopOworICAgIHZvaWQgY29tcGlsZUNyZWF0ZUdlbmVyYXRv
cihOb2RlKik7CiAgICAgdm9pZCBjb21waWxlTmV3T2JqZWN0KE5vZGUqKTsKICAgICB2b2lkIGNv
bXBpbGVOZXdQcm9taXNlKE5vZGUqKTsKKyAgICB2b2lkIGNvbXBpbGVOZXdHZW5lcmF0b3IoTm9k
ZSopOwogICAgIHZvaWQgY29tcGlsZVRvUHJpbWl0aXZlKE5vZGUqKTsKICAgICB2b2lkIGNvbXBp
bGVMb2dTaGFkb3dDaGlja2VuUHJvbG9ndWUoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUxvZ1No
YWRvd0NoaWNrZW5UYWlsKE5vZGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4IDA5Y2YwOTg0Njk4YjlmNzkzNzZm
MDU2NDE3ZTU3MTYwMzlhZTU2ZGIuLjI5N2E0MDkyNmJmNmRlNTBlMTMzZTllODJlYjA4OTM5MmFh
ZDc4M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDMyXzY0LmNwcApAQCAtMzIwMiw2ICszMjAyLDExIEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2Fz
ZSBDcmVhdGVHZW5lcmF0b3I6IHsKKyAgICAgICAgY29tcGlsZUNyZWF0ZUdlbmVyYXRvcihub2Rl
KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBOZXdPYmplY3Q6IHsKICAgICAg
ICAgY29tcGlsZU5ld09iamVjdChub2RlKTsKICAgICAgICAgYnJlYWs7CkBAIC0zMjEyLDYgKzMy
MTcsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAg
ICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIE5ld0dlbmVyYXRvcjogeworICAgICAgICBjb21w
aWxlTmV3R2VuZXJhdG9yKG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNl
IEdldENhbGxlZTogewogICAgICAgICBjb21waWxlR2V0Q2FsbGVlKG5vZGUpOwogICAgICAgICBi
cmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
NjQuY3BwCmluZGV4IGYxZjA0YzNjOTg3NWE2MzE2NWE2MjhmZjlmMWNlZGI1ZmM3MDZiMzYuLjZi
NmZkNTJmM2RhNmEzZjM4ODg2YTUxZmUzNTQ2YWYyODNhMjdjMTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtMzQ3OCw2ICsz
NDc4LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAg
ICAgY29tcGlsZUNyZWF0ZVByb21pc2Uobm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KKwor
ICAgIGNhc2UgQ3JlYXRlR2VuZXJhdG9yOiB7CisgICAgICAgIGNvbXBpbGVDcmVhdGVHZW5lcmF0
b3Iobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBOZXdP
YmplY3Q6IHsKICAgICAgICAgY29tcGlsZU5ld09iamVjdChub2RlKTsKQEAgLTM0ODksNiArMzQ5
NCwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAg
IGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgTmV3R2VuZXJhdG9yOiB7CisgICAgICAgIGNvbXBp
bGVOZXdHZW5lcmF0b3Iobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2Ug
R2V0Q2FsbGVlOiB7CiAgICAgICAgIGNvbXBpbGVHZXRDYWxsZWUobm9kZSk7CiAgICAgICAgIGJy
ZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJp
ZXJJbnNlcnRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3Jl
QmFycmllckluc2VydGlvblBoYXNlLmNwcAppbmRleCAyNGI1NWU3ODhkOWRlOWI1MDY5OTY3NTU3
NTM3NzM4YjMzMmJlMzU3Li4wZDU5MDE4NmQ4M2JkYjQ3NDVlZjdjN2MxNTY3NDEwMjQ1MjM5ZWM2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllcklu
c2VydGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3Jl
QmFycmllckluc2VydGlvblBoYXNlLmNwcApAQCAtMzIyLDYgKzMyMiw3IEBAIGNsYXNzIFN0b3Jl
QmFycmllckluc2VydGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgIHN3aXRj
aCAobV9ub2RlLT5vcCgpKSB7CiAgICAgICAgICAgICBjYXNlIE5ld09iamVjdDoKICAgICAgICAg
ICAgIGNhc2UgTmV3UHJvbWlzZToKKyAgICAgICAgICAgIGNhc2UgTmV3R2VuZXJhdG9yOgogICAg
ICAgICAgICAgY2FzZSBOZXdBcnJheToKICAgICAgICAgICAgIGNhc2UgTmV3QXJyYXlXaXRoU2l6
ZToKICAgICAgICAgICAgIGNhc2UgTmV3QXJyYXlCdWZmZXI6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKaW5kZXggODQ1YzQxN2VjZGIxNGJmNTBhNDVm
NWU4ZTA5ZTNhZTIzOTlmOWQ4MC4uZWE4NDJjMDYxMmM2Y2NiOWM1MDhlYTUxMzYwMDg2MGRjNzdm
YzMxNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRp
ZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNw
cApAQCAtNzUsNiArNzUsNyBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9k
ZSogbm9kZSkKICAgICBjYXNlIEdldEJ1dHRlcmZseToKICAgICBjYXNlIE5ld09iamVjdDoKICAg
ICBjYXNlIE5ld1Byb21pc2U6CisgICAgY2FzZSBOZXdHZW5lcmF0b3I6CiAgICAgY2FzZSBOZXdT
dHJpbmdPYmplY3Q6CiAgICAgY2FzZSBOZXdTeW1ib2w6CiAgICAgY2FzZSBOZXdBcnJheToKQEAg
LTM3OSw2ICszODAsNyBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSog
bm9kZSkKICAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoKICAgICBjYXNlIENyZWF0ZVRoaXM6
CiAgICAgY2FzZSBDcmVhdGVQcm9taXNlOgorICAgIGNhc2UgQ3JlYXRlR2VuZXJhdG9yOgogICAg
IGNhc2UgRGF0YVZpZXdHZXRJbnQ6CiAgICAgY2FzZSBEYXRhVmlld0dldEZsb2F0OgogICAgIGNh
c2UgRGF0YVZpZXdTZXQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZH
VG9CMy5jcHAKaW5kZXggM2MxZjI4OGI2YmVlMjFlNGEyNmY1NDE1YjNjYjJjYmYwNjg4OTQ1YS4u
MzU3NzBkZGM5YjY0Yzk5NDgzYzM0ZGFhMzA0NmE3NWMwMDk1ZjFiOSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtNzgsNiArNzgsNyBAQAog
I2luY2x1ZGUgIkpTQXN5bmNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQXN5bmNHZW5lcmF0b3JG
dW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJKU0dlbmVyYXRv
ci5oIgogI2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0ltbXV0
YWJsZUJ1dHRlcmZseS5oIgogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCkBAIC0x
MDQ4LDYgKzEwNDksOSBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBjYXNlIE5ld1By
b21pc2U6CiAgICAgICAgICAgICBjb21waWxlTmV3UHJvbWlzZSgpOwogICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgTmV3R2VuZXJhdG9yOgorICAgICAgICAgICAgY29tcGlsZU5ld0dl
bmVyYXRvcigpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTmV3U3RyaW5nT2Jq
ZWN0OgogICAgICAgICAgICAgY29tcGlsZU5ld1N0cmluZ09iamVjdCgpOwogICAgICAgICAgICAg
YnJlYWs7CkBAIC0xMDY2LDYgKzEwNzAsOSBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAg
ICBjYXNlIENyZWF0ZVByb21pc2U6CiAgICAgICAgICAgICBjb21waWxlQ3JlYXRlUHJvbWlzZSgp
OwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ3JlYXRlR2VuZXJhdG9yOgorICAg
ICAgICAgICAgY29tcGlsZUNyZWF0ZUdlbmVyYXRvcigpOworICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGNhc2UgU3ByZWFkOgogICAgICAgICAgICAgY29tcGlsZVNwcmVhZCgpOwogICAgICAg
ICAgICAgYnJlYWs7CkBAIC01OTA5LDYgKzU5MTYsMzEgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsK
ICAgICAgICAgc2V0SlNWYWx1ZShtX291dC5waGkocG9pbnRlclR5cGUoKSwgZmFzdFJlc3VsdCwg
c2xvd1Jlc3VsdCkpOwogICAgIH0KIAorICAgIHZvaWQgY29tcGlsZU5ld0dlbmVyYXRvcigpCisg
ICAgeworICAgICAgICBMQmFzaWNCbG9jayBzbG93Q2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7Cisg
ICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisKKyAg
ICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5pbnNlcnROZXdCbG9ja3NCZWZvcmUo
c2xvd0Nhc2UpOworCisgICAgICAgIExWYWx1ZSBnZW5lcmF0b3IgPSBhbGxvY2F0ZU9iamVjdDxK
U0dlbmVyYXRvcj4obV9ub2RlLT5zdHJ1Y3R1cmUoKSwgbV9vdXQuaW50UHRyWmVybywgc2xvd0Nh
c2UpOworICAgICAgICBtX291dC5zdG9yZTY0KG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6ZW5j
b2RlKGpzTnVsbCgpKSksIGdlbmVyYXRvciwgbV9oZWFwcy5KU0ludGVybmFsRmllbGRPYmplY3RJ
bXBsX2ludGVybmFsRmllbGRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihKU0dlbmVyYXRvcjo6Rmll
bGQ6OlBvbHlQcm90byldKTsKKyAgICAgICAgbV9vdXQuc3RvcmU2NChtX291dC5jb25zdEludDY0
KEpTVmFsdWU6OmVuY29kZShqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRv
cjo6R2VuZXJhdG9yU3RhdGU6OkluaXQpKSkpLCBnZW5lcmF0b3IsIG1faGVhcHMuSlNJbnRlcm5h
bEZpZWxkT2JqZWN0SW1wbF9pbnRlcm5hbEZpZWxkc1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNH
ZW5lcmF0b3I6OkZpZWxkOjpTdGF0ZSldKTsKKyAgICAgICAgbV9vdXQuc3RvcmU2NChtX291dC5j
b25zdEludDY0KEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKSksIGdlbmVyYXRvciwgbV9o
ZWFwcy5KU0ludGVybmFsRmllbGRPYmplY3RJbXBsX2ludGVybmFsRmllbGRzW3N0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0dlbmVyYXRvcjo6RmllbGQ6Ok5leHQpXSk7CisgICAgICAgIG1fb3V0LnN0
b3JlNjQobV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSkpLCBn
ZW5lcmF0b3IsIG1faGVhcHMuSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbF9pbnRlcm5hbEZpZWxk
c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNHZW5lcmF0b3I6OkZpZWxkOjpUaGlzKV0pOworICAg
ICAgICBtX291dC5zdG9yZTY0KG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpKSwgZ2VuZXJhdG9yLCBtX2hlYXBzLkpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGxf
aW50ZXJuYWxGaWVsZHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTR2VuZXJhdG9yOjpGaWVsZDo6
RnJhbWUpXSk7CisgICAgICAgIG11dGF0b3JGZW5jZSgpOworICAgICAgICBWYWx1ZUZyb21CbG9j
ayBmYXN0UmVzdWx0ID0gbV9vdXQuYW5jaG9yKGdlbmVyYXRvcik7CisgICAgICAgIG1fb3V0Lmp1
bXAoY29udGludWF0aW9uKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhzbG93Q2FzZSwgY29u
dGludWF0aW9uKTsKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xvd1Jlc3VsdCA9IG1fb3V0LmFu
Y2hvcih2bUNhbGwocG9pbnRlclR5cGUoKSwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbk5ld0dl
bmVyYXRvciksIG1fY2FsbEZyYW1lLCBmcm96ZW5Qb2ludGVyKG1fZ3JhcGguZnJlZXplU3Ryb25n
KG1fbm9kZS0+c3RydWN0dXJlKCkuZ2V0KCkpKSkpOworICAgICAgICBtX291dC5qdW1wKGNvbnRp
bnVhdGlvbik7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4
dCk7CisgICAgICAgIHNldEpTVmFsdWUobV9vdXQucGhpKHBvaW50ZXJUeXBlKCksIGZhc3RSZXN1
bHQsIHNsb3dSZXN1bHQpKTsKKyAgICB9CisKICAgICB2b2lkIGNvbXBpbGVOZXdTdHJpbmdPYmpl
Y3QoKQogICAgIHsKICAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBtX25v
ZGUtPnN0cnVjdHVyZSgpOwpAQCAtNjMyMSw2ICs2MzUzLDUzIEBAIGNsYXNzIExvd2VyREZHVG9C
MyB7CiAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKICAgICB9CiAKKyAgICB2b2lkIGNvbXBp
bGVDcmVhdGVHZW5lcmF0b3IoKQorICAgIHsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGlj
KTsKKworICAgICAgICBMVmFsdWUgY2FsbGVlID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsK
KworICAgICAgICBMQmFzaWNCbG9jayBpc0Z1bmN0aW9uQmxvY2sgPSBtX291dC5uZXdCbG9jaygp
OworICAgICAgICBMQmFzaWNCbG9jayBoYXNSYXJlRGF0YSA9IG1fb3V0Lm5ld0Jsb2NrKCk7Cisg
ICAgICAgIExCYXNpY0Jsb2NrIGNoZWNrR2xvYmFsT2JqZWN0Q2FzZSA9IG1fb3V0Lm5ld0Jsb2Nr
KCk7CisgICAgICAgIExCYXNpY0Jsb2NrIGZhc3RBbGxvY2F0aW9uQ2FzZSA9IG1fb3V0Lm5ld0Js
b2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIHNsb3dDYXNlID0gbV9vdXQubmV3QmxvY2soKTsK
KyAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9vdXQubmV3QmxvY2soKTsKKwor
ICAgICAgICBtX291dC5icmFuY2goaXNGdW5jdGlvbihjYWxsZWUsIHByb3ZlblR5cGUobV9ub2Rl
LT5jaGlsZDEoKSkpLCB1c3VhbGx5KGlzRnVuY3Rpb25CbG9jayksIHJhcmVseShzbG93Q2FzZSkp
OworCisgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oaXNGdW5j
dGlvbkJsb2NrLCBoYXNSYXJlRGF0YSk7CisgICAgICAgIExWYWx1ZSByYXJlRGF0YSA9IG1fb3V0
LmxvYWRQdHIoY2FsbGVlLCBtX2hlYXBzLkpTRnVuY3Rpb25fcmFyZURhdGEpOworICAgICAgICBt
X291dC5icmFuY2gobV9vdXQuaXNaZXJvNjQocmFyZURhdGEpLCByYXJlbHkoc2xvd0Nhc2UpLCB1
c3VhbGx5KGhhc1JhcmVEYXRhKSk7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oaGFzUmFyZURh
dGEsIGZhc3RBbGxvY2F0aW9uQ2FzZSk7CisgICAgICAgIExWYWx1ZSBzdHJ1Y3R1cmUgPSBtX291
dC5sb2FkUHRyKHJhcmVEYXRhLCBtX2hlYXBzLkZ1bmN0aW9uUmFyZURhdGFfaW50ZXJuYWxGdW5j
dGlvbkFsbG9jYXRpb25Qcm9maWxlX3N0cnVjdHVyZSk7CisgICAgICAgIG1fb3V0LmJyYW5jaCht
X291dC5lcXVhbChtX291dC5sb2FkUHRyKHN0cnVjdHVyZSwgbV9oZWFwcy5TdHJ1Y3R1cmVfY2xh
c3NJbmZvKSwgbV9vdXQuY29uc3RJbnRQdHIoSlNHZW5lcmF0b3I6OmluZm8oKSkpLCB1c3VhbGx5
KGNoZWNrR2xvYmFsT2JqZWN0Q2FzZSksIHJhcmVseShzbG93Q2FzZSkpOworCisgICAgICAgIG1f
b3V0LmFwcGVuZFRvKGNoZWNrR2xvYmFsT2JqZWN0Q2FzZSwgZmFzdEFsbG9jYXRpb25DYXNlKTsK
KyAgICAgICAgbV9vdXQuYnJhbmNoKG1fb3V0LmVxdWFsKG1fb3V0LmxvYWRQdHIoc3RydWN0dXJl
LCBtX2hlYXBzLlN0cnVjdHVyZV9nbG9iYWxPYmplY3QpLCB3ZWFrUG9pbnRlcihnbG9iYWxPYmpl
Y3QpKSwgdXN1YWxseShmYXN0QWxsb2NhdGlvbkNhc2UpLCByYXJlbHkoc2xvd0Nhc2UpKTsKKwor
ICAgICAgICBtX291dC5hcHBlbmRUbyhmYXN0QWxsb2NhdGlvbkNhc2UsIHNsb3dDYXNlKTsKKyAg
ICAgICAgTFZhbHVlIGdlbmVyYXRvciA9IGFsbG9jYXRlT2JqZWN0PEpTR2VuZXJhdG9yPihzdHJ1
Y3R1cmUsIG1fb3V0LmludFB0clplcm8sIHNsb3dDYXNlKTsKKyAgICAgICAgbV9vdXQuc3RvcmU2
NChtX291dC5jb25zdEludDY0KEpTVmFsdWU6OmVuY29kZShqc051bGwoKSkpLCBnZW5lcmF0b3Is
IG1faGVhcHMuSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbF9pbnRlcm5hbEZpZWxkc1tzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNHZW5lcmF0b3I6OkZpZWxkOjpQb2x5UHJvdG8pXSk7CisgICAgICAg
IG1fb3V0LnN0b3JlNjQobV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIo
c3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6OkdlbmVyYXRvclN0YXRlOjpJbml0KSkp
KSwgZ2VuZXJhdG9yLCBtX2hlYXBzLkpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGxfaW50ZXJuYWxG
aWVsZHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTR2VuZXJhdG9yOjpGaWVsZDo6U3RhdGUpXSk7
CisgICAgICAgIG1fb3V0LnN0b3JlNjQobV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSkpLCBnZW5lcmF0b3IsIG1faGVhcHMuSlNJbnRlcm5hbEZpZWxkT2JqZWN0
SW1wbF9pbnRlcm5hbEZpZWxkc1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNHZW5lcmF0b3I6OkZp
ZWxkOjpOZXh0KV0pOworICAgICAgICBtX291dC5zdG9yZTY0KG1fb3V0LmNvbnN0SW50NjQoSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpKSwgZ2VuZXJhdG9yLCBtX2hlYXBzLkpTSW50ZXJu
YWxGaWVsZE9iamVjdEltcGxfaW50ZXJuYWxGaWVsZHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
R2VuZXJhdG9yOjpGaWVsZDo6VGhpcyldKTsKKyAgICAgICAgbV9vdXQuc3RvcmU2NChtX291dC5j
b25zdEludDY0KEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKSksIGdlbmVyYXRvciwgbV9o
ZWFwcy5KU0ludGVybmFsRmllbGRPYmplY3RJbXBsX2ludGVybmFsRmllbGRzW3N0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0dlbmVyYXRvcjo6RmllbGQ6OkZyYW1lKV0pOworICAgICAgICBtdXRhdG9y
RmVuY2UoKTsKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgZmFzdFJlc3VsdCA9IG1fb3V0LmFuY2hv
cihnZW5lcmF0b3IpOworICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAg
ICAgbV9vdXQuYXBwZW5kVG8oc2xvd0Nhc2UsIGNvbnRpbnVhdGlvbik7CisgICAgICAgIFZhbHVl
RnJvbUJsb2NrIHNsb3dSZXN1bHQgPSBtX291dC5hbmNob3Iodm1DYWxsKEludDY0LCBtX291dC5v
cGVyYXRpb24ob3BlcmF0aW9uQ3JlYXRlR2VuZXJhdG9yKSwgbV9jYWxsRnJhbWUsIGNhbGxlZSwg
d2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSkpOworICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVh
dGlvbik7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7
CisgICAgICAgIExWYWx1ZSByZXN1bHQgPSBtX291dC5waGkoSW50NjQsIGZhc3RSZXN1bHQsIHNs
b3dSZXN1bHQpOworCisgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKKyAgICB9CisKICAgICB2
b2lkIGNvbXBpbGVTcHJlYWQoKQogICAgIHsKICAgICAgICAgaWYgKG1fbm9kZS0+Y2hpbGQxKCkt
Pm9wKCkgPT0gUGhhbnRvbU5ld0FycmF5QnVmZmVyKSB7CkBAIC0xNjA0Miw4ICsxNjEyMSwxMCBA
QCBjbGFzcyBMb3dlckRGR1RvQjMgewogCiAgICAgTFZhbHVlIGlzQ2VsbFdpdGhUeXBlKExWYWx1
ZSBjZWxsLCBKU1R5cGUgcXVlcmllZFR5cGUsIFNwZWN1bGF0ZWRUeXBlIHNwZWN1bGF0ZWRUeXBl
Rm9yUXVlcnksIFNwZWN1bGF0ZWRUeXBlIHR5cGUgPSBTcGVjRnVsbFRvcCkKICAgICB7Ci0gICAg
ICAgIGlmIChMVmFsdWUgcHJvdmVuID0gaXNQcm92ZW5WYWx1ZSh0eXBlICYgU3BlY0NlbGwsIHNw
ZWN1bGF0ZWRUeXBlRm9yUXVlcnkpKQotICAgICAgICAgICAgcmV0dXJuIHByb3ZlbjsKKyAgICAg
ICAgaWYgKHNwZWN1bGF0ZWRUeXBlRm9yUXVlcnkgIT0gU3BlY0NlbGwpIHsKKyAgICAgICAgICAg
IGlmIChMVmFsdWUgcHJvdmVuID0gaXNQcm92ZW5WYWx1ZSh0eXBlICYgU3BlY0NlbGwsIHNwZWN1
bGF0ZWRUeXBlRm9yUXVlcnkpKQorICAgICAgICAgICAgICAgIHJldHVybiBwcm92ZW47CisgICAg
ICAgIH0KICAgICAgICAgcmV0dXJuIG1fb3V0LmVxdWFsKAogICAgICAgICAgICAgbV9vdXQubG9h
ZDhaZXJvRXh0MzIoY2VsbCwgbV9oZWFwcy5KU0NlbGxfdHlwZUluZm9UeXBlKSwKICAgICAgICAg
ICAgIG1fb3V0LmNvbnN0SW50MzIocXVlcmllZFR5cGUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmNwcAppbmRleCAzNmRlNTNhMGJjM2E3MmY1NTU4ZDE5ZWRhNjQ3NmFmMDQ5NDZlYzZjLi44MjU0
NjM4MTJmYmU1MzZkMDk0YzE3OWI3ZWZiMjYyODVjMTQwMmYzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuY3BwCkBAIC0zMTIsNiArMzEyLDggQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFp
blBhc3MoKQogICAgICAgICBERUZJTkVfU0xPV19PUChjcmVhdGVfcmVzdCkKICAgICAgICAgREVG
SU5FX1NMT1dfT1AoY3JlYXRlX3Byb21pc2UpCiAgICAgICAgIERFRklORV9TTE9XX09QKG5ld19w
cm9taXNlKQorICAgICAgICBERUZJTkVfU0xPV19PUChjcmVhdGVfZ2VuZXJhdG9yKQorICAgICAg
ICBERUZJTkVfU0xPV19PUChuZXdfZ2VuZXJhdG9yKQogICAgICAgICBERUZJTkVfU0xPV19PUChw
b3cpCiAKICAgICAgICAgREVGSU5FX09QKG9wX2FkZCkKQEAgLTU4MCw2ICs1ODIsNyBAQCB2b2lk
IEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogICAgICAgICBERUZJTkVfU0xPV0NBU0Vf
U0xPV19PUChkaXYpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9TTE9XX09QKGNyZWF0ZV90aGlz
KQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfU0xPV19PUChjcmVhdGVfcHJvbWlzZSkKKyAgICAg
ICAgREVGSU5FX1NMT1dDQVNFX1NMT1dfT1AoY3JlYXRlX2dlbmVyYXRvcikKICAgICAgICAgREVG
SU5FX1NMT1dDQVNFX1NMT1dfT1AodG9fdGhpcykKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX1NM
T1dfT1AodG9fcHJpbWl0aXZlKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfU0xPV19PUCh0b19u
dW1iZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlv
bnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAppbmRl
eCA3YWY0ZWUzMjZjZjFlODllOWE1M2Y5YTI3N2JkNWM0MDUyNjMwODA4Li5lZmEyNTRjYjJhZjAx
MjU3ZWFkNjBjZDIyNTg5N2E2MWI3MTA5MTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3BlcmF0aW9ucy5jcHAKQEAgLTEzOTQsNiArMTM5NCwxNCBAQCBKU0NlbGwqIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uTmV3SW50ZXJuYWxQcm9taXNlKEV4ZWNTdGF0ZSogZXhlYywgU3Ry
dWN0dXJlKiBzdAogICAgIHJldHVybiBKU0ludGVybmFsUHJvbWlzZTo6Y3JlYXRlKHZtLCBzdHJ1
Y3R1cmUpOwogfQogCitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3R2VuZXJhdG9y
KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsK
KworICAgIHJldHVybiBKU0dlbmVyYXRvcjo6Y3JlYXRlKHZtLCBzdHJ1Y3R1cmUpOworfQorCiBK
U0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3UmVnZXhwKEV4ZWNTdGF0ZSogZXhlYywg
SlNDZWxsKiByZWdleHBQdHIpCiB7CiAgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVy
U2NvcGUoZmFsc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaApp
bmRleCAxYzNjMjcyY2JiYThkZDM1NjJkNGQxNWNmMDk1MGU2YzkyNDI4NzYyLi4xYjc0OWIyMzBm
ODAyZDNmYzQyZmNmYTE2MDQ2YmE4OWYzMGM4YzViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wZXJhdGlvbnMuaApAQCAtNDIxLDYgKzQyMSw3IEBAIHZvaWQgSklUX09QRVJBVElP
TiBvcGVyYXRpb25TZXRGdW5jdGlvbk5hbWUoRXhlY1N0YXRlKiwgSlNDZWxsKiwgRW5jb2RlZEpT
VmFsdWUpCiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3T2JqZWN0KEV4ZWNTdGF0
ZSosIFN0cnVjdHVyZSopIFdURl9JTlRFUk5BTDsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVy
YXRpb25OZXdQcm9taXNlKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSopIFdURl9JTlRFUk5BTDsKIEpT
Q2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdJbnRlcm5hbFByb21pc2UoRXhlY1N0YXRl
KiwgU3RydWN0dXJlKikgV1RGX0lOVEVSTkFMOworSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbk5ld0dlbmVyYXRvcihFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqKSBXVEZfSU5URVJOQUw7CiBK
U0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3UmVnZXhwKEV4ZWNTdGF0ZSosIEpTQ2Vs
bCopIFdURl9JTlRFUk5BTDsKIFVudXNlZFB0ciBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkhhbmRs
ZVRyYXBzKEV4ZWNTdGF0ZSopIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVy
YXRpb25UaHJvdyhFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAppbmRleCA0
MDc1OGU3ZjMwYWNjNGQ3MjgyZWI4NTM1Y2I0ZDMxYmM4YzBlNzQyLi4zNjljYjEwYjIyNWMwOWEx
NDJhZmU2MjNiZTkzZDViMDRhZjgwZGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcApAQCAtMTI0Myw3ICsxMjQzLDYgQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfZ2V0X2ludGVybmFsX2ZpZWxkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiAgICAgaW50IGRzdCA9IGJ5dGVjb2RlLm1fZHN0Lm9mZnNldCgpOwogICAgIGlu
dCBiYXNlID0gYnl0ZWNvZGUubV9iYXNlLm9mZnNldCgpOwogICAgIHVuc2lnbmVkIGluZGV4ID0g
Ynl0ZWNvZGUubV9pbmRleDsKLSAgICBBU1NFUlQoaW5kZXggPCBKU1Byb21pc2U6Om51bWJlck9m
SW50ZXJuYWxGaWVsZHMpOwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCByZWdU
MSk7CiAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QxLCBKU0ludGVybmFsRmllbGRPYmplY3RJbXBs
PD46Om9mZnNldE9mSW50ZXJuYWxGaWVsZChpbmRleCkpLCByZWdUMCk7CkBAIC0xMjU4LDcgKzEy
NTcsNiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfaW50ZXJuYWxfZmllbGQoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBpbnQgYmFzZSA9IGJ5dGVjb2RlLm1fYmFz
ZS5vZmZzZXQoKTsKICAgICBpbnQgdmFsdWUgPSBieXRlY29kZS5tX3ZhbHVlLm9mZnNldCgpOwog
ICAgIHVuc2lnbmVkIGluZGV4ID0gYnl0ZWNvZGUubV9pbmRleDsKLSAgICBBU1NFUlQoaW5kZXgg
PCBKU1Byb21pc2U6Om51bWJlck9mSW50ZXJuYWxGaWVsZHMpOwogCiAgICAgZW1pdEdldFZpcnR1
YWxSZWdpc3RlcihiYXNlLCByZWdUMCk7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcih2YWx1
ZSwgcmVnVDEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIuYXNtCmluZGV4IGQyMDRiNDA3YzJkZTQ4ZTVkY2IyY2ExMzFhNGFiMTRlM2Q4
OWIxY2MuLjI1NzZlZjQ5ZTExODMxMjZjZmY4ZjFlMzVlZWFlZGJmZTA0NmRlY2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20K
QEAgLTE0OTUsNiArMTQ5NSw3IEBAIHNsb3dQYXRoT3AoY3JlYXRlX3Jlc3QpCiBzbG93UGF0aE9w
KGNyZWF0ZV9zY29wZWRfYXJndW1lbnRzKQogc2xvd1BhdGhPcChjcmVhdGVfdGhpcykKIHNsb3dQ
YXRoT3AoY3JlYXRlX3Byb21pc2UpCitzbG93UGF0aE9wKGNyZWF0ZV9nZW5lcmF0b3IpCiBzbG93
UGF0aE9wKGRlZmluZV9hY2Nlc3Nvcl9wcm9wZXJ0eSkKIHNsb3dQYXRoT3AoZGVmaW5lX2RhdGFf
cHJvcGVydHkpCiBzbG93UGF0aE9wKGVudW1lcmF0b3JfZ2VuZXJpY19wbmFtZSkKQEAgLTE1MzAs
NiArMTUzMSw3IEBAIHNsb3dQYXRoT3AodG9faW5kZXhfc3RyaW5nKQogc2xvd1BhdGhPcCh0eXBl
b2YpCiBzbG93UGF0aE9wKHVucmVhY2hhYmxlKQogc2xvd1BhdGhPcChuZXdfcHJvbWlzZSkKK3Ns
b3dQYXRoT3AobmV3X2dlbmVyYXRvcikKIAogbWFjcm8gbGxpbnRTbG93UGF0aE9wKG9wY29kZU5h
bWUpCiAgICAgbGxpbnRPcChvcF8lb3Bjb2RlTmFtZSUsIHVudXNlZCwgbWFjcm8gKHVudXNlZCwg
dW51c2VkLCBkaXNwYXRjaCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25TbG93UGF0aHMuY3BwCmluZGV4IDY1ODY1Nzk4MjMzNDQ0OTk3MDJiYmJkYzVkMzVjYjI3
NTQ0ZTNjZWYuLjExMjNkMTc5ZjYzOTA2MjMxNWU1NDI0MDRhMWU1MjViNDg3ZTZmNWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcApA
QCAtMzA5LDYgKzMwOSwzNiBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmV3X3Byb21pc2Up
CiAgICAgUkVUVVJOKHJlc3VsdCk7CiB9CiAKK1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jcmVh
dGVfZ2VuZXJhdG9yKQoreworICAgIEJFR0lOKCk7CisgICAgYXV0byBieXRlY29kZSA9IHBjLT5h
czxPcENyZWF0ZUdlbmVyYXRvcj4oKTsKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOworICAgIEpTT2JqZWN0KiBjb25zdHJ1Y3Rv
ckFzT2JqZWN0ID0gYXNPYmplY3QoR0VUKGJ5dGVjb2RlLm1fY2FsbGVlKS5qc1ZhbHVlKCkpOwor
CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJj
bGFzc1N0cnVjdHVyZShleGVjLCBudWxscHRyLCBjb25zdHJ1Y3RvckFzT2JqZWN0LCBnbG9iYWxP
YmplY3QtPmdlbmVyYXRvclN0cnVjdHVyZSgpKTsKKyAgICBDSEVDS19FWENFUFRJT04oKTsKKyAg
ICBKU0dlbmVyYXRvciogcmVzdWx0ID0gSlNHZW5lcmF0b3I6OmNyZWF0ZSh2bSwgc3RydWN0dXJl
KTsKKworICAgIEpTRnVuY3Rpb24qIGNvbnN0cnVjdG9yID0ganNEeW5hbWljQ2FzdDxKU0Z1bmN0
aW9uKj4odm0sIGNvbnN0cnVjdG9yQXNPYmplY3QpOworICAgIGlmIChjb25zdHJ1Y3RvciAmJiBj
b25zdHJ1Y3Rvci0+Y2FuVXNlQWxsb2NhdGlvblByb2ZpbGUoKSkgeworICAgICAgICBXcml0ZUJh
cnJpZXI8SlNDZWxsPiYgY2FjaGVkQ2FsbGVlID0gYnl0ZWNvZGUubWV0YWRhdGEoZXhlYykubV9j
YWNoZWRDYWxsZWU7CisgICAgICAgIGlmICghY2FjaGVkQ2FsbGVlKQorICAgICAgICAgICAgY2Fj
aGVkQ2FsbGVlLnNldCh2bSwgZXhlYy0+Y29kZUJsb2NrKCksIGNvbnN0cnVjdG9yKTsKKyAgICAg
ICAgZWxzZSBpZiAoY2FjaGVkQ2FsbGVlLnVudmFsaWRhdGVkR2V0KCkgIT0gSlNDZWxsOjpzZWVu
TXVsdGlwbGVDYWxsZWVPYmplY3RzKCkgJiYgY2FjaGVkQ2FsbGVlLmdldCgpICE9IGNvbnN0cnVj
dG9yKQorICAgICAgICAgICAgY2FjaGVkQ2FsbGVlLnNldFdpdGhvdXRXcml0ZUJhcnJpZXIoSlND
ZWxsOjpzZWVuTXVsdGlwbGVDYWxsZWVPYmplY3RzKCkpOworICAgIH0KKyAgICBSRVRVUk4ocmVz
dWx0KTsKK30KKworU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX25ld19nZW5lcmF0b3IpCit7Cisg
ICAgQkVHSU4oKTsKKyAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wTmV3R2VuZXJhdG9yPigp
OworICAgIEpTR2VuZXJhdG9yKiByZXN1bHQgPSBKU0dlbmVyYXRvcjo6Y3JlYXRlKHZtLCBleGVj
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmdlbmVyYXRvclN0cnVjdHVyZSgpKTsKKyAgICBSRVRV
Uk4ocmVzdWx0KTsKK30KKwogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3RvX3RoaXMpCiB7CiAg
ICAgQkVHSU4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vblNsb3dQYXRocy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzLmgKaW5kZXggMmZlNzVlNmMzNjUyM2VmYzliYTgyYTQ2MTY1NTBkZmY3NjIzYTE4OC4u
N2Y5MGIxNDBiODk3OTBmZTE0YzQzMDdmMWEyMGY3NGZkOWQzZmJiMSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKQEAgLTM4NCw2ICszODQs
NyBAQCBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3Jlc29sdmVfc2NvcGUpOwogU0xP
V19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9pc192YXJfc2NvcGUpOwogU0xPV19QQVRIX0hJ
RERFTl9ERUNMKHNsb3dfcGF0aF9yZXNvbHZlX3Njb3BlX2Zvcl9ob2lzdGluZ19mdW5jX2RlY2xf
aW5fZXZhbCk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2NyZWF0ZV9wcm9taXNl
KTsKK1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfY3JlYXRlX2dlbmVyYXRvcik7CiBT
TE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2NyZWF0ZV9yZXN0KTsKIFNMT1dfUEFUSF9I
SURERU5fREVDTChzbG93X3BhdGhfZ2V0X2J5X2lkX3dpdGhfdGhpcyk7CiBTTE9XX1BBVEhfSElE
REVOX0RFQ0woc2xvd19wYXRoX2dldF9ieV92YWxfd2l0aF90aGlzKTsKQEAgLTM5Myw2ICszOTQs
NyBAQCBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2RlZmluZV9kYXRhX3Byb3BlcnR5
KTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZGVmaW5lX2FjY2Vzc29yX3Byb3Bl
cnR5KTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfdGhyb3dfc3RhdGljX2Vycm9y
KTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbmV3X3Byb21pc2UpOworU0xPV19Q
QVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfZ2VuZXJhdG9yKTsKIFNMT1dfUEFUSF9ISURE
RU5fREVDTChzbG93X3BhdGhfbmV3X2FycmF5X3dpdGhfc3ByZWFkKTsKIFNMT1dfUEFUSF9ISURE
RU5fREVDTChzbG93X3BhdGhfbmV3X2FycmF5X2J1ZmZlcik7CiBTTE9XX1BBVEhfSElEREVOX0RF
Q0woc2xvd19wYXRoX3NwcmVhZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGVybmFsRnVuY3Rpb24uY3BwCmluZGV4IGRkNGEyMjA4MDBmMTgzNDMxNzAxMjlmOTMx
YmUzMTJmZjM3ZjEzZDIuLjIzOGU1NDMzM2VhZGNjYmVmODViM2ViNjA0MDNkNTdiMGJmMzg5YjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rp
b24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rp
b24uY3BwCkBAIC0xMTksNyArMTE5LDYgQEAgU3RydWN0dXJlKiBJbnRlcm5hbEZ1bmN0aW9uOjpj
cmVhdGVTdWJjbGFzc1N0cnVjdHVyZVNsb3coRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHUKIHsKICAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKLSAgICBBU1NFUlQoIW5ld1RhcmdldCB8fCBuZXdUYXJnZXQuaXNDb25zdHJ1Y3Rv
cih2bSkpOwogCiAgICAgQVNTRVJUKGJhc2VDbGFzcy0+aGFzTW9ub1Byb3RvKCkpOwogCkBAIC0x
MzMsNyArMTMyLDcgQEAgU3RydWN0dXJlKiBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFz
c1N0cnVjdHVyZVNsb3coRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHUKICAgICAgICAgICAgIHJldHVy
biBzdHJ1Y3R1cmU7CiAKICAgICAgICAgLy8gTm90ZSwgUmVmbGVjdC5jb25zdHJ1Y3QgbWlnaHQg
Y2F1c2UgdGhlIHByb2ZpbGUgdG8gY2h1cm4gYnV0IHdlIGRvbid0IGNhcmUuCi0gICAgICAgIEpT
VmFsdWUgcHJvdG90eXBlVmFsdWUgPSBuZXdUYXJnZXQuZ2V0KGV4ZWMsIHZtLnByb3BlcnR5TmFt
ZXMtPnByb3RvdHlwZSk7CisgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlVmFsdWUgPSB0YXJnZXRG
dW5jdGlvbi0+Z2V0KGV4ZWMsIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSk7CiAgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwogICAgICAgICBpZiAoSlNPYmpl
Y3QqIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNPYmplY3QqPih2bSwgcHJvdG90eXBlVmFs
dWUpKQogICAgICAgICAgICAgcmV0dXJuIHRhcmdldEZ1bmN0aW9uLT5yYXJlRGF0YSh2bSktPmNy
ZWF0ZUludGVybmFsRnVuY3Rpb25BbGxvY2F0aW9uU3RydWN0dXJlRnJvbUJhc2Uodm0sIGdsb2Jh
bE9iamVjdCwgcHJvdG90eXBlLCBiYXNlQ2xhc3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oCmluZGV4IDkzMzY4ODlmZWU4MTUwMThjOWNh
Y2I0MzVjNjRhNzhhYzEwYWU3M2IuLjFmYTQ4NThjN2MzZTZlMjFiNTRjMDM4N2ViNmM0ODQzYTgw
MTMxZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFs
RnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1
bmN0aW9uLmgKQEAgLTEwMiw4ICsxMDIsNiBAQCBBTFdBWVNfSU5MSU5FIFN0cnVjdHVyZSogSW50
ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoRXhlY1N0YXRlKiBleAogewog
ICAgIC8vIFdlIGFsbG93IG5ld1RhcmdldCA9PSBKU1ZhbHVlKCkgYmVjYXVzZSB0aGUgQVBJIG5l
ZWRzIHRvIGJlIGFibGUgdG8gY3JlYXRlIGNsYXNzZXMgd2l0aG91dCBoYXZpbmcgYSByZWFsIEpT
IGZyYW1lLgogICAgIC8vIFNpbmNlIHdlIGRvbid0IGFsbG93IHN1YmNsYXNzaW5nIGluIHRoZSBB
UEkgd2UganVzdCB0cmVhdCBuZXdUYXJnZXQgPT0gSlNWYWx1ZSgpIGFzIG5ld1RhcmdldCA9PSBl
eGVjLT5qc0NhbGxlZSgpCi0gICAgQVNTRVJUKCFuZXdUYXJnZXQgfHwgbmV3VGFyZ2V0LmlzQ29u
c3RydWN0b3IoZXhlYy0+dm0oKSkpOwotCiAgICAgaWYgKG5ld1RhcmdldCAmJiBuZXdUYXJnZXQg
IT0gYmFzZUNhbGxlZSkKICAgICAgICAgcmV0dXJuIGNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlU2xv
dyhleGVjLCBuZXdUYXJnZXQsIGJhc2VDbGFzcyk7CiAgICAgcmV0dXJuIGJhc2VDbGFzczsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJhdG9yLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJhdG9yLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li41YjAwYTQyZjM5MTA2MjNkY2E5MDc0M2M2ODNlNTFkNjEzNWUwYzhmCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3IuY3BwCkBAIC0w
LDAgKzEsNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
SlNHZW5lcmF0b3IuaCIKKworI2luY2x1ZGUgIkJ1aWx0aW5OYW1lcy5oIgorI2luY2x1ZGUgIkVy
cm9yLmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIK
KyNpbmNsdWRlICJKU0ludGVybmFsRmllbGRPYmplY3RJbXBsSW5saW5lcy5oIgorCituYW1lc3Bh
Y2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEpTR2VuZXJhdG9yOjpzX2luZm8gPSB7ICJHZW5l
cmF0b3IiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RB
QkxFKEpTR2VuZXJhdG9yKSB9OworCitKU0dlbmVyYXRvciogSlNHZW5lcmF0b3I6OmNyZWF0ZShW
TSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQoreworICAgIEpTR2VuZXJhdG9yKiBnZW5lcmF0
b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0dlbmVyYXRvcj4odm0uaGVhcCkpIEpT
R2VuZXJhdG9yKHZtLCBzdHJ1Y3R1cmUpOworICAgIGdlbmVyYXRvci0+ZmluaXNoQ3JlYXRpb24o
dm0pOworICAgIHJldHVybiBnZW5lcmF0b3I7Cit9CisKK1N0cnVjdHVyZSogSlNHZW5lcmF0b3I6
OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmFsdWUgcHJvdG90eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xv
YmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKEpTR2VuZXJhdG9yVHlwZSwgU3RydWN0dXJl
RmxhZ3MpLCBpbmZvKCkpOworfQorCitKU0dlbmVyYXRvcjo6SlNHZW5lcmF0b3IoVk0mIHZtLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKK3sKK30KKwor
dm9pZCBKU0dlbmVyYXRvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAgIEJhc2U6OmZp
bmlzaENyZWF0aW9uKHZtKTsKKyAgICBpbnRlcm5hbEZpZWxkKHN0YXRpY19jYXN0PHVuc2lnbmVk
PihGaWVsZDo6UG9seVByb3RvKSkuc2V0KHZtLCB0aGlzLCBqc051bGwoKSk7CisgICAgaW50ZXJu
YWxGaWVsZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oRmllbGQ6OlN0YXRlKSkuc2V0KHZtLCB0aGlz
LCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihHZW5lcmF0b3JTdGF0ZTo6SW5pdCkpKTsK
KyAgICBpbnRlcm5hbEZpZWxkKHN0YXRpY19jYXN0PHVuc2lnbmVkPihGaWVsZDo6TmV4dCkpLnNl
dCh2bSwgdGhpcywganNVbmRlZmluZWQoKSk7CisgICAgaW50ZXJuYWxGaWVsZChzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oRmllbGQ6OlRoaXMpKS5zZXQodm0sIHRoaXMsIGpzVW5kZWZpbmVkKCkpOwor
ICAgIGludGVybmFsRmllbGQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEZpZWxkOjpGcmFtZSkpLnNl
dCh2bSwgdGhpcywganNVbmRlZmluZWQoKSk7Cit9CisKK3ZvaWQgSlNHZW5lcmF0b3I6OnZpc2l0
Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBhdXRv
KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTR2VuZXJhdG9yKj4oY2VsbCk7CisgICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOworICAgIEJhc2U6OnZpc2l0Q2hp
bGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3IuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJhdG9yLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGJi
YTBhMGQ2ODE2MTcyOTFkYTM3YTQ5Nzk1MjExZDY1YTE2OTVlMQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJhdG9yLmgKQEAgLTAsMCArMSw5
MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSlNJbnRlcm5hbEZp
ZWxkT2JqZWN0SW1wbC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSlNGdW5jdGlvbjsK
KworY2xhc3MgSlNHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgSlNJbnRlcm5hbEZpZWxkT2JqZWN0
SW1wbDw1PiB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEpTSW50ZXJuYWxGaWVsZE9iamVj
dEltcGw8NT47CisKKyAgICAvLyBKU0dlbmVyYXRvciBoYXMgb25lIGlubGluZSBzdG9yYWdlIHNs
b3QsIHdoaWNoIGlzIHBvaW50aW5nIGludGVybmFsRmllbGQoMCkuCisgICAgc3RhdGljIHNpemVf
dCBhbGxvY2F0aW9uU2l6ZShDaGVja2VkPHNpemVfdD4gaW5saW5lQ2FwYWNpdHkpCisgICAgewor
ICAgICAgICBBU1NFUlRfVU5VU0VEKGlubGluZUNhcGFjaXR5LCBpbmxpbmVDYXBhY2l0eSA9PSAw
VSB8fCBpbmxpbmVDYXBhY2l0eSA9PSAxVSk7CisgICAgICAgIHJldHVybiBzaXplb2YoSlNHZW5l
cmF0b3IpOworICAgIH0KKworICAgIGVudW0gY2xhc3MgR2VuZXJhdG9yUmVzdW1lTW9kZSA6IGlu
dDMyX3QgeworICAgICAgICBOb3JtYWxNb2RlID0gMCwKKyAgICAgICAgUmV0dXJuTW9kZSA9IDEs
CisgICAgICAgIFRocm93TW9kZSA9IDIKKyAgICB9OworCisgICAgZW51bSBjbGFzcyBHZW5lcmF0
b3JTdGF0ZSA6IGludDMyX3QgeworICAgICAgICBDb21wbGV0ZWQgPSAtMSwKKyAgICAgICAgRXhl
Y3V0aW5nID0gLTIsCisgICAgICAgIEluaXQgPSAwLAorICAgIH07CisKKyAgICAvLyBbdGhpc10s
IEBnZW5lcmF0b3IsIEBnZW5lcmF0b3JTdGF0ZSwgQGdlbmVyYXRvclZhbHVlLCBAZ2VuZXJhdG9y
UmVzdW1lTW9kZSwgQGdlbmVyYXRvckZyYW1lLgorICAgIGVudW0gY2xhc3MgR2VuZXJhdG9yQXJn
dW1lbnQgOiBpbnQzMl90IHsKKyAgICAgICAgVGhpc1ZhbHVlID0gMCwKKyAgICAgICAgR2VuZXJh
dG9yID0gMSwKKyAgICAgICAgU3RhdGUgPSAyLAorICAgICAgICBWYWx1ZSA9IDMsCisgICAgICAg
IFJlc3VtZU1vZGUgPSA0LAorICAgICAgICBGcmFtZSA9IDUsCisgICAgfTsKKworICAgIGVudW0g
Y2xhc3MgRmllbGQgOiB1aW50MzJfdCB7CisgICAgICAgIC8vIEZJWE1FOiBKU0dlbmVyYXRvciBz
aG91bGQgc3VwcG9ydCBQb2x5UHJvdG8sIHNpbmNlIGdlbmVyYXRvciB0ZW5kcyB0byBiZSBjcmVh
dGVkIHdpdGggcG9seSBwcm90byBtb2RlLgorICAgICAgICAvLyBXZSByZXNlcnZlIHRoZSBmaXJz
dCBpbnRlcm5hbCBmaWVsZCBmb3IgUG9seVByb3RvIHByb3BlcnR5LiBUaGlzIG9mZnNldCBpcyBp
ZGVudGljYWwgdG8gSlNGaW5hbE9iamVjdCdzIGZpcnN0IGlubGluZSBzdG9yYWdlIHNsb3Qgd2hp
Y2ggd2lsbCBiZSB1c2VkIGZvciBQb2x5UHJvdG8uCisgICAgICAgIFBvbHlQcm90byA9IDAsCisg
ICAgICAgIFN0YXRlLAorICAgICAgICBOZXh0LAorICAgICAgICBUaGlzLAorICAgICAgICBGcmFt
ZSwKKyAgICB9OworICAgIHN0YXRpY19hc3NlcnQobnVtYmVyT2ZJbnRlcm5hbEZpZWxkcyA9PSA1
KTsKKworICAgIHN0YXRpYyBKU0dlbmVyYXRvciogY3JlYXRlKFZNJiwgU3RydWN0dXJlKik7Cisg
ICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3Qq
LCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CisKKyAgICBzdGF0aWMgdm9p
ZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CisKK3Byb3RlY3RlZDoKKyAg
ICBKU0dlbmVyYXRvcihWTSYsIFN0cnVjdHVyZSopOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24o
Vk0mKTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5oCmluZGV4IGE0NTRiOTU4ODA2MWQ0
OGI1N2Y1NmIzMGVmZTA2M2M4NGYyNmIyOTMuLmVmZDI4OTBhMzFmYWY4MGRmYWM1MGI3NDQwYjlk
MmYzNDZlY2EyY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2VuZXJhdG9yRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dlbmVyYXRvckZ1bmN0aW9uLmgKQEAgLTQxLDI4ICs0MSw3IEBAIGNsYXNzIEpTR2VuZXJhdG9y
RnVuY3Rpb24gZmluYWwgOiBwdWJsaWMgSlNGdW5jdGlvbiB7CiAjZW5kaWYKICAgICBmcmllbmQg
Y2xhc3MgVk07CiBwdWJsaWM6Ci0gICAgdHlwZWRlZiBKU0Z1bmN0aW9uIEJhc2U7Ci0KLSAgICBl
bnVtIGNsYXNzIEdlbmVyYXRvclJlc3VtZU1vZGUgOiBpbnQzMl90IHsKLSAgICAgICAgTm9ybWFs
TW9kZSA9IDAsCi0gICAgICAgIFJldHVybk1vZGUgPSAxLAotICAgICAgICBUaHJvd01vZGUgPSAy
Ci0gICAgfTsKLQotICAgIGVudW0gY2xhc3MgR2VuZXJhdG9yU3RhdGUgOiBpbnQzMl90IHsKLSAg
ICAgICAgQ29tcGxldGVkID0gLTEsCi0gICAgICAgIEV4ZWN1dGluZyA9IC0yLAotICAgIH07Ci0K
LSAgICAvLyBbdGhpc10sIEBnZW5lcmF0b3IsIEBnZW5lcmF0b3JTdGF0ZSwgQGdlbmVyYXRvclZh
bHVlLCBAZ2VuZXJhdG9yUmVzdW1lTW9kZSwgQGdlbmVyYXRvckZyYW1lLgotICAgIGVudW0gY2xh
c3MgR2VuZXJhdG9yQXJndW1lbnQgOiBpbnQzMl90IHsKLSAgICAgICAgVGhpc1ZhbHVlID0gMCwK
LSAgICAgICAgR2VuZXJhdG9yID0gMSwKLSAgICAgICAgU3RhdGUgPSAyLAotICAgICAgICBWYWx1
ZSA9IDMsCi0gICAgICAgIFJlc3VtZU1vZGUgPSA0LAotICAgICAgICBGcmFtZSA9IDUsCi0gICAg
fTsKKyAgICB1c2luZyBCYXNlID0gSlNGdW5jdGlvbjsKIAogICAgIGNvbnN0IHN0YXRpYyB1bnNp
Z25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggYzZhYjg2
YjgwMTdmOTA2Mjg1YWJhMjI3Y2RjZDE1OGZmMTc3NjY5MS4uNjNiODUyNDU4NTg0YWJmNTRiNzI5
YWE1MTBjNmVlYzUzMTJjYjAzZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtODE5LDYgKzgxOSw3IEBAIGNhcGl0YWxOYW1lICMj
IENvbnN0cnVjdG9yKiBsb3dlck5hbWUgIyMgQ29uc3RydWN0b3IgPSBmZWF0dXJlRmxhZyA/IGNh
cGl0YWxOYW1lCiAKICAgICBtX2dlbmVyYXRvclByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRy
YW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBtX2dlbmVyYXRvckZ1
bmN0aW9uUHJvdG90eXBlLmdldCgpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOwogICAgIG1fZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5
cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90
b3R5cGUsIG1fZ2VuZXJhdG9yUHJvdG90eXBlLmdldCgpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOworICAgIG1fZ2VuZXJhdG9yU3Ry
dWN0dXJlLnNldCh2bSwgdGhpcywgSlNHZW5lcmF0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhp
cywgbV9nZW5lcmF0b3JQcm90b3R5cGUuZ2V0KCkpKTsKIAogICAgIG1fYXN5bmNGdW5jdGlvblBy
b3RvdHlwZS5zZXQodm0sIHRoaXMsIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGU6OmNyZWF0ZSh2bSwg
QXN5bmNGdW5jdGlvblByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0
aW9uUHJvdG90eXBlLmdldCgpKSkpOwogICAgIEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3RvciogYXN5
bmNGdW5jdGlvbkNvbnN0cnVjdG9yID0gQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGUo
dm0sIEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBm
dW5jdGlvbkNvbnN0cnVjdG9yKSwgbV9hc3luY0Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKTsKQEAg
LTE3NjcsNiArMTc2OCw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlND
ZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlz
T2JqZWN0LT5tX2dlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVu
ZCh0aGlzT2JqZWN0LT5tX2FzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBw
ZW5kKHRoaXNPYmplY3QtPm1fYXN5bmNHZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZSk7CisgICAg
dmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9nZW5lcmF0b3JTdHJ1Y3R1cmUpOwogICAgIHRo
aXNPYmplY3QtPm1faXRlcmF0b3JSZXN1bHRPYmplY3RTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7
CiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1
Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fcmVnRXhwTWF0Y2hlc0Fy
cmF5V2l0aEdyb3Vwc1N0cnVjdHVyZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCAxMDVkNTZhOGM4YzNkMGExNDFjNDQwYWY3NGIwODll
NzdiYWE0Y2I5Li4yYWQ5MWE1M2Y4ZWFlOGM0NDY1YzEzNzNhODg0MzNlOTZiOTgzNzIxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTM3
NCw2ICszNzQsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZh
cmlhYmxlT2JqZWN0IHsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2FzeW5jRnVuY3Rp
b25TdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9hc3luY0dlbmVyYXRv
ckZ1bmN0aW9uU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fZ2VuZXJh
dG9yRnVuY3Rpb25TdHJ1Y3R1cmU7CisgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9nZW5l
cmF0b3JTdHJ1Y3R1cmU7CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1
cmU+IG1faXRlcmF0b3JSZXN1bHRPYmplY3RTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0
cnVjdHVyZT4gbV9yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVy
PFN0cnVjdHVyZT4gbV9yZWdFeHBNYXRjaGVzQXJyYXlXaXRoR3JvdXBzU3RydWN0dXJlOwpAQCAt
NzUyLDYgKzc1Myw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVk
VmFyaWFibGVPYmplY3QgewogICAgIFN0cnVjdHVyZSogbnVtYmVyT2JqZWN0U3RydWN0dXJlKCkg
Y29uc3QgeyByZXR1cm4gbV9udW1iZXJPYmplY3RTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CiAgICAg
U3RydWN0dXJlKiBtYXBTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX21hcFN0cnVjdHVyZS5n
ZXQoKTsgfQogICAgIFN0cnVjdHVyZSogcmVnRXhwU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4g
bV9yZWdFeHBTdHJ1Y3R1cmUuZ2V0KCk7IH0KKyAgICBTdHJ1Y3R1cmUqIGdlbmVyYXRvclN0cnVj
dHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fZ2VuZXJhdG9yU3RydWN0dXJlLmdldCgpOyB9CiAgICAg
U3RydWN0dXJlKiBnZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1f
Z2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIGFzeW5j
RnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2FzeW5jRnVuY3Rpb25TdHJ1Y3R1
cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIGFzeW5jR2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1
cmUoKSBjb25zdCB7IHJldHVybiBtX2FzeW5jR2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0
KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuY3BwCmluZGV4IDg0OWIz
NzkxODhlZmNlNTcwOTIzZjVhMWE1YTRmNzFiYzlkOTk0NzYuLmRhYzVlNjlkYTIwNDUxYjkwZmQ0
OGIwN2E3MGMxMTIyM2Y1NzA3NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTVHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNU
eXBlLmNwcApAQCAtOTYsNiArOTYsNyBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0m
IG91dCwgSlNDOjpKU1R5cGUgdHlwZSkKICAgICBDQVNFKFdpdGhTY29wZVR5cGUpCiAgICAgQ0FT
RShSZWdFeHBPYmplY3RUeXBlKQogICAgIENBU0UoUHJveHlPYmplY3RUeXBlKQorICAgIENBU0Uo
SlNHZW5lcmF0b3JUeXBlKQogICAgIENBU0UoSlNQcm9taXNlVHlwZSkKICAgICBDQVNFKEpTTWFw
VHlwZSkKICAgICBDQVNFKEpTU2V0VHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTVHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNU
eXBlLmgKaW5kZXggOGQzNWFjNzc5ODM3MzliMWEzZmU1ZDUwYTZmOTFiOTAxMjlmZjc3ZC4uMDFl
NzAyMjczNDc2NGIxOGQ5ZTMxYTkxZWU4Y2Q2MGE5OTU5MjVlYSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNUeXBlLmgKQEAgLTEwOCw2ICsxMDgsNyBAQCBlbnVtIEpTVHlwZSA6IHVp
bnQ4X3QgewogCiAgICAgUmVnRXhwT2JqZWN0VHlwZSwKICAgICBQcm94eU9iamVjdFR5cGUsCisg
ICAgSlNHZW5lcmF0b3JUeXBlLAogICAgIEpTUHJvbWlzZVR5cGUsCiAgICAgSlNNYXBUeXBlLAog
ICAgIEpTU2V0VHlwZSwKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggMTBjYzQ2MDk1ZmE4MDRlN2UwOWM5M2U0NGI5ODcyNjA2NGNlMzNmZi4u
YWJiNDM0NDFlMDIyODgwNDRkYjBiNTA0NmZlZWMwMWQyNGEyY2MzYyAxMDA2NDQKLS0tIGEvSlNU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAor
MjAxOS0wOS0wOSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAg
IFtKU0NdIEdlbmVyYXRvciBzaG91bGQgaGF2ZSBpbnRlcm5hbCBmaWVsZHMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMTE1OQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RyZXNzL2NyZWF0ZS1nZW5l
cmF0b3IuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAodGVzdC5nZW5l
cmF0b3IpOgorICAgICAgICAodGVzdCk6CisgICAgICAgICogc3RyZXNzL29iamVjdC1hc3NpZ24t
ZmFzdC1wYXRoLmpzOgorCiAyMDE5LTA5LTA3ICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJA
YXBwbGUuY29tPgogCiAgICAgICAgIE9TUiBlbnRyeSBpbnRvIHdhc20gbWlzc2VzIHNvbWUgY29u
dGV4dHMKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2NyZWF0ZS1nZW5lcmF0b3IuanMgYi9K
U1Rlc3RzL3N0cmVzcy9jcmVhdGUtZ2VuZXJhdG9yLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkyZDAzMDUxYjRj
MDgyZGYzYWViOTg5NTg0ZGQxMzJiZmYzM2UxM2QKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3Rz
L3N0cmVzcy9jcmVhdGUtZ2VuZXJhdG9yLmpzCkBAIC0wLDAgKzEsMjAgQEAKK2Z1bmN0aW9uIHNo
b3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkK
KyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCitm
dW5jdGlvbiB0ZXN0KCkgeworICAgIGZ1bmN0aW9uKiBnZW5lcmF0b3IoKSB7CisgICAgICAgIHJl
dHVybiB0aGlzOworICAgIH0KKworICAgIHZhciBnID0gZ2VuZXJhdG9yKCk7CisgICAgc2hvdWxk
QmUoZy5fX3Byb3RvX18sIGdlbmVyYXRvci5wcm90b3R5cGUpOworICAgIHJldHVybiBnOworfQor
Citmb3IgKHZhciBpID0gMDsgaSA8IDFlNjsgKytpKSB7CisgICAgdmFyIGcxID0gdGVzdCgpOwor
ICAgIHZhciBnMiA9IHRlc3QoKTsKKyAgICBzaG91bGRCZShnMS5fX3Byb3RvX18gIT0gZzIuX19w
cm90b19fLCB0cnVlKTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL29iamVjdC1hc3Np
Z24tZmFzdC1wYXRoLmpzIGIvSlNUZXN0cy9zdHJlc3Mvb2JqZWN0LWFzc2lnbi1mYXN0LXBhdGgu
anMKaW5kZXggNWM2ZDU0NzYwYTg3YmZlOWI0NjcwMzY1OGFlZmUzMWUwZTVhNDM2YS4uZWNiOTBk
NTZiY2Q1MGZjM2Y1NWM5N2MxMjI5Y2IzODNiOWEyOGUzZCAxMDA2NDQKLS0tIGEvSlNUZXN0cy9z
dHJlc3Mvb2JqZWN0LWFzc2lnbi1mYXN0LXBhdGguanMKKysrIGIvSlNUZXN0cy9zdHJlc3Mvb2Jq
ZWN0LWFzc2lnbi1mYXN0LXBhdGguanMKQEAgLTEyOCwxNCArMTI4LDE4IEBAIHNldCBvayh2YWx1
ZSkgewogICAgIHNob3VsZEJlKG9rQ2FsbGVkLCAxKTsKIH0KIHsKLSAgICBsZXQgYnVpbHRpbiA9
IGNyZWF0ZUJ1aWx0aW4oYChmdW5jdGlvbiAob2JqKSB7Ci0gICAgICAgIHJldHVybiBAZ2V0QnlJ
ZERpcmVjdFByaXZhdGUob2JqLCAiZ2VuZXJhdG9yU3RhdGUiKTsKKyAgICBsZXQgYnVpbHRpblB1
dCA9IGNyZWF0ZUJ1aWx0aW4oYChmdW5jdGlvbiAob2JqLCB2YWx1ZSkgeworICAgICAgICBAcHV0
QnlJZERpcmVjdFByaXZhdGUob2JqLCAibmV4dCIsIHZhbHVlKTsKICAgICB9KWApOwotICAgIGZ1
bmN0aW9uKiBoZWxsbygpIHsgfQotICAgIGxldCBnZW5lcmF0b3IgPSBoZWxsbygpOwotICAgIHNo
b3VsZEJlKHR5cGVvZiBidWlsdGluKGdlbmVyYXRvciksICJudW1iZXIiKTsKLSAgICBsZXQgcmVz
dWx0ID0gT2JqZWN0LmFzc2lnbih7fSwgZ2VuZXJhdG9yKTsKLSAgICBzaG91bGRCZSh0eXBlb2Yg
YnVpbHRpbihyZXN1bHQpLCAidW5kZWZpbmVkIik7CisgICAgbGV0IGJ1aWx0aW5HZXQgPSBjcmVh
dGVCdWlsdGluKGAoZnVuY3Rpb24gKG9iaikgeworICAgICAgICByZXR1cm4gQGdldEJ5SWREaXJl
Y3RQcml2YXRlKG9iaiwgIm5leHQiKTsKKyAgICB9KWApOworICAgIHZhciBvYmplY3QgPSB7fTsK
KyAgICB2YXIgdmFsdWUgPSA0MjsKKyAgICBidWlsdGluUHV0KG9iamVjdCwgdmFsdWUpOworICAg
IHNob3VsZEJlKHR5cGVvZiBidWlsdGluR2V0KG9iamVjdCksICJudW1iZXIiKTsKKyAgICBsZXQg
cmVzdWx0ID0gT2JqZWN0LmFzc2lnbih7fSwgb2JqZWN0KTsKKyAgICBzaG91bGRCZSh0eXBlb2Yg
YnVpbHRpbkdldChyZXN1bHQpLCAidW5kZWZpbmVkIik7CiB9CiB7CiAgICAgbGV0IG9iamVjdCA9
IHt9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378852</attachid>
            <date>2019-09-16 03:42:12 -0700</date>
            <delta_ts>2019-09-16 11:12:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201159-20190916034211.patch</filename>
            <type>text/plain</type>
            <size>124265</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5ODg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
MDRkYmQ0YWUxODlmMDYyMGQ2N2I3YzlkZmMyZTg4NDc5ZGExZTQ0Li4yZjQ1ZWRhMjc0YzBiMGQ1
N2JkNjkxMWFhMmI2MDE3YTkwN2M1MGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNTcgQEAKKzIwMTktMDktMTYgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBHZW5lcmF0b3Igc2hvdWxkIGhhdmUgaW50ZXJuYWwgZmllbGRz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDExNTkK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBh
dGNoIG1ha2VzIGdlbmVyYXRvcidzIGludGVybmFsIHN0YXRlcyBJbnRlcm5hbEZpZWxkIGluc3Rl
YWQgb2YgcHJpdmF0ZSBwcm9wZXJ0aWVzLgorICAgICAgICBFYWNoIGdlbmVyYXRvciBmdW5jdGlv
biBwcm9kdWNlcyBhIGdlbmVyYXRvciB3aXRoIGRpZmZlcmVudCBbW1Byb3RvdHlwZV1dLCB3aGlj
aCBtYWtlcyBnZW5lcmF0b3JzIGhhdmUgZGlmZmVyZW50IFN0cnVjdHVyZXMuCisgICAgICAgIEFz
IGEgcmVzdWx0LCBHZW5lcmF0b3IucHJvdG90eXBlLm5leHQgZXRjLidzIGltcGxlbWVudGF0aW9u
IGJlY29tZXMgbWVnYW1vcnBoaWMgZXZlbiBpZiBpdCBpcyBub3QgbmVjZXNzYXJ5LgorCisgICAg
ICAgIElmIHdlIG1ha2UgdGhlc2Ugc3RydWN0dXJlcyBhZGFwdGl2ZWx5IHBvbHktcHJvdG8gb25l
cywgc29tZSBnZW5lcmF0b3JzIGdldCBwb2x5LXByb3RvIHN0cnVjdHVyZXMgd2hpbGUgb3RoZXJz
IGFyZSBub3QsIHJlc3VsdGluZworICAgICAgICBpbiBtZWdhbW9ycGhpYyBsb29rdXAgaW4gR2Vu
ZXJhdG9yLnByb3RvdHlwZS5uZXh0LiBJZiB3ZSBtYWtlIGFsbCB0aGUgZ2VuZXJhdG9yJ3Mgc3Ry
dWN0dXJlIHBvbHktcHJvdG8gb25lcywgaXQgbWFrZXMgR2VuZXJhdG9yLnByb3RvdHlwZS5uZXh0
CisgICAgICAgIGxvb2t1cCBzdWJvcHRpbWFsIGZvciBub3cuCisKKyAgICAgICAgSW4gdGhpcyBw
YXRjaCwgd2Ugc3RhcnQgd2l0aCByZWxhdGl2ZWx5IHNpbXBsZSB3YXkuIFRoaXMgcGF0Y2ggaW50
cm9kdWNlcyBKU0dlbmVyYXRvciBjbGFzcywgYW5kIGl0IGhhcyBpbnRlcm5hbCBmaWVsZHMgZm9y
IGdlbmVyYXRvcidzIGludGVybmFsCisgICAgICAgIHN0YXRlcy4gV2UgZXh0ZW5kIHByb21pc2Ut
aW50ZXJuYWwtZmllbGQgYWNjZXNzIGJ5dGVjb2RlcyB0byBhY2Nlc3MgdG8gdGhlc2UgZmllbGRz
IGZyb20gYnl0ZWNvZGUgc28gdGhhdCBHZW5lcmF0b3IucHJvdG90eXBlLm5leHQgY2FuIGFjY2Vz
cworICAgICAgICB0aGVzZSBmaWVsZHMgd2l0aG91dCB1c2luZyBtZWdhbW9ycGhpYyBnZXRfYnlf
aWRfZGlyZWN0LgorCisgICAgICAgIEFuZCB3ZSBjYW4gYXR0YWNoIEpTR2VuZXJhdG9yVHlwZSB0
byBKU0dlbmVyYXRvciBzbyB0aGF0IHdlIGNhbiBlZmZpY2llbnRseSBpbXBsZW1lbnQgYEBpc0dl
bmVyYXRvcigpYCBjaGVjayBpbiBieXRlY29kZS4KKworICAgICAgICBXZSByZXNlcnZlIHRoZSBv
ZmZzZXQgPSAwIHNsb3QgZm9yIHRoZSBmdXR1cmUgcG9seS1wcm90byBleHRlbnNpb24gZm9yIEpT
R2VuZXJhdG9yLiBCeSByZXNlcnZpbmcgdGhpcyBzbG90LCBub24tcG9seS1wcm90byBKU0dlbmVy
YXRvciBhbmQgcG9seS1wcm90bworICAgICAgICBKU0dlbmVyYXRvciBzdGlsbCBjYW4gb2ZmZXIg
dGhlIHdheSB0byBhY2Nlc3MgdG8gdGhlIHNhbWUgR2VuZXJhdG9yIGludGVybmFsIGZpZWxkcyB3
aXRoIHRoZSBzYW1lIG9mZnNldCB3aGlsZSBwb2x5LXByb3RvIEpTR2VuZXJhdG9yIGNhbiBnZXQg
b2Zmc2V0ID0gMAorICAgICAgICBpbmxpbmUtc3RvcmFnZSBzbG90IGZvciBQb2x5UHJvdG8gaW1w
bGVtZW50YXRpb24uCisKKyAgICAgICAgQ3VycmVudGx5LCB3ZSBzdGFydCBoYXZpbmcgb3BfY3Jl
YXRlX2dlbmVyYXRvciBzaW5jZSBpdCBjb3VsZCBiZSBkaWZmZXJlbnQgZnJvbSBjcmVhdGVfcHJv
bWlzZSB3aGVuIHdlIGFkZCBQb2x5UHJvdG8gc3VwcG9ydC4gQnV0IHdoZW4gYWRkaW5nIGNyZWF0
ZV9hc3luY19nZW5lcmF0b3ItbGlrZQorICAgICAgICB0aGluZywgd2Ugd2lsbCBpbnRyb2R1Y2Ug
b25lIGFic3RyYWN0ZWQgYnl0ZWNvZGUgZm9yIGJvdGggY3JlYXRlX2dlbmVyYXRvciBhbmQgY3Jl
YXRlX2FzeW5jX2dlbmVyYXRvciB0byBlZmZpY2llbnRseSBzdXBwb3J0IGJvdGguCisKKyAgICAg
ICAgVGhpcyBwYXRjaCBvZmZlcnMgYXJvdW5kIDEwJSBpbXByb3ZlbWVudCBpbiBKZXRTdHJlYW0y
L0Jhc2ljLiBBbmQgdGhpcyBwYXRjaCBpcyB0aGUgYmFzaXMgb2Ygb3B0aW1pemF0aW9uIG9mIEpl
dFN0cmVhbTIvYXN5bmMtZnMgd2hpY2ggbGV2ZXJhZ2VzIGFzeW5jIGdlbmVyYXRvcnMgc2lnbmlm
aWNhbnRseS4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogYnVpbHRpbnMvQXN5bmNG
dW5jdGlvblByb3RvdHlwZS5qczoKKyAgICAgICAgKGdsb2JhbFByaXZhdGUuYXN5bmNGdW5jdGlv
blJlc3VtZSk6CisgICAgICAgICogYnVpbHRpbnMvR2VuZXJhdG9yUHJvdG90eXBlLmpzOgorICAg
ICAgICAoZ2xvYmFsUHJpdmF0ZS5nZW5lcmF0b3JSZXN1bWUpOgorICAgICAgICAobmV4dCk6Cisg
ICAgICAgIChyZXR1cm4pOgorICAgICAgICAodGhyb3cpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5
dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3JpZmljYXRpb246OnJ1bik6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5z
aWNSZWdpc3RyeS5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6
OkJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2Rl
SW50cmluc2ljUmVnaXN0cnkuaDoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3QucmI6
CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaDoKKyAgICAgICAgKEpTQzo6Y29t
cHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OmNvbXB1dGVEZWZzRm9y
Qnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpDb2Rl
QmxvY2s6OmZpbmFsaXplTExJbnRJbmxpbmVDYWNoZXMpOgorICAgICAgICAqIGJ5dGVjb2RlL1Nw
ZWN1bGF0ZWRUeXBlLmNwcDoKKyAgICAgICAgKEpTQzo6c3BlY3VsYXRpb25Gcm9tSlNUeXBlKToK
KyAgICAgICAgKiBieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oOgorICAgICAgICAqIGJ5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yOjpCeXRlY29kZUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0UHV0R2VuZXJhdG9yRmllbGRzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXRDcmVhdGVHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdE5ld0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0WWllbGQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlbGVnYXRl
WWllbGQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdlbmVyYXRvclN0
YXRlQ2hhbmdlKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJc0dlbmVyYXRvcik6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0b3JTdGF0ZVJlZ2lzdGVyKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRvclZhbHVlUmVnaXN0ZXIpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lz
dGVyKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRvckZyYW1lUmVn
aXN0ZXIpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAg
ICAoSlNDOjpnZW5lcmF0b3JJbnRlcm5hbEZpZWxkSW5kZXgpOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dldEdlbmVyYXRvckludGVybmFsRmll
bGQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2lj
X3B1dEdlbmVyYXRvckludGVybmFsRmllbGQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUludHJp
bnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2lzR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6RnVu
Y3Rpb25Ob2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVy
cHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8
QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFy
c2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6Y2FwYWJpbGl0eUxldmVsKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcml6ZS5o
OgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAqIGRmZy9ERkdDbG9i
YmVyc0V4aXRTdGF0ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Y2xvYmJlcnNFeGl0U3RhdGUp
OgorICAgICAgICAqIGRmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6Q29uc3RhbnRGb2xkaW5nUGhhc2U6OmZvbGRDb25zdGFudHMpOgorICAgICAgICAq
IGRmZy9ERkdEb2VzR0MuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmRvZXNHQyk6CisgICAgICAg
ICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6
OmZpeHVwTm9kZSk6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBJc0NlbGxX
aXRoVHlwZSk6CisgICAgICAgICogZGZnL0RGR0dyYXBoLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpHcmFwaDo6ZHVtcCk6CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6
REZHOjpOb2RlOjpjb252ZXJ0VG9OZXdHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpERkc6Ok5v
ZGU6OnNwZWN1bGF0ZWRUeXBlRm9yUXVlcnkpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhh
c1N0cnVjdHVyZSk6CisgICAgICAgICogZGZnL0RGR05vZGVUeXBlLmg6CisgICAgICAgICogZGZn
L0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmg6CisgICAg
ICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBk
ZmcvREZHU2FmZVRvRXhlY3V0ZS5oOgorICAgICAgICAoSlNDOjpERkc6OnNhZmVUb0V4ZWN1dGUp
OgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVQcm9taXNlKToKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZUdlbmVyYXRvcik6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdHZW5lcmF0b3IpOgorICAgICAgICAq
IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6
CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3RvcmVCYXJy
aWVySW5zZXJ0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGZ0bC9GVExDYXBhYmlsaXRpZXMuY3Bw
OgorICAgICAgICAoSlNDOjpGVEw6OmNhbkNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExMb3dl
ckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21w
aWxlTm9kZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVO
ZXdHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21w
aWxlQ3JlYXRlUHJvbWlzZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6
OmNvbXBpbGVDcmVhdGVHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0IzOjppc0NlbGxXaXRoVHlwZSk6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAg
IChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgIChKU0M6OkpJVDo6
cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMpOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNw
cDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGppdC9KSVRQcm9w
ZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfaW50ZXJuYWxf
ZmllbGQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2ludGVybmFsX2ZpZWxkKToK
KyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBydW50
aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OlNMT1dfUEFUSF9ERUNMKToK
KyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5oOgorICAgICAgICAqIHJ1bnRpbWUv
SW50ZXJuYWxGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkludGVybmFsRnVuY3Rpb246OmNy
ZWF0ZVN1YmNsYXNzU3RydWN0dXJlU2xvdyk6CisgICAgICAgICogcnVudGltZS9JbnRlcm5hbEZ1
bmN0aW9uLmg6CisgICAgICAgIChKU0M6OkludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNz
U3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJhdG9yLmNwcDogQWRkZWQuCisg
ICAgICAgIChKU0M6OkpTR2VuZXJhdG9yOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpKU0dlbmVy
YXRvcjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmF0b3I6OkpTR2Vu
ZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmF0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAg
ICAgICAgKEpTQzo6SlNHZW5lcmF0b3I6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRp
bWUvSlNHZW5lcmF0b3IuaDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5oLgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmF0b3JG
dW5jdGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAg
ICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2Jq
ZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6
CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpnZW5lcmF0b3JTdHJ1Y3R1cmUgY29uc3Qp
OgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlLmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRl
cm5hbCk6CisgICAgICAgICogcnVudGltZS9KU1R5cGUuaDoKKwogMjAxOS0wOS0xNSAgRGF2aWQg
S2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIExlYWsgb2YgTlNNYXBUYWJs
ZSBpbiAtW0pTVmlydHVhbE1hY2hpbmUgYWRkTWFuYWdlZFJlZmVyZW5jZTp3aXRoT3duZXI6XQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBlMjJjMTRmYWFhYWMzODMwNzE4YzFiMWZl
ODA5NzljZmNkN2Y4NWJhLi5iYTdlMDVlNTQ2MzQzNzE4ZTQ2NWI3OTg2ZjNkMThkMDVhYzk2NzUx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTgwMyw2ICsxODAzLDcgQEAKIAkJ
RTM0MDBFQzEyMkExQ0M3QjAwOURFRDU0IC8qIEZ1bmN0aW9uRXhlY3V0YWJsZUlubGluZXMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNDAwRUMwMjJB
MUNDNzgwMDlERUQ1NCAvKiBGdW5jdGlvbkV4ZWN1dGFibGVJbmxpbmVzLmggKi87IH07CiAJCUUz
NEU2NTc1MjA2NjhFQUEwMEZCODFBQyAvKiBQYXJzZUhhc2guaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNEU2NTczMjA2NjhFOEQwMEZCODFBQyAvKiBQ
YXJzZUhhc2guaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlFMzRFREJGNzFEQjVGRkM5MDBEQzg3QTUgLyogRnJhbWVUcmFjZXJzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzRFREJGNjFEQjVGRkMxMDBE
Qzg3QTUgLyogRnJhbWVUcmFjZXJzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJRTM0RjkzMEUyMzIyRDg4MjAwMkI4REI0IC8qIEpTR2VuZXJhdG9y
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzRGOTMw
QzIzMjJEODgxMDAyQjhEQjQgLyogSlNHZW5lcmF0b3IuaCAqLzsgfTsKIAkJRTM1MDcwOEExREM0
OUJCRjAwODlCQ0Q2IC8qIERPTUpJVFNpZ25hdHVyZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1MDcwODkxREM0OUJCNjAwODlCQ0Q2IC8qIERPTUpJ
VFNpZ25hdHVyZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUUzNTQ2MjJCMUI2MDY1RDEwMDU0NTM4NiAvKiBDb25zdHJ1Y3RBYmlsaXR5LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzU0NjIyQTFCNjA2
NUQxMDA1NDUzODYgLyogQ29uc3RydWN0QWJpbGl0eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzNTU1QjhBMURBRTAzQTUwMEYzNjkyMSAvKiBE
T01KSVRDYWxsRE9NR2V0dGVyU25pcHBldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTM1NTVCODkxREFFMDNBMjAwRjM2OTIxIC8qIERPTUpJVENhbGxE
T01HZXR0ZXJTbmlwcGV0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKQEAgLTQ5MDEsNiArNDkwMiw4IEBACiAJCUUzNEU2NTczMjA2NjhFOEQwMEZCODFB
QyAvKiBQYXJzZUhhc2guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFyc2VI
YXNoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNEU2NTc0MjA2NjhFOEUwMEZC
ODFBQyAvKiBQYXJzZUhhc2guY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUGFyc2VIYXNoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM0RURCRjYx
REI1RkZDMTAwREM4N0E1IC8qIEZyYW1lVHJhY2Vycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBGcmFtZVRyYWNlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RTM0RjkzMEIyMzIyRDg4MTAwMkI4REI0IC8qIEpTR2VuZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTR2VuZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJRTM0RjkzMEMyMzIyRDg4MTAwMkI4REI0IC8qIEpTR2VuZXJhdG9yLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTR2VuZXJhdG9yLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNTA3MDg5MURDNDlCQjYwMDg5QkNENiAvKiBET01KSVRT
aWduYXR1cmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NSklUU2lnbmF0
dXJlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNTQ2MjJBMUI2MDY1RDEwMDU0
NTM4NiAvKiBDb25zdHJ1Y3RBYmlsaXR5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IENvbnN0cnVjdEFiaWxpdHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM1
NTVCODkxREFFMDNBMjAwRjM2OTIxIC8qIERPTUpJVENhbGxET01HZXR0ZXJTbmlwcGV0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUpJVENhbGxET01HZXR0ZXJTbmlwcGV0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03MTQzLDExICs3MTQ2LDExIEBACiAJ
CQkJODY4OTIxQzExRjlDMENCNzAwMTE1OUY2IC8qIEpTQmlnSW50LmggKi8sCiAJCQkJODZGQTlF
OEYxNDJCQkIyRDAwMTc3M0I3IC8qIEpTQm91bmRGdW5jdGlvbi5jcHAgKi8sCiAJCQkJODZGQTlF
OTAxNDJCQkIyRTAwMTc3M0I3IC8qIEpTQm91bmRGdW5jdGlvbi5oICovLAotCQkJCUZFNDhCRDQz
MjMyNDVFODcwMEYxMzZEMCAvKiBKU0NDb25maWcuY3BwICovLAotCQkJCUZFNDhCRDQyMjMyNDVF
ODcwMEYxMzZEMCAvKiBKU0NDb25maWcuaCAqLywKIAkJCQk2NTdDRjQ1NjE5QkY2NjYyMDA0QUNC
RjIgLyogSlNDYWxsZWUuY3BwICovLAogCQkJCTY1N0NGNDU3MTlCRjY2NjIwMDRBQ0JGMiAvKiBK
U0NhbGxlZS5oICovLAogCQkJCTUzQjYwMUVCMjAzNEI4QzUwMDZCRTY2NyAvKiBKU0Nhc3QuaCAq
LywKKwkJCQlGRTQ4QkQ0MzIzMjQ1RTg3MDBGMTM2RDAgLyogSlNDQ29uZmlnLmNwcCAqLywKKwkJ
CQlGRTQ4QkQ0MjIzMjQ1RTg3MDBGMTM2RDAgLyogSlNDQ29uZmlnLmggKi8sCiAJCQkJQkM3RjhG
QkEwRTE5RDFFRjAwODYzMkMwIC8qIEpTQ2VsbC5jcHAgKi8sCiAJCQkJQkMxMTY3RDgwRTE5QkND
OTAwODA2NkREIC8qIEpTQ2VsbC5oICovLAogCQkJCTBGOTc0OTZGMTY4N0FERTIwMEE0RkY2QSAv
KiBKU0NlbGxJbmxpbmVzLmggKi8sCkBAIC03MTc2LDYgKzcxNzksOCBAQAogCQkJCUY2OTJBODVF
MDI1NTU5N0QwMUZGNjBGNyAvKiBKU0Z1bmN0aW9uLmNwcCAqLywKIAkJCQlGNjkyQTg1RjAyNTU1
OTdEMDFGRjYwRjcgLyogSlNGdW5jdGlvbi5oICovLAogCQkJCUE3MjAyOEI5MTc5NzYwM0QwMDk4
MDI4QyAvKiBKU0Z1bmN0aW9uSW5saW5lcy5oICovLAorCQkJCUUzNEY5MzBCMjMyMkQ4ODEwMDJC
OERCNCAvKiBKU0dlbmVyYXRvci5jcHAgKi8sCisJCQkJRTM0RjkzMEMyMzIyRDg4MTAwMkI4REI0
IC8qIEpTR2VuZXJhdG9yLmggKi8sCiAJCQkJNzBCNzkxOEMxQzAyNDQ2MjAwMjQ4MUUyIC8qIEpT
R2VuZXJhdG9yRnVuY3Rpb24uY3BwICovLAogCQkJCTcwQjc5MThEMUMwMjQ0NjIwMDI0ODFFMiAv
KiBKU0dlbmVyYXRvckZ1bmN0aW9uLmggKi8sCiAJCQkJMEYyQjY2QzMxN0I2QjVBQjAwQTdBRTNG
IC8qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmggKi8sCkBAIC05MzQ4LDcgKzkzNTMsNiBAQAog
CQkJCTBGRUEwQTEwMTcwNTEzREIwMEJCNzIyQyAvKiBGVExMb3dlckRGR1RvQjMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE3RDg5RDAyMTdBMEI5MDQwMDc3M0FEOCAvKiBGVExMb3dlcmVkTm9kZVZh
bHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCOUNGOTE5RDBCQUMxMDBCMUQxQjUgLyogRlRM
T3BlcmF0aW9ucy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRkUzODQyMzIyMzI0RDUxQjAwOURENDQ1
IC8qIE9wdGlvbkVudHJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkQ4QTMxQzE3RDUxRjIyMDBD
QTJDNDAgLyogRlRMT1NSRW50cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjM1QkREMTcxNzhF
MUMwMDY5MEM3RiAvKiBGVExPU1JFeGl0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjIzNUJFMDE3
MTc4RTFDMDA2OTBDN0YgLyogRlRMT1NSRXhpdENvbXBpbGVyLmggaW4gSGVhZGVycyAqLywKQEAg
LTk1MzgsNyArOTU0Miw2IEBACiAJCQkJQTFENzkzMDExQjQzODY0QjAwNDUxNkY1IC8qIEludGxO
dW1iZXJGb3JtYXRQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUExMjU4NDZGMUI0NUEz
NjAwMENDN0Y2QyAvKiBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTEyQkJGRjIxQjA0NEE4QjAwNjY0QjY5IC8qIEludGxPYmplY3QuaCBpbiBIZWFk
ZXJzICovLAotCQkJCUZFNDhCRDQ0MjMyNDVFOTMwMEYxMzZEMCAvKiBKU0NDb25maWcuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTcwOEVCRTI0MUNFOEYzNTgwMDQ1MzE0NiAvKiBJbnRsT2JqZWN0SW5s
aW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODYwQkQ4MDExNDhFQTZGMjAwMTEyQjJGIC8qIElu
dHJpbnNpYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTM0RTAzNTQxRTUzQkQyOTAwMjEzRjY0IC8q
IEludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UuaCBpbiBIZWFkZXJzICovLApAQCAtOTYwOSw2ICs5
NjEyLDcgQEAKIAkJCQk2NTdDRjQ1OTE5QkY2NjYyMDA0QUNCRjIgLyogSlNDYWxsZWUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTUzQjYwMUVDMjAzNEI4QzUwMDZCRTY2NyAvKiBKU0Nhc3QuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE3RDgwMUE5MTg4MEQ2QTgwMDI2QzM5QiAvKiBKU0NCdWlsdGlucy5o
IGluIEhlYWRlcnMgKi8sCisJCQkJRkU0OEJENDQyMzI0NUU5MzAwRjEzNkQwIC8qIEpTQ0NvbmZp
Zy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxMTY3REEwRTE5QkNDOTAwODA2NkREIC8qIEpTQ2Vs
bC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5NzQ5NzExNjg3QURFNDAwQTRGRjZBIC8qIEpTQ2Vs
bElubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMUREODRBMThBOTQ1QkUwMDI2RjNGQSAv
KiBKU0NJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKQEAgLTk2MzksNiArOTY0Myw3IEBACiAJCQkJ
MEYyQjY2RjAxN0I2QjVBQjAwQTdBRTNGIC8qIEpTRmxvYXQ2NEFycmF5LmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQzE4QzQxRjBFMTZGNUNEMDBCMzQ0NjAgLyogSlNGdW5jdGlvbi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTcyMDI4QkExNzk3NjAzRDAwOTgwMjhDIC8qIEpTRnVuY3Rpb25JbmxpbmVz
LmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzRGOTMwRTIzMjJEODgyMDAyQjhEQjQgLyogSlNHZW5l
cmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTcwQjc5MTlDMUMwMjRBNDkwMDI0ODFFMiAvKiBK
U0dlbmVyYXRvckZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCNjZGMTE3QjZCNUFC
MDBBN0FFM0YgLyogSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGMkI2NkYyMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0
cnVjdG9yLmggaW4gSGVhZGVycyAqLywKQEAgLTk4ODUsNyArOTg5MCw5IEBACiAJCQkJMEYyQkRD
MkMxNTFGREU5MTAwQ0Q4OTEwIC8qIE9wZXJhbmRzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzA0
NDdFQTE3QTBCRDQ2MDBGNTg5OEUgLyogT3BlcmFuZHNJbmxpbmVzLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQzE4QzQ0ODBFMTZGNUNEMDBCMzQ0NjAgLyogT3BlcmF0aW9ucy5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJRkUzODQyMzIyMzI0RDUxQjAwOURENDQ1IC8qIE9wdGlvbkVudHJ5LmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRkUyMjhFRDE0MzZBQjI3MDAxOTZDNDggLyogT3B0aW9ucy5oIGluIEhl
YWRlcnMgKi8sCisJCQkJRkUzODQyMzMyMzI0RDUxQjAwOURENDQ1IC8qIE9wdGlvbnNMaXN0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlFMzU2OTg3MjIyODQxMTg3MDA4Q0RDQ0IgLyogUGFja2VkQ2Vs
bFB0ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5REFBMEExRkQxQzNEMzAwNzlDNUIyIC8qIFBh
cmFsbGVsU291cmNlQWRhcHRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTM0RTY1NzUyMDY2OEVB
QTAwRkI4MUFDIC8qIFBhcnNlSGFzaC5oIGluIEhlYWRlcnMgKi8sCkBAIC05OTkyLDcgKzk5OTks
NiBAQAogCQkJCTBGRTA1MDI4MUFBOTA5NTYwMEQzM0IzMyAvKiBTY29wZWRBcmd1bWVudHMuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGRTA1MDI5MUFBOTA5NTYwMEQzM0IzMyAvKiBTY29wZWRBcmd1
bWVudHNUYWJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFMDUwMkIxQUE5MDk1NjAwRDMzQjMz
IC8qIFNjb3BlT2Zmc2V0LmggaW4gSGVhZGVycyAqLywKLQkJCQlGRTM4NDIzMzIzMjRENTFCMDA5
REQ0NDUgLyogT3B0aW9uc0xpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjRFNTUyMTdFRTI3
NDkwMEFCQjIxNyAvKiBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE1RkQwMDY4MTg5QUZFOUMwMDYzMzIzMSAvKiBTY3JpcHRBcmd1bWVudHMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE1MDNGQTIxMTg4RUZGNjgwMDExMEYxNCAvKiBTY3JpcHRCcmVha3BvaW50
LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3Vy
Y2VzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCA2YTMzMWQx
ZGUwOTYzZmM2YTZiMjhmM2EwZTM4NmJhOWVjNmJlZTU0Li40M2VhNTMwYzI1MTM0ODVlNzQ3ZDU0
MTUzNTI3Mjg3ODdjODI4NWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291
cmNlcy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC04MjQs
NiArODI0LDcgQEAgcnVudGltZS9KU0RhdGVNYXRoLmNwcAogcnVudGltZS9KU0Rlc3RydWN0aWJs
ZU9iamVjdEhlYXBDZWxsVHlwZS5jcHAKIHJ1bnRpbWUvSlNGaXhlZEFycmF5LmNwcAogcnVudGlt
ZS9KU0Z1bmN0aW9uLmNwcAorcnVudGltZS9KU0dlbmVyYXRvci5jcHAKIHJ1bnRpbWUvSlNHZW5l
cmF0b3JGdW5jdGlvbi5jcHAKIHJ1bnRpbWUvSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQuY3Bw
CiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J1aWx0aW5zL0FzeW5jRnVuY3Rpb25Qcm90b3R5cGUuanMgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnVpbHRpbnMvQXN5bmNGdW5jdGlvblByb3RvdHlwZS5qcwppbmRleCA1MjE0YmQ2
ZjNhMWI0ZTJlNWYxZTk1YWExYzk5MTE4OTliODk1MDBmLi45NjhjZjFlNzM0NjE5MmYxZDQ1OGMz
Nzk4ZWMzN2M4ZDFiYzkxZDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVp
bHRpbnMvQXN5bmNGdW5jdGlvblByb3RvdHlwZS5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnVpbHRpbnMvQXN5bmNGdW5jdGlvblByb3RvdHlwZS5qcwpAQCAtMzEsMjIgKzMxLDIyIEBA
IGZ1bmN0aW9uIGFzeW5jRnVuY3Rpb25SZXN1bWUoZ2VuZXJhdG9yLCBwcm9taXNlLCBzZW50VmFs
dWUsIHJlc3VtZU1vZGUpCiAKICAgICBAYXNzZXJ0KEBpc1Byb21pc2UocHJvbWlzZSkpOwogCi0g
ICAgdmFyIHN0YXRlID0gQGdldEJ5SWREaXJlY3RQcml2YXRlKGdlbmVyYXRvciwgImdlbmVyYXRv
clN0YXRlIik7CisgICAgdmFyIHN0YXRlID0gQGdldEdlbmVyYXRvckludGVybmFsRmllbGQoZ2Vu
ZXJhdG9yLCBAZ2VuZXJhdG9yRmllbGRTdGF0ZSk7CiAgICAgdmFyIHZhbHVlID0gQHVuZGVmaW5l
ZDsKIAogICAgIGlmIChzdGF0ZSA9PT0gQEdlbmVyYXRvclN0YXRlQ29tcGxldGVkIHx8IChyZXN1
bWVNb2RlICE9PSBAR2VuZXJhdG9yUmVzdW1lTW9kZU5vcm1hbCAmJiByZXN1bWVNb2RlICE9PSBA
R2VuZXJhdG9yUmVzdW1lTW9kZVRocm93KSkKICAgICAgICAgQHRocm93VHlwZUVycm9yKCJBc3lu
YyBmdW5jdGlvbiBpbGxlZ2FsbHkgcmVzdW1lZCIpOwogCiAgICAgdHJ5IHsKLSAgICAgICAgQHB1
dEJ5SWREaXJlY3RQcml2YXRlKGdlbmVyYXRvciwgImdlbmVyYXRvclN0YXRlIiwgQEdlbmVyYXRv
clN0YXRlRXhlY3V0aW5nKTsKLSAgICAgICAgdmFsdWUgPSBAZ2V0QnlJZERpcmVjdFByaXZhdGUo
Z2VuZXJhdG9yLCAiZ2VuZXJhdG9yTmV4dCIpLkBjYWxsKEBnZXRCeUlkRGlyZWN0UHJpdmF0ZShn
ZW5lcmF0b3IsICJnZW5lcmF0b3JUaGlzIiksIGdlbmVyYXRvciwgc3RhdGUsIHNlbnRWYWx1ZSwg
cmVzdW1lTW9kZSwgQGdldEJ5SWREaXJlY3RQcml2YXRlKGdlbmVyYXRvciwgImdlbmVyYXRvckZy
YW1lIikpOwotICAgICAgICBpZiAoQGdldEJ5SWREaXJlY3RQcml2YXRlKGdlbmVyYXRvciwgImdl
bmVyYXRvclN0YXRlIikgPT09IEBHZW5lcmF0b3JTdGF0ZUV4ZWN1dGluZykgewotICAgICAgICAg
ICAgQHB1dEJ5SWREaXJlY3RQcml2YXRlKGdlbmVyYXRvciwgImdlbmVyYXRvclN0YXRlIiwgQEdl
bmVyYXRvclN0YXRlQ29tcGxldGVkKTsKKyAgICAgICAgQHB1dEdlbmVyYXRvckludGVybmFsRmll
bGQoZ2VuZXJhdG9yLCBAZ2VuZXJhdG9yRmllbGRTdGF0ZSwgQEdlbmVyYXRvclN0YXRlRXhlY3V0
aW5nKTsKKyAgICAgICAgdmFsdWUgPSBAZ2V0R2VuZXJhdG9ySW50ZXJuYWxGaWVsZChnZW5lcmF0
b3IsIEBnZW5lcmF0b3JGaWVsZE5leHQpLkBjYWxsKEBnZXRHZW5lcmF0b3JJbnRlcm5hbEZpZWxk
KGdlbmVyYXRvciwgQGdlbmVyYXRvckZpZWxkVGhpcyksIGdlbmVyYXRvciwgc3RhdGUsIHNlbnRW
YWx1ZSwgcmVzdW1lTW9kZSwgQGdldEdlbmVyYXRvckludGVybmFsRmllbGQoZ2VuZXJhdG9yLCBA
Z2VuZXJhdG9yRmllbGRGcmFtZSkpOworICAgICAgICBpZiAoQGdldEdlbmVyYXRvckludGVybmFs
RmllbGQoZ2VuZXJhdG9yLCBAZ2VuZXJhdG9yRmllbGRTdGF0ZSkgPT09IEBHZW5lcmF0b3JTdGF0
ZUV4ZWN1dGluZykgeworICAgICAgICAgICAgQHB1dEdlbmVyYXRvckludGVybmFsRmllbGQoZ2Vu
ZXJhdG9yLCBAZ2VuZXJhdG9yRmllbGRTdGF0ZSwgQEdlbmVyYXRvclN0YXRlQ29tcGxldGVkKTsK
ICAgICAgICAgICAgIEByZXNvbHZlUHJvbWlzZVdpdGhGaXJzdFJlc29sdmluZ0Z1bmN0aW9uQ2Fs
bENoZWNrKHByb21pc2UsIHZhbHVlKTsKICAgICAgICAgICAgIHJldHVybiBwcm9taXNlOwogICAg
ICAgICB9CiAgICAgfSBjYXRjaCAoZXJyb3IpIHsKLSAgICAgICAgQHB1dEJ5SWREaXJlY3RQcml2
YXRlKGdlbmVyYXRvciwgImdlbmVyYXRvclN0YXRlIiwgQEdlbmVyYXRvclN0YXRlQ29tcGxldGVk
KTsKKyAgICAgICAgQHB1dEdlbmVyYXRvckludGVybmFsRmllbGQoZ2VuZXJhdG9yLCBAZ2VuZXJh
dG9yRmllbGRTdGF0ZSwgQEdlbmVyYXRvclN0YXRlQ29tcGxldGVkKTsKICAgICAgICAgQHJlamVj
dFByb21pc2VXaXRoRmlyc3RSZXNvbHZpbmdGdW5jdGlvbkNhbGxDaGVjayhwcm9taXNlLCBlcnJv
cik7CiAgICAgICAgIHJldHVybiBwcm9taXNlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9idWlsdGlucy9HZW5lcmF0b3JQcm90b3R5cGUuanMgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnVpbHRpbnMvR2VuZXJhdG9yUHJvdG90eXBlLmpzCmluZGV4IGIyODAxZGY4
ODJiOGE4YmM2ZTE1ZTZlMTRhOWYyOTZjZDFjNjkyNWQuLjgzOTNlYTI4YWU4OTk3NjkyY2ZlYjZl
ZTI1NGJhZjc5NTI3MWMwOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWls
dGlucy9HZW5lcmF0b3JQcm90b3R5cGUuanMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1
aWx0aW5zL0dlbmVyYXRvclByb3RvdHlwZS5qcwpAQCAtMzQsMTQgKzM0LDE0IEBAIGZ1bmN0aW9u
IGdlbmVyYXRvclJlc3VtZShnZW5lcmF0b3IsIHN0YXRlLCBnZW5lcmF0b3JUaGlzLCBzZW50VmFs
dWUsIHZhbHVlLCByZXN1CiAgICAgdmFyIGRvbmUgPSBzdGF0ZSA9PT0gQEdlbmVyYXRvclN0YXRl
Q29tcGxldGVkOwogICAgIGlmICghZG9uZSkgewogICAgICAgICB0cnkgewotICAgICAgICAgICAg
QHB1dEJ5SWREaXJlY3RQcml2YXRlKGdlbmVyYXRvciwgImdlbmVyYXRvclN0YXRlIiwgQEdlbmVy
YXRvclN0YXRlRXhlY3V0aW5nKTsKLSAgICAgICAgICAgIHZhbHVlID0gQGdldEJ5SWREaXJlY3RQ
cml2YXRlKGdlbmVyYXRvciwgImdlbmVyYXRvck5leHQiKS5AY2FsbChnZW5lcmF0b3JUaGlzLCBn
ZW5lcmF0b3IsIHN0YXRlLCBzZW50VmFsdWUsIHJlc3VtZU1vZGUsIEBnZXRCeUlkRGlyZWN0UHJp
dmF0ZShnZW5lcmF0b3IsICJnZW5lcmF0b3JGcmFtZSIpKTsKLSAgICAgICAgICAgIGlmIChAZ2V0
QnlJZERpcmVjdFByaXZhdGUoZ2VuZXJhdG9yLCAiZ2VuZXJhdG9yU3RhdGUiKSA9PT0gQEdlbmVy
YXRvclN0YXRlRXhlY3V0aW5nKSB7Ci0gICAgICAgICAgICAgICAgQHB1dEJ5SWREaXJlY3RQcml2
YXRlKGdlbmVyYXRvciwgImdlbmVyYXRvclN0YXRlIiwgQEdlbmVyYXRvclN0YXRlQ29tcGxldGVk
KTsKKyAgICAgICAgICAgIEBwdXRHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKGdlbmVyYXRvciwgQGdl
bmVyYXRvckZpZWxkU3RhdGUsIEBHZW5lcmF0b3JTdGF0ZUV4ZWN1dGluZyk7CisgICAgICAgICAg
ICB2YWx1ZSA9IEBnZXRHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKGdlbmVyYXRvciwgQGdlbmVyYXRv
ckZpZWxkTmV4dCkuQGNhbGwoZ2VuZXJhdG9yVGhpcywgZ2VuZXJhdG9yLCBzdGF0ZSwgc2VudFZh
bHVlLCByZXN1bWVNb2RlLCBAZ2V0R2VuZXJhdG9ySW50ZXJuYWxGaWVsZChnZW5lcmF0b3IsIEBn
ZW5lcmF0b3JGaWVsZEZyYW1lKSk7CisgICAgICAgICAgICBpZiAoQGdldEdlbmVyYXRvckludGVy
bmFsRmllbGQoZ2VuZXJhdG9yLCBAZ2VuZXJhdG9yRmllbGRTdGF0ZSkgPT09IEBHZW5lcmF0b3JT
dGF0ZUV4ZWN1dGluZykgeworICAgICAgICAgICAgICAgIEBwdXRHZW5lcmF0b3JJbnRlcm5hbEZp
ZWxkKGdlbmVyYXRvciwgQGdlbmVyYXRvckZpZWxkU3RhdGUsIEBHZW5lcmF0b3JTdGF0ZUNvbXBs
ZXRlZCk7CiAgICAgICAgICAgICAgICAgZG9uZSA9IHRydWU7CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0gY2F0Y2ggKGVycm9yKSB7Ci0gICAgICAgICAgICBAcHV0QnlJZERpcmVjdFByaXZhdGUo
Z2VuZXJhdG9yLCAiZ2VuZXJhdG9yU3RhdGUiLCBAR2VuZXJhdG9yU3RhdGVDb21wbGV0ZWQpOwor
ICAgICAgICAgICAgQHB1dEdlbmVyYXRvckludGVybmFsRmllbGQoZ2VuZXJhdG9yLCBAZ2VuZXJh
dG9yRmllbGRTdGF0ZSwgQEdlbmVyYXRvclN0YXRlQ29tcGxldGVkKTsKICAgICAgICAgICAgIHRo
cm93IGVycm9yOwogICAgICAgICB9CiAgICAgfQpAQCAtNTIsNDMgKzUyLDQzIEBAIGZ1bmN0aW9u
IG5leHQodmFsdWUpCiB7CiAgICAgInVzZSBzdHJpY3QiOwogCi0gICAgdmFyIHN0YXRlID0gQGdl
dEJ5SWREaXJlY3RQcml2YXRlKHRoaXMsICJnZW5lcmF0b3JTdGF0ZSIpOwotICAgIGlmICh0eXBl
b2Ygc3RhdGUgIT09ICJudW1iZXIiKQorICAgIGlmICghQGlzR2VuZXJhdG9yKHRoaXMpKQogICAg
ICAgICBAdGhyb3dUeXBlRXJyb3IoInx0aGlzfCBzaG91bGQgYmUgYSBnZW5lcmF0b3IiKTsKIAor
ICAgIHZhciBzdGF0ZSA9IEBnZXRHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKHRoaXMsIEBnZW5lcmF0
b3JGaWVsZFN0YXRlKTsKICAgICBpZiAoc3RhdGUgPT09IEBHZW5lcmF0b3JTdGF0ZUV4ZWN1dGlu
ZykKICAgICAgICAgQHRocm93VHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgZXhlY3V0aW5nIik7CiAK
LSAgICByZXR1cm4gQGdlbmVyYXRvclJlc3VtZSh0aGlzLCBzdGF0ZSwgQGdldEJ5SWREaXJlY3RQ
cml2YXRlKHRoaXMsICJnZW5lcmF0b3JUaGlzIiksIHZhbHVlLCBAdW5kZWZpbmVkLCBAR2VuZXJh
dG9yUmVzdW1lTW9kZU5vcm1hbCk7CisgICAgcmV0dXJuIEBnZW5lcmF0b3JSZXN1bWUodGhpcywg
c3RhdGUsIEBnZXRHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKHRoaXMsIEBnZW5lcmF0b3JGaWVsZFRo
aXMpLCB2YWx1ZSwgQHVuZGVmaW5lZCwgQEdlbmVyYXRvclJlc3VtZU1vZGVOb3JtYWwpOwogfQog
CiBmdW5jdGlvbiByZXR1cm4odmFsdWUpCiB7CiAgICAgInVzZSBzdHJpY3QiOwogCi0gICAgdmFy
IHN0YXRlID0gQGdldEJ5SWREaXJlY3RQcml2YXRlKHRoaXMsICJnZW5lcmF0b3JTdGF0ZSIpOwot
ICAgIGlmICh0eXBlb2Ygc3RhdGUgIT09ICJudW1iZXIiKQorICAgIGlmICghQGlzR2VuZXJhdG9y
KHRoaXMpKQogICAgICAgICBAdGhyb3dUeXBlRXJyb3IoInx0aGlzfCBzaG91bGQgYmUgYSBnZW5l
cmF0b3IiKTsKIAorICAgIHZhciBzdGF0ZSA9IEBnZXRHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKHRo
aXMsIEBnZW5lcmF0b3JGaWVsZFN0YXRlKTsKICAgICBpZiAoc3RhdGUgPT09IEBHZW5lcmF0b3JT
dGF0ZUV4ZWN1dGluZykKICAgICAgICAgQHRocm93VHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgZXhl
Y3V0aW5nIik7CiAKLSAgICByZXR1cm4gQGdlbmVyYXRvclJlc3VtZSh0aGlzLCBzdGF0ZSwgQGdl
dEJ5SWREaXJlY3RQcml2YXRlKHRoaXMsICJnZW5lcmF0b3JUaGlzIiksIHZhbHVlLCB2YWx1ZSwg
QEdlbmVyYXRvclJlc3VtZU1vZGVSZXR1cm4pOworICAgIHJldHVybiBAZ2VuZXJhdG9yUmVzdW1l
KHRoaXMsIHN0YXRlLCBAZ2V0R2VuZXJhdG9ySW50ZXJuYWxGaWVsZCh0aGlzLCBAZ2VuZXJhdG9y
RmllbGRUaGlzKSwgdmFsdWUsIHZhbHVlLCBAR2VuZXJhdG9yUmVzdW1lTW9kZVJldHVybik7CiB9
CiAKIGZ1bmN0aW9uIHRocm93KGV4Y2VwdGlvbikKIHsKICAgICAidXNlIHN0cmljdCI7CiAKLSAg
ICB2YXIgc3RhdGUgPSBAZ2V0QnlJZERpcmVjdFByaXZhdGUodGhpcywgImdlbmVyYXRvclN0YXRl
Iik7Ci0gICAgaWYgKHR5cGVvZiBzdGF0ZSAhPT0gIm51bWJlciIpCisgICAgaWYgKCFAaXNHZW5l
cmF0b3IodGhpcykpCiAgICAgICAgIEB0aHJvd1R5cGVFcnJvcigifHRoaXN8IHNob3VsZCBiZSBh
IGdlbmVyYXRvciIpOwogCisgICAgdmFyIHN0YXRlID0gQGdldEdlbmVyYXRvckludGVybmFsRmll
bGQodGhpcywgQGdlbmVyYXRvckZpZWxkU3RhdGUpOwogICAgIGlmIChzdGF0ZSA9PT0gQEdlbmVy
YXRvclN0YXRlRXhlY3V0aW5nKQogICAgICAgICBAdGhyb3dUeXBlRXJyb3IoIkdlbmVyYXRvciBp
cyBleGVjdXRpbmciKTsKIAogICAgIGlmIChzdGF0ZSA9PT0gQEdlbmVyYXRvclN0YXRlQ29tcGxl
dGVkKQogICAgICAgICB0aHJvdyBleGNlcHRpb247CiAKLSAgICByZXR1cm4gQGdlbmVyYXRvclJl
c3VtZSh0aGlzLCBzdGF0ZSwgQGdldEJ5SWREaXJlY3RQcml2YXRlKHRoaXMsICJnZW5lcmF0b3JU
aGlzIiksIGV4Y2VwdGlvbiwgQHVuZGVmaW5lZCwgQEdlbmVyYXRvclJlc3VtZU1vZGVUaHJvdyk7
CisgICAgcmV0dXJuIEBnZW5lcmF0b3JSZXN1bWUodGhpcywgc3RhdGUsIEBnZXRHZW5lcmF0b3JJ
bnRlcm5hbEZpZWxkKHRoaXMsIEBnZW5lcmF0b3JGaWVsZFRoaXMpLCBleGNlcHRpb24sIEB1bmRl
ZmluZWQsIEBHZW5lcmF0b3JSZXN1bWVNb2RlVGhyb3cpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlv
bi5jcHAKaW5kZXggOTU0NGJjYjRjODg2OWIzNDU4NmYxNjZjODc0Y2JiMDgxNTAzZWZkZi4uMjg2
MDUxY2M5NWVhNGQ4ZmRhNjZmYjA5OTdiYjU5M2VkZTdlMzJhNiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmlj
YXRpb24uY3BwCkBAIC0zNiw3ICszNiw3IEBACiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXJJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVz
LmgiCi0jaW5jbHVkZSAiSlNHZW5lcmF0b3JGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTR2VuZXJh
dG9yLmgiCiAjaW5jbHVkZSAiTGFiZWwuaCIKICNpbmNsdWRlICJTdHJvbmdJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiVW5saW5rZWRDb2RlQmxvY2suaCIKQEAgLTIyMyw3ICsyMjMsNyBAQCB2b2lkIEJ5
dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uOjpydW4oKQogICAgIHsKICAgICAgICAgYXV0byBuZXh0
VG9FbnRlclBvaW50ID0gZW50ZXJQb2ludCgpLm5leHQoKTsKICAgICAgICAgdW5zaWduZWQgc3dp
dGNoVGFibGVJbmRleCA9IG1fY29kZUJsb2NrLT5udW1iZXJPZlN3aXRjaEp1bXBUYWJsZXMoKTsK
LSAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHN0YXRlID0gdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1l
bnQoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yQXJn
dW1lbnQ6OlN0YXRlKSk7CisgICAgICAgIFZpcnR1YWxSZWdpc3RlciBzdGF0ZSA9IHZpcnR1YWxS
ZWdpc3RlckZvckFyZ3VtZW50KHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpHZW5l
cmF0b3JBcmd1bWVudDo6U3RhdGUpKTsKICAgICAgICAgYXV0byYganVtcFRhYmxlID0gbV9jb2Rl
QmxvY2stPmFkZFN3aXRjaEp1bXBUYWJsZSgpOwogICAgICAgICBqdW1wVGFibGUubWluID0gMDsK
ICAgICAgICAganVtcFRhYmxlLmJyYW5jaE9mZnNldHMucmVzaXplKG1feWllbGRzLnNpemUoKSAr
IDEpOwpAQCAtMjM4LDcgKzIzOCw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb246
OnJ1bigpCiAgICAgfQogCiAgICAgZm9yIChjb25zdCBZaWVsZERhdGEmIGRhdGEgOiBtX3lpZWxk
cykgewotICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgc2NvcGUgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JB
cmd1bWVudChzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0
b3JBcmd1bWVudDo6RnJhbWUpKTsKKyAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHNjb3BlID0gdmly
dHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6
OkdlbmVyYXRvckFyZ3VtZW50OjpGcmFtZSkpOwogCiAgICAgICAgIGF1dG8gaW5zdHJ1Y3Rpb24g
PSBtX2luc3RydWN0aW9ucy5hdChkYXRhLnBvaW50KTsKICAgICAgICAgLy8gRW1pdCBzYXZlIHNl
cXVlbmNlLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlSW50cmluc2ljUmVnaXN0cnkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuY3BwCmluZGV4IDE5ODQ0M2Q1MzFmYzZjNzllN2Vh
MTU1MzhiMjMwMWZlYmZmNDVmNmQuLjNhZDJiYWQ0NTM1ZjIyMGZkZTRjM2NhYTc0ZjNiMDgzNWYz
OWEwMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUludHJpbnNpY1JlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKICNpbmNs
dWRlICJJdGVyYXRpb25LaW5kLmgiCiAjaW5jbHVkZSAiSlNBc3luY0dlbmVyYXRvckZ1bmN0aW9u
LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgotI2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVuY3Rp
b24uaCIKKyNpbmNsdWRlICJKU0dlbmVyYXRvci5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0
LmgiCiAjaW5jbHVkZSAiSlNNb2R1bGVMb2FkZXIuaCIKICNpbmNsdWRlICJKU1Byb21pc2UuaCIK
QEAgLTc0LDExICs3NCwxNSBAQCBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5OjpCeXRlY29kZUlu
dHJpbnNpY1JlZ2lzdHJ5KFZNJiB2bSkKICAgICBtX3Byb21pc2VGbGFnc0lzRmlyc3RSZXNvbHZp
bmdGdW5jdGlvbkNhbGxlZC5zZXQobV92bSwganNOdW1iZXIoSlNQcm9taXNlOjppc0ZpcnN0UmVz
b2x2aW5nRnVuY3Rpb25DYWxsZWRGbGFnKSk7CiAgICAgbV9wcm9taXNlRmllbGRGbGFncy5zZXQo
bV92bSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTUHJvbWlzZTo6RmllbGQ6OkZs
YWdzKSkpOwogICAgIG1fcHJvbWlzZUZpZWxkUmVhY3Rpb25zT3JSZXN1bHQuc2V0KG1fdm0sIGpz
TnVtYmVyKHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU1Byb21pc2U6OkZpZWxkOjpSZWFjdGlvbnNP
clJlc3VsdCkpKTsKLSAgICBtX0dlbmVyYXRvclJlc3VtZU1vZGVOb3JtYWwuc2V0KG1fdm0sIGpz
TnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRv
clJlc3VtZU1vZGU6Ok5vcm1hbE1vZGUpKSk7Ci0gICAgbV9HZW5lcmF0b3JSZXN1bWVNb2RlVGhy
b3cuc2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVu
Y3Rpb246OkdlbmVyYXRvclJlc3VtZU1vZGU6OlRocm93TW9kZSkpKTsKLSAgICBtX0dlbmVyYXRv
clJlc3VtZU1vZGVSZXR1cm4uc2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+
KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvclJlc3VtZU1vZGU6OlJldHVybk1vZGUpKSk7
Ci0gICAgbV9HZW5lcmF0b3JTdGF0ZUNvbXBsZXRlZC5zZXQobV92bSwganNOdW1iZXIoc3RhdGlj
X2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yU3RhdGU6OkNvbXBs
ZXRlZCkpKTsKLSAgICBtX0dlbmVyYXRvclN0YXRlRXhlY3V0aW5nLnNldChtX3ZtLCBqc051bWJl
cihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JTdGF0
ZTo6RXhlY3V0aW5nKSkpOworICAgIG1fZ2VuZXJhdG9yRmllbGRTdGF0ZS5zZXQobV92bSwganNO
dW1iZXIoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTR2VuZXJhdG9yOjpGaWVsZDo6U3RhdGUpKSk7
CisgICAgbV9nZW5lcmF0b3JGaWVsZE5leHQuc2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0dlbmVyYXRvcjo6RmllbGQ6Ok5leHQpKSk7CisgICAgbV9nZW5lcmF0b3JG
aWVsZFRoaXMuc2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0dlbmVy
YXRvcjo6RmllbGQ6OlRoaXMpKSk7CisgICAgbV9nZW5lcmF0b3JGaWVsZEZyYW1lLnNldChtX3Zt
LCBqc051bWJlcihzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNHZW5lcmF0b3I6OkZpZWxkOjpGcmFt
ZSkpKTsKKyAgICBtX0dlbmVyYXRvclJlc3VtZU1vZGVOb3JtYWwuc2V0KG1fdm0sIGpzTnVtYmVy
KHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpHZW5lcmF0b3JSZXN1bWVNb2RlOjpO
b3JtYWxNb2RlKSkpOworICAgIG1fR2VuZXJhdG9yUmVzdW1lTW9kZVRocm93LnNldChtX3ZtLCBq
c051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9yUmVzdW1l
TW9kZTo6VGhyb3dNb2RlKSkpOworICAgIG1fR2VuZXJhdG9yUmVzdW1lTW9kZVJldHVybi5zZXQo
bV92bSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6OkdlbmVyYXRv
clJlc3VtZU1vZGU6OlJldHVybk1vZGUpKSk7CisgICAgbV9HZW5lcmF0b3JTdGF0ZUNvbXBsZXRl
ZC5zZXQobV92bSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6Okdl
bmVyYXRvclN0YXRlOjpDb21wbGV0ZWQpKSk7CisgICAgbV9HZW5lcmF0b3JTdGF0ZUV4ZWN1dGlu
Zy5zZXQobV92bSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6Okdl
bmVyYXRvclN0YXRlOjpFeGVjdXRpbmcpKSk7CiAgICAgbV9Bc3luY0dlbmVyYXRvclN0YXRlQ29t
cGxldGVkLnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0FzeW5jR2Vu
ZXJhdG9yRnVuY3Rpb246OkFzeW5jR2VuZXJhdG9yU3RhdGU6OkNvbXBsZXRlZCkpKTsKICAgICBt
X0FzeW5jR2VuZXJhdG9yU3RhdGVFeGVjdXRpbmcuc2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRpY19j
YXN0PGludDMyX3Q+KEpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbjo6QXN5bmNHZW5lcmF0b3JTdGF0
ZTo6RXhlY3V0aW5nKSkpOwogICAgIG1fQXN5bmNHZW5lcmF0b3JTdGF0ZVN1c3BlbmRlZFN0YXJ0
LnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0FzeW5jR2VuZXJhdG9y
RnVuY3Rpb246OkFzeW5jR2VuZXJhdG9yU3RhdGU6OlN1c3BlbmRlZFN0YXJ0KSkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVn
aXN0cnkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNp
Y1JlZ2lzdHJ5LmgKaW5kZXggZDVmNmMzYjA1ZWViODk2NTlhY2Q5ODdiMTZmMjBjOTQzNmJiYTc1
MC4uMjgwYjdmOTA2ZDY1ZTUwZmZiNzY3NWUxMWVhMmUyOTNiN2Q1N2VhOSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnku
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNS
ZWdpc3RyeS5oCkBAIC00MiwxMSArNDIsMTMgQEAgY2xhc3MgUmVnaXN0ZXJJRDsKICAgICBtYWNy
byhnZXRCeUlkRGlyZWN0KSBcCiAgICAgbWFjcm8oZ2V0QnlJZERpcmVjdFByaXZhdGUpIFwKICAg
ICBtYWNybyhnZXRQcm9taXNlSW50ZXJuYWxGaWVsZCkgXAorICAgIG1hY3JvKGdldEdlbmVyYXRv
ckludGVybmFsRmllbGQpIFwKICAgICBtYWNybyhpZFdpdGhQcm9maWxlKSBcCiAgICAgbWFjcm8o
aXNPYmplY3QpIFwKICAgICBtYWNybyhpc0pTQXJyYXkpIFwKICAgICBtYWNybyhpc1Byb3h5T2Jq
ZWN0KSBcCiAgICAgbWFjcm8oaXNEZXJpdmVkQXJyYXkpIFwKKyAgICBtYWNybyhpc0dlbmVyYXRv
cikgXAogICAgIG1hY3JvKGlzUHJvbWlzZSkgXAogICAgIG1hY3JvKGlzUmVnRXhwT2JqZWN0KSBc
CiAgICAgbWFjcm8oaXNNYXApIFwKQEAgLTYxLDYgKzYzLDcgQEAgY2xhc3MgUmVnaXN0ZXJJRDsK
ICAgICBtYWNybyhwdXRCeUlkRGlyZWN0UHJpdmF0ZSkgXAogICAgIG1hY3JvKHB1dEJ5VmFsRGly
ZWN0KSBcCiAgICAgbWFjcm8ocHV0UHJvbWlzZUludGVybmFsRmllbGQpIFwKKyAgICBtYWNybyhw
dXRHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKSBcCiAgICAgbWFjcm8odG9OdW1iZXIpIFwKICAgICBt
YWNybyh0b1N0cmluZykgXAogICAgIG1hY3JvKHRvT2JqZWN0KSBcCkBAIC05OCw2ICsxMDEsMTAg
QEAgY2xhc3MgUmVnaXN0ZXJJRDsKICAgICBtYWNybyhwcm9taXNlRmxhZ3NJc0ZpcnN0UmVzb2x2
aW5nRnVuY3Rpb25DYWxsZWQpIFwKICAgICBtYWNybyhwcm9taXNlRmllbGRGbGFncykgXAogICAg
IG1hY3JvKHByb21pc2VGaWVsZFJlYWN0aW9uc09yUmVzdWx0KSBcCisgICAgbWFjcm8oZ2VuZXJh
dG9yRmllbGRTdGF0ZSkgXAorICAgIG1hY3JvKGdlbmVyYXRvckZpZWxkTmV4dCkgXAorICAgIG1h
Y3JvKGdlbmVyYXRvckZpZWxkVGhpcykgXAorICAgIG1hY3JvKGdlbmVyYXRvckZpZWxkRnJhbWUp
IFwKICAgICBtYWNybyhHZW5lcmF0b3JSZXN1bWVNb2RlTm9ybWFsKSBcCiAgICAgbWFjcm8oR2Vu
ZXJhdG9yUmVzdW1lTW9kZVRocm93KSBcCiAgICAgbWFjcm8oR2VuZXJhdG9yUmVzdW1lTW9kZVJl
dHVybikgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlTGlzdC5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3Qu
cmIKaW5kZXggM2IzOTk4YWI1MGNkNjIwMzA5YmFjNmQ2N2ZkNjkxOGZmNGEwMWE3NS4uMWJhNDFm
MTA2YjdhMTE1MTI1NTcxMmY2YTNkOTMzNzcwZjJkNzNmMSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCkBAIC0xMzQsNiArMTM0LDIwIEBACiAg
ICAgICAgIGlzSW50ZXJuYWxQcm9taXNlOiBib29sLAogICAgIH0KIAorb3AgOmNyZWF0ZV9nZW5l
cmF0b3IsCisgICAgYXJnczogeworICAgICAgICBkc3Q6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAg
ICAgY2FsbGVlOiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgfSwKKyAgICBtZXRhZGF0YTogeworICAg
ICAgICBjYWNoZWRDYWxsZWU6IFdyaXRlQmFycmllcltKU0NlbGxdCisgICAgfQorCitvcCA6bmV3
X2dlbmVyYXRvciwKKyAgICBhcmdzOiB7CisgICAgICAgIGRzdDogVmlydHVhbFJlZ2lzdGVyLAor
ICAgIH0KKwogb3AgOmdldF9hcmd1bWVudCwKICAgICBhcmdzOiB7CiAgICAgICAgIGRzdDogVmly
dHVhbFJlZ2lzdGVyLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlVXNlRGVmLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVVc2VEZWYuaAppbmRleCBiZTA4NTk2NDBmYjEwN2RlOGI3ODJiY2ZhNTA4MWJjN2QxYzc5YmMy
Li40MDc5MjQ5OTY1ZDU2MThlOTNmOTg2NzI0NzI0ZWNjMzczMjAxNWM3IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaApAQCAtODAsNiArODAs
NyBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqIGNvZGVCbG9jaywg
T3Bjb2RlSUQgb3Bjb2RlSUQsIGNvbnN0IElucwogICAgIGNhc2Ugb3Bfam1wOgogICAgIGNhc2Ug
b3BfbmV3X29iamVjdDoKICAgICBjYXNlIG9wX25ld19wcm9taXNlOgorICAgIGNhc2Ugb3BfbmV3
X2dlbmVyYXRvcjoKICAgICBjYXNlIG9wX2VudGVyOgogICAgIGNhc2Ugb3BfYXJndW1lbnRfY291
bnQ6CiAgICAgY2FzZSBvcF9jYXRjaDoKQEAgLTE5NCw2ICsxOTUsNyBAQCB2b2lkIGNvbXB1dGVV
c2VzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqIGNvZGVCbG9jaywgT3Bjb2RlSUQgb3Bjb2RlSUQs
IGNvbnN0IElucwogICAgIFVTRVMoT3BOZXdBcnJheVdpdGhTaXplLCBsZW5ndGgpCiAgICAgVVNF
UyhPcENyZWF0ZVRoaXMsIGNhbGxlZSkKICAgICBVU0VTKE9wQ3JlYXRlUHJvbWlzZSwgY2FsbGVl
KQorICAgIFVTRVMoT3BDcmVhdGVHZW5lcmF0b3IsIGNhbGxlZSkKICAgICBVU0VTKE9wRGVsQnlJ
ZCwgYmFzZSkKICAgICBVU0VTKE9wTmV3RnVuYywgc2NvcGUpCiAgICAgVVNFUyhPcE5ld0FzeW5j
R2VuZXJhdG9yRnVuYywgc2NvcGUpCkBAIC0zODUsNiArMzg3LDcgQEAgdm9pZCBjb21wdXRlRGVm
c0ZvckJ5dGVjb2RlT2Zmc2V0KEJsb2NrKiBjb2RlQmxvY2ssIE9wY29kZUlEIG9wY29kZUlELCBj
b25zdCBJbnMKICAgICBERUZTKE9wVG9QcmltaXRpdmUsIGRzdCkKICAgICBERUZTKE9wQ3JlYXRl
VGhpcywgZHN0KQogICAgIERFRlMoT3BDcmVhdGVQcm9taXNlLCBkc3QpCisgICAgREVGUyhPcENy
ZWF0ZUdlbmVyYXRvciwgZHN0KQogICAgIERFRlMoT3BOZXdBcnJheSwgZHN0KQogICAgIERFRlMo
T3BOZXdBcnJheVdpdGhTcHJlYWQsIGRzdCkKICAgICBERUZTKE9wU3ByZWFkLCBkc3QpCkBAIC00
NjUsNiArNDY4LDcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KEJsb2NrKiBj
b2RlQmxvY2ssIE9wY29kZUlEIG9wY29kZUlELCBjb25zdCBJbnMKICAgICBERUZTKE9wTW92LCBk
c3QpCiAgICAgREVGUyhPcE5ld09iamVjdCwgZHN0KQogICAgIERFRlMoT3BOZXdQcm9taXNlLCBk
c3QpCisgICAgREVGUyhPcE5ld0dlbmVyYXRvciwgZHN0KQogICAgIERFRlMoT3BUb1RoaXMsIHNy
Y0RzdCkKICAgICBERUZTKE9wR2V0U2NvcGUsIGRzdCkKICAgICBERUZTKE9wQ3JlYXRlRGlyZWN0
QXJndW1lbnRzLCBkc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suY3BwCmluZGV4IDEzODJmNjljYjU4NmU3MGQ0NzE5NjkwZmRjM2M5NTcyYWU5MTQ4ZTIuLjVi
NGFiMTUxZDZlOTJkYjNiYjZiMTA2NGI5ODJkNjA5YjMwZDhjMmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC01NjgsNiArNTY4LDcgQEAgYm9v
bCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3du
ZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAgICAgTElOSyhPcFB1dEJ5SWQpCiAgICAgICAgIExJ
TksoT3BDcmVhdGVUaGlzKQogICAgICAgICBMSU5LKE9wQ3JlYXRlUHJvbWlzZSkKKyAgICAgICAg
TElOSyhPcENyZWF0ZUdlbmVyYXRvcikKIAogICAgICAgICBMSU5LKE9wQWRkKQogICAgICAgICBM
SU5LKE9wTXVsKQpAQCAtMTI3NCw2ICsxMjc1LDkgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXpl
TExJbnRJbmxpbmVDYWNoZXMoKQogICAgICAgICBtX21ldGFkYXRhLT5mb3JFYWNoPE9wQ3JlYXRl
UHJvbWlzZT4oWyZdIChhdXRvJiBtZXRhZGF0YSkgewogICAgICAgICAgICAgaGFuZGxlQ3JlYXRl
Qnl0ZWNvZGUobWV0YWRhdGEsICJvcF9jcmVhdGVfcHJvbWlzZSJfcyk7CiAgICAgICAgIH0pOwor
ICAgICAgICBtX21ldGFkYXRhLT5mb3JFYWNoPE9wQ3JlYXRlR2VuZXJhdG9yPihbJl0gKGF1dG8m
IG1ldGFkYXRhKSB7CisgICAgICAgICAgICBoYW5kbGVDcmVhdGVCeXRlY29kZShtZXRhZGF0YSwg
Im9wX2NyZWF0ZV9nZW5lcmF0b3IiX3MpOworICAgICAgICB9KTsKIAogICAgICAgICBtX21ldGFk
YXRhLT5mb3JFYWNoPE9wUmVzb2x2ZVNjb3BlPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7CiAgICAg
ICAgICAgICAvLyBSaWdodCBub3cgdGhpcyBpc24ndCBzdHJpY3RseSBuZWNlc3NhcnkuIEFueSBz
eW1ib2wgdGFibGVzIHRoYXQgdGhpcyB3aWxsIHJlZmVyIHRvCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcAppbmRleCA0MmI2MjZjMDVlZTFm
NTE4NDYwNmVhNmRhOTQwZmYxOWFhMjMwMjc4Li42ZDRlMjIwMzJiMWRkZTA0ZWJjMmZiNmJiNWQ5
MDFlYmE5ZTMwOWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
U3BlY3VsYXRlZFR5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9T
cGVjdWxhdGVkVHlwZS5jcHAKQEAgLTU3OSw3ICs1NzksNyBAQCBUeXBlZEFycmF5VHlwZSB0eXBl
ZEFycmF5VHlwZUZyb21TcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB0eXBlKQogICAgIHJldHVy
biBOb3RUeXBlZEFycmF5OwogfQogCi1TcGVjdWxhdGVkVHlwZSBzcGVjdWxhdGlvbkZyb21KU1R5
cGUoSlNUeXBlIHR5cGUpCitPcHRpb25hbDxTcGVjdWxhdGVkVHlwZT4gc3BlY3VsYXRpb25Gcm9t
SlNUeXBlKEpTVHlwZSB0eXBlKQogewogICAgIHN3aXRjaCAodHlwZSkgewogICAgIGNhc2UgU3Ry
aW5nVHlwZToKQEAgLTYwOSw5ICs2MDksOCBAQCBTcGVjdWxhdGVkVHlwZSBzcGVjdWxhdGlvbkZy
b21KU1R5cGUoSlNUeXBlIHR5cGUpCiAgICAgY2FzZSBEYXRhVmlld1R5cGU6CiAgICAgICAgIHJl
dHVybiBTcGVjRGF0YVZpZXdPYmplY3Q7CiAgICAgZGVmYXVsdDoKLSAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgfQotICAgIHJl
dHVybiBTcGVjTm9uZTsKIH0KIAogU3BlY3VsYXRlZFR5cGUgbGVhc3RVcHBlckJvdW5kT2ZTdHJp
Y3RseUVxdWl2YWxlbnRTcGVjdWxhdGlvbnMoU3BlY3VsYXRlZFR5cGUgdHlwZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgKaW5kZXggZWU1ZTQy
NjIzNjAxZTkyMmFhMmI2MjRjMTE3Y2I0ZDYxZDVhNjU3MS4uYTUxNjhiNzc3ZTlkOWNiYTk0MzQ0
NjRhMWEwODA2ZDJiMDJhODc4ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1NwZWN1bGF0ZWRUeXBlLmgKQEAgLTQ5Nyw3ICs0OTcsNyBAQCBKU19FWFBPUlRfUFJJVkFU
RSBTcGVjdWxhdGVkVHlwZSBzcGVjdWxhdGlvbkZyb21WYWx1ZShKU1ZhbHVlKTsKIC8vIElmIGl0
J3MgYW4gYW55SW50KCksIGl0J2xsIHJldHVybiBzcGVjdWxhdGVkIHR5cGVzIGZyb20gdGhlIElu
dDUyIGxhdHRpY2UuCiAvLyBPdGhlcndpc2UsIGl0J2xsIHJldHVybiB0eXBlcyBmcm9tIHRoZSBK
U1ZhbHVlIGxhdHRpY2UuCiBKU19FWFBPUlRfUFJJVkFURSBTcGVjdWxhdGVkVHlwZSBpbnQ1MkF3
YXJlU3BlY3VsYXRpb25Gcm9tVmFsdWUoSlNWYWx1ZSk7Ci1TcGVjdWxhdGVkVHlwZSBzcGVjdWxh
dGlvbkZyb21KU1R5cGUoSlNUeXBlKTsKK09wdGlvbmFsPFNwZWN1bGF0ZWRUeXBlPiBzcGVjdWxh
dGlvbkZyb21KU1R5cGUoSlNUeXBlKTsKIAogU3BlY3VsYXRlZFR5cGUgc3BlY3VsYXRpb25Gcm9t
VHlwZWRBcnJheVR5cGUoVHlwZWRBcnJheVR5cGUpOyAvLyBvbmx5IHZhbGlkIGZvciB0eXBlZCB2
aWV3cy4KIFR5cGVkQXJyYXlUeXBlIHR5cGVkQXJyYXlUeXBlRnJvbVNwZWN1bGF0aW9uKFNwZWN1
bGF0ZWRUeXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggNjg4MzU0NTYzMGUzZWJlY2ZjNTIwMDRj
NTAwZmIyYjcyNGNhNDJjMS4uZmI0N2I1ZTNiYTZkNzk2ODhmZmI2MWQzZjVkMmNhYTVkMDVhMjg1
NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTY4Myw3ICs2ODMsMTcgQEAgQnl0ZWNvZGVHZW5lcmF0
b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUs
IFVubGlua2UKIAogICAgIHN3aXRjaCAocGFyc2VNb2RlKSB7CiAgICAgY2FzZSBTb3VyY2VQYXJz
ZU1vZGU6OkdlbmVyYXRvcldyYXBwZXJGdW5jdGlvbk1vZGU6Ci0gICAgY2FzZSBTb3VyY2VQYXJz
ZU1vZGU6OkdlbmVyYXRvcldyYXBwZXJNZXRob2RNb2RlOgorICAgIGNhc2UgU291cmNlUGFyc2VN
b2RlOjpHZW5lcmF0b3JXcmFwcGVyTWV0aG9kTW9kZTogeworICAgICAgICBtX2dlbmVyYXRvclJl
Z2lzdGVyID0gYWRkVmFyKCk7CisKKyAgICAgICAgLy8gRklYTUU6IEVtaXQgdG9fdGhpcyBvbmx5
IHdoZW4gR2VuZXJhdG9yIHVzZXMgaXQuCisgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1ODYKKyAgICAgICAgZW1pdFRvVGhpcygpOworCisgICAg
ICAgIGVtaXRDcmVhdGVHZW5lcmF0b3IobV9nZW5lcmF0b3JSZWdpc3RlciwgJm1fY2FsbGVlUmVn
aXN0ZXIpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9k
ZTo6QXN5bmNHZW5lcmF0b3JXcmFwcGVyTWV0aG9kTW9kZToKICAgICBjYXNlIFNvdXJjZVBhcnNl
TW9kZTo6QXN5bmNHZW5lcmF0b3JXcmFwcGVyRnVuY3Rpb25Nb2RlOiB7CiAgICAgICAgIG1fZ2Vu
ZXJhdG9yUmVnaXN0ZXIgPSBhZGRWYXIoKTsKQEAgLTcxMSw3ICs3MjEsNyBAQCBCeXRlY29kZUdl
bmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9u
Tm9kZSwgVW5saW5rZQogICAgICAgICAgICAgZW1pdFRvVGhpcygpOwogICAgICAgICB9CiAKLSAg
ICAgICAgZW1pdE5ld09iamVjdChtX2dlbmVyYXRvclJlZ2lzdGVyKTsKKyAgICAgICAgZW1pdE5l
d0dlbmVyYXRvcihtX2dlbmVyYXRvclJlZ2lzdGVyKTsKICAgICAgICAgZW1pdE5ld1Byb21pc2Uo
cHJvbWlzZVJlZ2lzdGVyKCksIG1faXNCdWlsdGluRnVuY3Rpb24pOwogICAgICAgICBicmVhazsK
ICAgICB9CkBAIC04NjYsNyArODc2LDEwIEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdl
bmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAg
ICAgICAgICAvLyBHZW5lcmF0b3JpZmljYXRpb24gaW5zZXJ0cyBsZXhpY2FsIGVudmlyb25tZW50
IGNyZWF0aW9uIGlmIG5lY2Vzc2FyeS4gT3RoZXJ3aXNlLCB3ZSBjb252ZXJ0IGl0IHRvIG9wX21v
diBmcmFtZSwgYHVuZGVmaW5lZGAuCiAgICAgICAgICAgICBPcENyZWF0ZUdlbmVyYXRvckZyYW1l
RW52aXJvbm1lbnQ6OmVtaXQodGhpcywgZ2VuZXJhdG9yRnJhbWVSZWdpc3RlcigpLCBzY29wZVJl
Z2lzdGVyKCksIFZpcnR1YWxSZWdpc3RlciB7IHN5bWJvbFRhYmxlQ29uc3RhbnRJbmRleCB9LCBh
ZGRDb25zdGFudFZhbHVlKGpzVW5kZWZpbmVkKCkpKTsKICAgICAgICAgfQotICAgICAgICBlbWl0
UHV0QnlJZChnZW5lcmF0b3JSZWdpc3RlcigpLCBwcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVz
KCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSgpLCBnZW5lcmF0b3JGcmFtZVJlZ2lzdGVyKCkp
OworICAgICAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNHZW5lcmF0
b3JCb2R5TW9kZSkKKyAgICAgICAgICAgIGVtaXRQdXRCeUlkKGdlbmVyYXRvclJlZ2lzdGVyKCks
IHByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1l
KCksIGdlbmVyYXRvckZyYW1lUmVnaXN0ZXIoKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IGVtaXRQdXRJbnRlcm5hbEZpZWxkKGdlbmVyYXRvclJlZ2lzdGVyKCksIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0dlbmVyYXRvcjo6RmllbGQ6OkZyYW1lKSwgZ2VuZXJhdG9yRnJhbWVSZWdpc3Rl
cigpKTsKICAgICB9CiAKICAgICBib29sIHNob3VsZEluaXRpYWxpemVCbG9ja1Njb3BlZEZ1bmN0
aW9ucyA9IGZhbHNlOyAvLyBXZSBnZW5lcmF0ZSB0b3AtbGV2ZWwgZnVuY3Rpb24gZGVjbGFyYXRp
b25zIGluIDo6Z2VuZXJhdGUoKS4KQEAgLTI2OTgsMjAgKzI3MTEsMTIgQEAgdm9pZCBCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdFB1dFNldHRlckJ5VmFsKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVy
SUQqIHByb3BlcnQKIAogdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dEdlbmVyYXRvckZp
ZWxkcyhSZWdpc3RlcklEKiBuZXh0RnVuY3Rpb24pCiB7Ci0gICAgLy8gRklYTUU6IEN1cnJlbnRs
eSwgd2UganVzdCBjcmVhdGUgYW4gb2JqZWN0IGFuZCBzdG9yZSBnZW5lcmF0b3IgcmVsYXRlZCBm
aWVsZHMgYXMgaXRzIHByb3BlcnRpZXMgZm9yIGVhc2UuCi0gICAgLy8gQnV0IHRvIG1ha2UgaXQg
ZWZmaWNpZW50LCB3ZSB3aWxsIGludHJvZHVjZSBKU0dlbmVyYXRvciBjbGFzcywgYWRkIG9wY29k
ZSBuZXdfZ2VuZXJhdG9yIGFuZCB1c2UgaXRzIEMrKyBmaWVsZHMgaW5zdGVhZCBvZiB0aGVzZSBw
cml2YXRlIHByb3BlcnRpZXMuCi0gICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE1MTU0NQotCi0gICAgZW1pdERpcmVjdFB1dEJ5SWQobV9nZW5lcmF0b3JSZWdp
c3RlciwgcHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvck5leHRQcml2YXRl
TmFtZSgpLCBuZXh0RnVuY3Rpb24sIFByb3BlcnR5Tm9kZTo6S25vd25EaXJlY3QpOworICAgIGVt
aXRQdXRJbnRlcm5hbEZpZWxkKG1fZ2VuZXJhdG9yUmVnaXN0ZXIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0dlbmVyYXRvcjo6RmllbGQ6Ok5leHQpLCBuZXh0RnVuY3Rpb24pOwogCiAgICAgLy8g
V2UgZG8gbm90IHN0b3JlICd0aGlzJyBpbiBhcnJvdyBmdW5jdGlvbiB3aXRoaW4gY29uc3RydWN0
b3IsCiAgICAgLy8gYmVjYXVzZSBpdCBtaWdodCBiZSBub3QgaW5pdGlhbGl6ZWQsIGlmIHN1cGVy
IGlzIGNhbGxlZCBsYXRlci4KICAgICBpZiAoIShpc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQo
KSAmJiBtX2NvZGVCbG9jay0+cGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpBc3luY0Fy
cm93RnVuY3Rpb25Nb2RlKSkKLSAgICAgICAgZW1pdERpcmVjdFB1dEJ5SWQobV9nZW5lcmF0b3JS
ZWdpc3RlciwgcHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclRoaXNQcml2
YXRlTmFtZSgpLCAmbV90aGlzUmVnaXN0ZXIsIFByb3BlcnR5Tm9kZTo6S25vd25EaXJlY3QpOwot
Ci0gICAgZW1pdERpcmVjdFB1dEJ5SWQobV9nZW5lcmF0b3JSZWdpc3RlciwgcHJvcGVydHlOYW1l
cygpLmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclN0YXRlUHJpdmF0ZU5hbWUoKSwgZW1pdExvYWQo
bnVsbHB0ciwganNOdW1iZXIoMCkpLCBQcm9wZXJ0eU5vZGU6Oktub3duRGlyZWN0KTsKLQotICAg
IGVtaXREaXJlY3RQdXRCeUlkKG1fZ2VuZXJhdG9yUmVnaXN0ZXIsIHByb3BlcnR5TmFtZXMoKS5i
dWlsdGluTmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lKCksIGVtaXRMb2FkKG51bGxw
dHIsIGpzTnVsbCgpKSwgUHJvcGVydHlOb2RlOjpLbm93bkRpcmVjdCk7CisgICAgICAgIGVtaXRQ
dXRJbnRlcm5hbEZpZWxkKG1fZ2VuZXJhdG9yUmVnaXN0ZXIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0dlbmVyYXRvcjo6RmllbGQ6OlRoaXMpLCAmbV90aGlzUmVnaXN0ZXIpOwogfQogCiB2b2lk
IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0QXN5bmNHZW5lcmF0b3JGaWVsZHMoUmVnaXN0ZXJJ
RCogbmV4dEZ1bmN0aW9uKQpAQCAtMjg1OCw2ICsyODYzLDE4IEBAIFJlZ2lzdGVySUQqIEJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0TmV3UHJvbWlzZShSZWdpc3RlcklEKiBkc3QsIGJvb2wgaXNJbnRl
cm5hbFByCiAgICAgcmV0dXJuIGRzdDsKIH0KIAorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXRDcmVhdGVHZW5lcmF0b3IoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBuZXdU
YXJnZXQpCit7CisgICAgT3BDcmVhdGVHZW5lcmF0b3I6OmVtaXQodGhpcywgZHN0LCBuZXdUYXJn
ZXQpOworICAgIHJldHVybiBkc3Q7Cit9CisKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0TmV3R2VuZXJhdG9yKFJlZ2lzdGVySUQqIGRzdCkKK3sKKyAgICBPcE5ld0dlbmVyYXRv
cjo6ZW1pdCh0aGlzLCBkc3QpOworICAgIHJldHVybiBkc3Q7Cit9CisKIHZvaWQgQnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRURFpDaGVjayhSZWdpc3RlcklEKiB0YXJnZXQpCiB7CiAgICAgT3BDaGVj
a1Rkejo6ZW1pdCh0aGlzLCB0YXJnZXQpOwpAQCAtNDU0NCwxMSArNDU2MSwxMSBAQCBSZWdpc3Rl
cklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFlpZWxkKFJlZ2lzdGVySUQqIGFyZ3VtZW50LCBK
U0FzeW5jR2VuZXJhdG9yRgogCiAgICAgUmVmPExhYmVsPiBub3JtYWxMYWJlbCA9IG5ld0xhYmVs
KCk7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGNvbmRpdGlvbiA9IG5ld1RlbXBvcmFyeSgpOwot
ICAgIGVtaXRFcXVhbGl0eU9wPE9wU3RyaWN0ZXE+KGNvbmRpdGlvbi5nZXQoKSwgZ2VuZXJhdG9y
UmVzdW1lTW9kZVJlZ2lzdGVyKCksIGVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0YXRpY19j
YXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvclJlc3VtZU1vZGU6Ok5v
cm1hbE1vZGUpKSkpOworICAgIGVtaXRFcXVhbGl0eU9wPE9wU3RyaWN0ZXE+KGNvbmRpdGlvbi5n
ZXQoKSwgZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCksIGVtaXRMb2FkKG51bGxwdHIsIGpz
TnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpHZW5lcmF0b3JSZXN1bWVN
b2RlOjpOb3JtYWxNb2RlKSkpKTsKICAgICBlbWl0SnVtcElmVHJ1ZShjb25kaXRpb24uZ2V0KCks
IG5vcm1hbExhYmVsLmdldCgpKTsKIAogICAgIFJlZjxMYWJlbD4gdGhyb3dMYWJlbCA9IG5ld0xh
YmVsKCk7Ci0gICAgZW1pdEVxdWFsaXR5T3A8T3BTdHJpY3RlcT4oY29uZGl0aW9uLmdldCgpLCBn
ZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSwgZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIo
c3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yUmVzdW1l
TW9kZTo6VGhyb3dNb2RlKSkpKTsKKyAgICBlbWl0RXF1YWxpdHlPcDxPcFN0cmljdGVxPihjb25k
aXRpb24uZ2V0KCksIGdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3RlcigpLCBlbWl0TG9hZChudWxs
cHRyLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9y
UmVzdW1lTW9kZTo6VGhyb3dNb2RlKSkpKTsKICAgICBlbWl0SnVtcElmVHJ1ZShjb25kaXRpb24u
Z2V0KCksIHRocm93TGFiZWwuZ2V0KCkpOwogICAgIC8vIFJldHVybi4KICAgICB7CkBAIC00NjU2
LDEwICs0NjczLDEwIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGVsZWdh
dGVZaWVsZChSZWdpc3RlcklEKiBhcmd1bWVudCwgVGhyb3dhYmxlCiAgICAgICAgICAgICAgICAg
UmVmPExhYmVsPiByZXR1cm5MYWJlbCA9IG5ld0xhYmVsKCk7CiAgICAgICAgICAgICAgICAgewog
ICAgICAgICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gY29uZGl0aW9uID0gbmV3VGVt
cG9yYXJ5KCk7Ci0gICAgICAgICAgICAgICAgICAgIGVtaXRFcXVhbGl0eU9wPE9wU3RyaWN0ZXE+
KGNvbmRpdGlvbi5nZXQoKSwgZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCksIGVtaXRMb2Fk
KG51bGxwdHIsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rp
b246OkdlbmVyYXRvclJlc3VtZU1vZGU6Ok5vcm1hbE1vZGUpKSkpOworICAgICAgICAgICAgICAg
ICAgICBlbWl0RXF1YWxpdHlPcDxPcFN0cmljdGVxPihjb25kaXRpb24uZ2V0KCksIGdlbmVyYXRv
clJlc3VtZU1vZGVSZWdpc3RlcigpLCBlbWl0TG9hZChudWxscHRyLCBqc051bWJlcihzdGF0aWNf
Y2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9yUmVzdW1lTW9kZTo6Tm9ybWFsTW9k
ZSkpKSk7CiAgICAgICAgICAgICAgICAgICAgIGVtaXRKdW1wSWZUcnVlKGNvbmRpdGlvbi5nZXQo
KSwgbm9ybWFsTGFiZWwuZ2V0KCkpOwogCi0gICAgICAgICAgICAgICAgICAgIGVtaXRFcXVhbGl0
eU9wPE9wU3RyaWN0ZXE+KGNvbmRpdGlvbi5nZXQoKSwgZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lz
dGVyKCksIGVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpT
R2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvclJlc3VtZU1vZGU6OlJldHVybk1vZGUpKSkpOwor
ICAgICAgICAgICAgICAgICAgICBlbWl0RXF1YWxpdHlPcDxPcFN0cmljdGVxPihjb25kaXRpb24u
Z2V0KCksIGdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3RlcigpLCBlbWl0TG9hZChudWxscHRyLCBq
c051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9yUmVzdW1l
TW9kZTo6UmV0dXJuTW9kZSkpKSk7CiAgICAgICAgICAgICAgICAgICAgIGVtaXRKdW1wSWZUcnVl
KGNvbmRpdGlvbi5nZXQoKSwgcmV0dXJuTGFiZWwuZ2V0KCkpOwogCiAgICAgICAgICAgICAgICAg
ICAgIC8vIEZhbGx0aHJvdWdoIHRvIFRocm93TW9kZS4KQEAgLTQ3NjEsNyArNDc3OCwxMCBAQCBS
ZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlbGVnYXRlWWllbGQoUmVnaXN0ZXJJ
RCogYXJndW1lbnQsIFRocm93YWJsZQogdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdlbmVy
YXRvclN0YXRlQ2hhbmdlKGludDMyX3Qgc3RhdGUpCiB7CiAgICAgUmVnaXN0ZXJJRCogY29tcGxl
dGVkU3RhdGUgPSBlbWl0TG9hZChudWxscHRyLCBqc051bWJlcihzdGF0ZSkpOwotICAgIGVtaXRQ
dXRCeUlkKGdlbmVyYXRvclJlZ2lzdGVyKCksIHByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMo
KS5nZW5lcmF0b3JTdGF0ZVByaXZhdGVOYW1lKCksIGNvbXBsZXRlZFN0YXRlKTsKKyAgICBpZiAo
bV9jb2RlQmxvY2stPnBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNHZW5lcmF0
b3JCb2R5TW9kZSkKKyAgICAgICAgZW1pdFB1dEJ5SWQoZ2VuZXJhdG9yUmVnaXN0ZXIoKSwgcHJv
cGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclN0YXRlUHJpdmF0ZU5hbWUoKSwg
Y29tcGxldGVkU3RhdGUpOworICAgIGVsc2UKKyAgICAgICAgZW1pdFB1dEludGVybmFsRmllbGQo
Z2VuZXJhdG9yUmVnaXN0ZXIoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTR2VuZXJhdG9yOjpG
aWVsZDo6U3RhdGUpLCBjb21wbGV0ZWRTdGF0ZSk7CiB9CiAKIGJvb2wgQnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXRKdW1wVmlhRmluYWxseUlmTmVlZGVkKGludCB0YXJnZXRMYWJlbFNjb3BlRGVwdGgs
IExhYmVsJiBqdW1wVGFyZ2V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IDk0ZWViMTMyNjEwNmZmNmRkY2Q3
NDkzMWRlYTBhYjI5MTk0ZGRjYzcuLjdhNWYxZDRkZThlMWZjMTI4OTdiMzdmMzQ2N2ZkNTNkM2Qz
N2RiOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTM1LDcgKzM1LDcgQEAKICNpbmNsdWRlICJJbnRlcnBy
ZXRlci5oIgogI2luY2x1ZGUgIkpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbi5oIgogI2luY2x1ZGUg
IkpTQmlnSW50LmgiCi0jaW5jbHVkZSAiSlNHZW5lcmF0b3JGdW5jdGlvbi5oIgorI2luY2x1ZGUg
IkpTR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuaCIK
ICNpbmNsdWRlICJMYWJlbC5oIgogI2luY2x1ZGUgIkxhYmVsU2NvcGUuaCIKQEAgLTcyNCwxMiAr
NzI0LDE0IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRDcmVh
dGVUaGlzKFJlZ2lzdGVySUQqIGRzdCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRDcmVhdGVQ
cm9taXNlKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogbmV3VGFyZ2V0LCBib29sIGlzSW50
ZXJuYWxQcm9taXNlKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdENyZWF0ZUdlbmVyYXRvcihS
ZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIG5ld1RhcmdldCk7CiAgICAgICAgIHZvaWQgZW1p
dFREWkNoZWNrKFJlZ2lzdGVySUQqIHRhcmdldCk7CiAgICAgICAgIGJvb2wgbmVlZHNURFpDaGVj
ayhjb25zdCBWYXJpYWJsZSYpOwogICAgICAgICB2b2lkIGVtaXRURFpDaGVja0lmTmVjZXNzYXJ5
KGNvbnN0IFZhcmlhYmxlJiwgUmVnaXN0ZXJJRCogdGFyZ2V0LCBSZWdpc3RlcklEKiBzY29wZSk7
CiAgICAgICAgIHZvaWQgbGlmdFREWkNoZWNrSWZQb3NzaWJsZShjb25zdCBWYXJpYWJsZSYpOwog
ICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3T2JqZWN0KFJlZ2lzdGVySUQqIGRzdCk7CiAgICAg
ICAgIFJlZ2lzdGVySUQqIGVtaXROZXdQcm9taXNlKFJlZ2lzdGVySUQqIGRzdCwgYm9vbCBpc0lu
dGVybmFsUHJvbWlzZSk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdHZW5lcmF0b3IoUmVn
aXN0ZXJJRCogZHN0KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld0FycmF5KFJlZ2lzdGVy
SUQqIGRzdCwgRWxlbWVudE5vZGUqLCB1bnNpZ25lZCBsZW5ndGgsIEluZGV4aW5nVHlwZSByZWNv
bW1lbmRlZEluZGV4aW5nVHlwZSk7IC8vIHN0b3BzIGF0IGZpcnN0IGVsaXNpb24KICAgICAgICAg
UmVnaXN0ZXJJRCogZW1pdE5ld0FycmF5QnVmZmVyKFJlZ2lzdGVySUQqIGRzdCwgSlNJbW11dGFi
bGVCdXR0ZXJmbHkqLCBJbmRleGluZ1R5cGUgcmVjb21tZW5kZWRJbmRleGluZ1R5cGUpOwogICAg
ICAgICAvLyBGSVhNRTogbmV3X2FycmF5X3dpdGhfc3ByZWFkIHNob3VsZCB1c2UgYW4gYXJyYXkg
YWxsb2NhdGlvbiBwcm9maWxlIGFuZCB0YWtlIGEgcmVjb21tZW5kZWRJbmRleGluZ1R5cGUKQEAg
LTg2Niw2ICs4NjgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dFRvSW5kZXhTdHJpbmcoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBpbmRleCk7CiAKICAg
ICAgICAgUmVnaXN0ZXJJRCogZW1pdElzQ2VsbFdpdGhUeXBlKFJlZ2lzdGVySUQqIGRzdCwgUmVn
aXN0ZXJJRCogc3JjLCBKU1R5cGUpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXNHZW5lcmF0
b3IoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMpIHsgcmV0dXJuIGVtaXRJc0NlbGxX
aXRoVHlwZShkc3QsIHNyYywgSlNHZW5lcmF0b3JUeXBlKTsgfQogICAgICAgICBSZWdpc3RlcklE
KiBlbWl0SXNKU0FycmF5KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjKSB7IHJldHVy
biBlbWl0SXNDZWxsV2l0aFR5cGUoZHN0LCBzcmMsIEFycmF5VHlwZSk7IH0KICAgICAgICAgUmVn
aXN0ZXJJRCogZW1pdElzUHJvbWlzZShSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYykg
eyByZXR1cm4gZW1pdElzQ2VsbFdpdGhUeXBlKGRzdCwgc3JjLCBKU1Byb21pc2VUeXBlKTsgfQog
ICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXNQcm94eU9iamVjdChSZWdpc3RlcklEKiBkc3QsIFJl
Z2lzdGVySUQqIHNyYykgeyByZXR1cm4gZW1pdElzQ2VsbFdpdGhUeXBlKGRzdCwgc3JjLCBQcm94
eU9iamVjdFR5cGUpOyB9CkBAIC05ODgsMTAgKzk5MSwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgdm9pZCBlbWl0R2VuZXJhdG9yU3RhdGVDaGFuZ2UoaW50MzJfdCBzdGF0ZSk7CiAgICAg
ICAgIFJlZ2lzdGVySUQqIGVtaXRZaWVsZChSZWdpc3RlcklEKiBhcmd1bWVudCwgSlNBc3luY0dl
bmVyYXRvckZ1bmN0aW9uOjpBc3luY0dlbmVyYXRvclN1c3BlbmRSZWFzb24gPSBKU0FzeW5jR2Vu
ZXJhdG9yRnVuY3Rpb246OkFzeW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNvbjo6WWllbGQpOwogICAg
ICAgICBSZWdpc3RlcklEKiBlbWl0RGVsZWdhdGVZaWVsZChSZWdpc3RlcklEKiBhcmd1bWVudCwg
VGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqKTsKLSAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9y
U3RhdGVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbc3RhdGljX2Nhc3Q8aW50MzJf
dD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yQXJndW1lbnQ6OlN0YXRlKV07IH0KLSAg
ICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yVmFsdWVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3Bh
cmFtZXRlcnNbc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJh
dG9yQXJndW1lbnQ6OlZhbHVlKV07IH0KLSAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yUmVz
dW1lTW9kZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1fcGFyYW1ldGVyc1tzdGF0aWNfY2FzdDxpbnQz
Ml90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JBcmd1bWVudDo6UmVzdW1lTW9kZSld
OyB9Ci0gICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRvckZyYW1lUmVnaXN0ZXIoKSB7IHJldHVy
biAmbV9wYXJhbWV0ZXJzW3N0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246
OkdlbmVyYXRvckFyZ3VtZW50OjpGcmFtZSldOyB9CisgICAgICAgIFJlZ2lzdGVySUQqIGdlbmVy
YXRvclN0YXRlUmVnaXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJzW3N0YXRpY19jYXN0PGlu
dDMyX3Q+KEpTR2VuZXJhdG9yOjpHZW5lcmF0b3JBcmd1bWVudDo6U3RhdGUpXTsgfQorICAgICAg
ICBSZWdpc3RlcklEKiBnZW5lcmF0b3JWYWx1ZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1fcGFyYW1l
dGVyc1tzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9yQXJndW1lbnQ6
OlZhbHVlKV07IH0KKyAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lz
dGVyKCkgeyByZXR1cm4gJm1fcGFyYW1ldGVyc1tzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVy
YXRvcjo6R2VuZXJhdG9yQXJndW1lbnQ6OlJlc3VtZU1vZGUpXTsgfQorICAgICAgICBSZWdpc3Rl
cklEKiBnZW5lcmF0b3JGcmFtZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1fcGFyYW1ldGVyc1tzdGF0
aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9yQXJndW1lbnQ6OkZyYW1lKV07
IH0KIAogICAgICAgICBDb2RlVHlwZSBjb2RlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZVR5
cGU7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9O
b2Rlc0NvZGVnZW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rl
c0NvZGVnZW4uY3BwCmluZGV4IDQ4OTA5ZWY5YjA0ZDE1YWRjNGEwMmQyNmM3NWY4Y2M1YzljMTUz
YjEuLjg3NzhmYjY2NDY5NTk5Y2UyNWIwYjY4OWQwZDM5MGVhMzA5YTZkYzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKQEAg
LTM0LDcgKzM0LDcgQEAKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgotI2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVuY3Rpb24u
aCIKKyNpbmNsdWRlICJKU0dlbmVyYXRvci5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0Lmgi
CiAjaW5jbHVkZSAiSlNJbW11dGFibGVCdXR0ZXJmbHkuaCIKICNpbmNsdWRlICJMYWJlbFNjb3Bl
LmgiCkBAIC0xMDIwLDYgKzEwMjAsMjAgQEAgc3RhdGljIEpTUHJvbWlzZTo6RmllbGQgcHJvbWlz
ZUludGVybmFsRmllbGRJbmRleChCeXRlY29kZUludHJpbnNpY05vZGUqIG5vZGUpCiAgICAgcmV0
dXJuIEpTUHJvbWlzZTo6RmllbGQ6OkZsYWdzOwogfQogCitzdGF0aWMgSlNHZW5lcmF0b3I6OkZp
ZWxkIGdlbmVyYXRvckludGVybmFsRmllbGRJbmRleChCeXRlY29kZUludHJpbnNpY05vZGUqIG5v
ZGUpCit7CisgICAgaWYgKG5vZGUtPmVtaXR0ZXIoKSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNOb2Rl
OjplbWl0X2ludHJpbnNpY19nZW5lcmF0b3JGaWVsZFN0YXRlKQorICAgICAgICByZXR1cm4gSlNH
ZW5lcmF0b3I6OkZpZWxkOjpTdGF0ZTsKKyAgICBpZiAobm9kZS0+ZW1pdHRlcigpID09ICZCeXRl
Y29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dlbmVyYXRvckZpZWxkTmV4dCkKKyAg
ICAgICAgcmV0dXJuIEpTR2VuZXJhdG9yOjpGaWVsZDo6TmV4dDsKKyAgICBpZiAobm9kZS0+ZW1p
dHRlcigpID09ICZCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dlbmVyYXRv
ckZpZWxkVGhpcykKKyAgICAgICAgcmV0dXJuIEpTR2VuZXJhdG9yOjpGaWVsZDo6VGhpczsKKyAg
ICBpZiAobm9kZS0+ZW1pdHRlcigpID09ICZCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50
cmluc2ljX2dlbmVyYXRvckZpZWxkRnJhbWUpCisgICAgICAgIHJldHVybiBKU0dlbmVyYXRvcjo6
RmllbGQ6OkZyYW1lOworICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0
dXJuIEpTR2VuZXJhdG9yOjpGaWVsZDo6U3RhdGU7Cit9CisKIFJlZ2lzdGVySUQqIEJ5dGVjb2Rl
SW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfZ2V0UHJvbWlzZUludGVybmFsRmllbGQoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewogICAgIEFyZ3Vt
ZW50TGlzdE5vZGUqIG5vZGUgPSBtX2FyZ3MtPm1fbGlzdE5vZGU7CkBAIC0xMDMzLDYgKzEwNDcs
MTkgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19n
ZXRQcm9taXNlSW50ZXJuYWxGaWVsZChCeXRlY28KICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRH
ZXRJbnRlcm5hbEZpZWxkKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0
KCksIGluZGV4KTsKIH0KIAorUmVnaXN0ZXJJRCogQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0
X2ludHJpbnNpY19nZXRHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKEJ5dGVjb2RlR2VuZXJhdG9yJiBn
ZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK3sKKyAgICBBcmd1bWVudExpc3ROb2RlKiBub2Rl
ID0gbV9hcmdzLT5tX2xpc3ROb2RlOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gZ2Vu
ZXJhdG9yLmVtaXROb2RlKG5vZGUpOworICAgIG5vZGUgPSBub2RlLT5tX25leHQ7CisgICAgUkVM
RUFTRV9BU1NFUlQobm9kZS0+bV9leHByLT5pc0J5dGVjb2RlSW50cmluc2ljTm9kZSgpKTsKKyAg
ICB1bnNpZ25lZCBpbmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihnZW5lcmF0b3JJbnRlcm5h
bEZpZWxkSW5kZXgoc3RhdGljX2Nhc3Q8Qnl0ZWNvZGVJbnRyaW5zaWNOb2RlKj4obm9kZS0+bV9l
eHByKSkpOworICAgIEFTU0VSVChpbmRleCA8IEpTR2VuZXJhdG9yOjpudW1iZXJPZkludGVybmFs
RmllbGRzKTsKKyAgICBBU1NFUlQoIW5vZGUtPm1fbmV4dCk7CisKKyAgICByZXR1cm4gZ2VuZXJh
dG9yLmVtaXRHZXRJbnRlcm5hbEZpZWxkKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCks
IGJhc2UuZ2V0KCksIGluZGV4KTsKK30KKwogUmVnaXN0ZXJJRCogQnl0ZWNvZGVJbnRyaW5zaWNO
b2RlOjplbWl0X2ludHJpbnNpY19hcmd1bWVudChCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9y
LCBSZWdpc3RlcklEKiBkc3QpCiB7CiAgICAgQXJndW1lbnRMaXN0Tm9kZSogbm9kZSA9IG1fYXJn
cy0+bV9saXN0Tm9kZTsKQEAgLTExMTgsNiArMTE0NSwyMiBAQCBSZWdpc3RlcklEKiBCeXRlY29k
ZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX3B1dFByb21pc2VJbnRlcm5hbEZpZWxkKEJ5
dGVjbwogICAgIHJldHVybiBnZW5lcmF0b3IubW92ZShkc3QsIGdlbmVyYXRvci5lbWl0UHV0SW50
ZXJuYWxGaWVsZChiYXNlLmdldCgpLCBpbmRleCwgdmFsdWUuZ2V0KCkpKTsKIH0KIAorUmVnaXN0
ZXJJRCogQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19wdXRHZW5lcmF0b3JJ
bnRlcm5hbEZpZWxkKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRz
dCkKK3sKKyAgICBBcmd1bWVudExpc3ROb2RlKiBub2RlID0gbV9hcmdzLT5tX2xpc3ROb2RlOwor
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gZ2VuZXJhdG9yLmVtaXROb2RlKG5vZGUpOwor
ICAgIG5vZGUgPSBub2RlLT5tX25leHQ7CisgICAgUkVMRUFTRV9BU1NFUlQobm9kZS0+bV9leHBy
LT5pc0J5dGVjb2RlSW50cmluc2ljTm9kZSgpKTsKKyAgICB1bnNpZ25lZCBpbmRleCA9IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihnZW5lcmF0b3JJbnRlcm5hbEZpZWxkSW5kZXgoc3RhdGljX2Nhc3Q8
Qnl0ZWNvZGVJbnRyaW5zaWNOb2RlKj4obm9kZS0+bV9leHByKSkpOworICAgIEFTU0VSVChpbmRl
eCA8IEpTR2VuZXJhdG9yOjpudW1iZXJPZkludGVybmFsRmllbGRzKTsKKyAgICBub2RlID0gbm9k
ZS0+bV9uZXh0OworICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0
Tm9kZShub2RlKTsKKworICAgIEFTU0VSVCghbm9kZS0+bV9uZXh0KTsKKworICAgIHJldHVybiBn
ZW5lcmF0b3IubW92ZShkc3QsIGdlbmVyYXRvci5lbWl0UHV0SW50ZXJuYWxGaWVsZChiYXNlLmdl
dCgpLCBpbmRleCwgdmFsdWUuZ2V0KCkpKTsKK30KKwogUmVnaXN0ZXJJRCogQnl0ZWNvZGVJbnRy
aW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY190YWlsQ2FsbEZvcndhcmRBcmd1bWVudHMoQnl0ZWNv
ZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewogICAgIEFyZ3VtZW50
TGlzdE5vZGUqIG5vZGUgPSBtX2FyZ3MtPm1fbGlzdE5vZGU7CkBAIC0xMjMxLDYgKzEyNzQsMTUg
QEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19pZFdp
dGhQcm9maWxlKEJ5dGVjb2RlR2VuZXJhdG8KIAogICAgIHJldHVybiBnZW5lcmF0b3IubW92ZShk
c3QsIGdlbmVyYXRvci5lbWl0SWRXaXRoUHJvZmlsZShpZFZhbHVlLmdldCgpLCBzcGVjdWxhdGlv
bikpOwogfQorCitSZWdpc3RlcklEKiBCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmlu
c2ljX2lzR2VuZXJhdG9yKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgSlNDOjpS
ZWdpc3RlcklEKiBkc3QpCit7CisgICAgQXJndW1lbnRMaXN0Tm9kZSogbm9kZSA9IG1fYXJncy0+
bV9saXN0Tm9kZTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3JjID0gZ2VuZXJhdG9yLmVtaXRO
b2RlKG5vZGUpOworICAgIEFTU0VSVCghbm9kZS0+bV9uZXh0KTsKKworICAgIHJldHVybiBnZW5l
cmF0b3IubW92ZShkc3QsIGdlbmVyYXRvci5lbWl0SXNHZW5lcmF0b3IoZ2VuZXJhdG9yLnRlbXBE
ZXN0aW5hdGlvbihkc3QpLCBzcmMuZ2V0KCkpKTsKK30KICAgICAKIFJlZ2lzdGVySUQqIEJ5dGVj
b2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfaXNKU0FycmF5KEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3ImIGdlbmVyYXRvciwgSlNDOjpSZWdpc3RlcklEKiBkc3QpCiB7CkBAIC0zOTkzLDcg
KzQwNDUsNyBAQCB2b2lkIEZ1bmN0aW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqKQogICAgICAgICBnZW5lcmF0b3IubW92ZShhcmdz
LmFyZ3VtZW50UmVnaXN0ZXIoYXJndW1lbnRDb3VudCsrKSwgZ2VuZXJhdG9yLmdlbmVyYXRvclJl
Z2lzdGVyKCkpOwogICAgICAgICBnZW5lcmF0b3IubW92ZShhcmdzLmFyZ3VtZW50UmVnaXN0ZXIo
YXJndW1lbnRDb3VudCsrKSwgZ2VuZXJhdG9yLnByb21pc2VSZWdpc3RlcigpKTsKICAgICAgICAg
Z2VuZXJhdG9yLmVtaXRMb2FkKGFyZ3MuYXJndW1lbnRSZWdpc3Rlcihhcmd1bWVudENvdW50Kysp
LCBqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGFyZ3MuYXJndW1l
bnRSZWdpc3Rlcihhcmd1bWVudENvdW50KyspLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90
PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JSZXN1bWVNb2RlOjpOb3JtYWxNb2RlKSkp
OworICAgICAgICBnZW5lcmF0b3IuZW1pdExvYWQoYXJncy5hcmd1bWVudFJlZ2lzdGVyKGFyZ3Vt
ZW50Q291bnQrKyksIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpH
ZW5lcmF0b3JSZXN1bWVNb2RlOjpOb3JtYWxNb2RlKSkpOwogICAgICAgICAvLyBKU1RleHRQb3Np
dGlvbihpbnQgX2xpbmUsIGludCBfb2Zmc2V0LCBpbnQgX2xpbmVTdGFydE9mZnNldCkKICAgICAg
ICAgSlNUZXh0UG9zaXRpb24gZGl2b3QoZmlyc3RMaW5lKCksIHN0YXJ0T2Zmc2V0KCksIGxpbmVT
dGFydE9mZnNldCgpKTsKIApAQCAtNDAxMCwxMSArNDA2MiwxMSBAQCB2b2lkIEZ1bmN0aW9uTm9k
ZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQq
KQogICAgICAgICBSZWY8TGFiZWw+IGdlbmVyYXRvckJvZHlMYWJlbCA9IGdlbmVyYXRvci5uZXdM
YWJlbCgpOwogICAgICAgICB7CiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gY29uZGl0
aW9uID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwotICAgICAgICAgICAgZ2VuZXJhdG9yLmVt
aXRFcXVhbGl0eU9wPE9wU3RyaWN0ZXE+KGNvbmRpdGlvbi5nZXQoKSwgZ2VuZXJhdG9yLmdlbmVy
YXRvclJlc3VtZU1vZGVSZWdpc3RlcigpLCBnZW5lcmF0b3IuZW1pdExvYWQobnVsbHB0ciwganNO
dW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9y
UmVzdW1lTW9kZTo6Tm9ybWFsTW9kZSkpKSk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEVx
dWFsaXR5T3A8T3BTdHJpY3RlcT4oY29uZGl0aW9uLmdldCgpLCBnZW5lcmF0b3IuZ2VuZXJhdG9y
UmVzdW1lTW9kZVJlZ2lzdGVyKCksIGdlbmVyYXRvci5lbWl0TG9hZChudWxscHRyLCBqc051bWJl
cihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9yUmVzdW1lTW9kZTo6
Tm9ybWFsTW9kZSkpKSk7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZlRydWUoY29u
ZGl0aW9uLmdldCgpLCBnZW5lcmF0b3JCb2R5TGFiZWwuZ2V0KCkpOwogCiAgICAgICAgICAgICBS
ZWY8TGFiZWw+IHRocm93TGFiZWwgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKLSAgICAgICAgICAg
IGdlbmVyYXRvci5lbWl0RXF1YWxpdHlPcDxPcFN0cmljdGVxPihjb25kaXRpb24uZ2V0KCksIGdl
bmVyYXRvci5nZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSwgZ2VuZXJhdG9yLmVtaXRMb2Fk
KG51bGxwdHIsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rp
b246OkdlbmVyYXRvclJlc3VtZU1vZGU6OlRocm93TW9kZSkpKSk7CisgICAgICAgICAgICBnZW5l
cmF0b3IuZW1pdEVxdWFsaXR5T3A8T3BTdHJpY3RlcT4oY29uZGl0aW9uLmdldCgpLCBnZW5lcmF0
b3IuZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCksIGdlbmVyYXRvci5lbWl0TG9hZChudWxs
cHRyLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9y
UmVzdW1lTW9kZTo6VGhyb3dNb2RlKSkpKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0SnVt
cElmVHJ1ZShjb25kaXRpb24uZ2V0KCksIHRocm93TGFiZWwuZ2V0KCkpOwogCiAgICAgICAgICAg
ICBnZW5lcmF0b3IuZW1pdFJldHVybihnZW5lcmF0b3IuZ2VuZXJhdG9yVmFsdWVSZWdpc3Rlcigp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRl
cnByZXRlcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJ
bnRlcnByZXRlcklubGluZXMuaAppbmRleCBjMmZlM2FiYTk1OWIwNTAyZjQ4ZjU1YTI1NTE1ZGYy
OTRkN2U5ZTBiLi45YjYzN2ZkN2RlZjUxYTYxODUzOGFiMDQ2ODJiMDQ1ZDI2YTFlZjdhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJ
bmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVy
cHJldGVySW5saW5lcy5oCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVy
LmgiCiAjaW5jbHVkZSAiSGFzaE1hcEltcGwuaCIKICNpbmNsdWRlICJKSVRPcGVyYXRpb25zLmgi
CisjaW5jbHVkZSAiSlNHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJKU0ltbXV0YWJsZUJ1dHRlcmZs
eS5oIgogI2luY2x1ZGUgIkpTSW50ZXJuYWxQcm9taXNlLmgiCiAjaW5jbHVkZSAiSlNJbnRlcm5h
bFByb21pc2VDb25zdHJ1Y3Rvci5oIgpAQCAtMTU2NCwxOCArMTU2NSwyNyBAQCBib29sIEFic3Ry
YWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25l
ZCBjbG9iYmVyTGltaQogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAg
ICAgY2FzZSBJc0NlbGxXaXRoVHlwZToKLSAgICAgICAgICAgIGlmICghKGNoaWxkLm1fdHlwZSAm
IH5ub2RlLT5zcGVjdWxhdGVkVHlwZUZvclF1ZXJ5KCkpKSB7CisgICAgICAgIGNhc2UgSXNDZWxs
V2l0aFR5cGU6IHsKKyAgICAgICAgICAgIE9wdGlvbmFsPFNwZWN1bGF0ZWRUeXBlPiBmaWx0ZXIg
PSBub2RlLT5zcGVjdWxhdGVkVHlwZUZvclF1ZXJ5KCk7CisgICAgICAgICAgICBpZiAoIWZpbHRl
cikgeworICAgICAgICAgICAgICAgIGlmICghKGNoaWxkLm1fdHlwZSAmIFNwZWNDZWxsKSkgewor
ICAgICAgICAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc0Jvb2xlYW4oZmFsc2UpKTsK
KyAgICAgICAgICAgICAgICAgICAgY29uc3RhbnRXYXNTZXQgPSB0cnVlOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGlmICghKGNoaWxkLm1fdHlwZSAmIH5maWx0ZXIudmFsdWUoKSkpIHsKICAgICAgICAgICAgICAg
ICBzZXRDb25zdGFudChub2RlLCBqc0Jvb2xlYW4odHJ1ZSkpOwogICAgICAgICAgICAgICAgIGNv
bnN0YW50V2FzU2V0ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIGlmICghKGNoaWxkLm1fdHlwZSAmIG5vZGUtPnNwZWN1bGF0ZWRUeXBl
Rm9yUXVlcnkoKSkpIHsKKyAgICAgICAgICAgIGlmICghKGNoaWxkLm1fdHlwZSAmIGZpbHRlci52
YWx1ZSgpKSkgewogICAgICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzQm9vbGVhbihm
YWxzZSkpOwogICAgICAgICAgICAgICAgIGNvbnN0YW50V2FzU2V0ID0gdHJ1ZTsKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CiAKICAgICAgICAgY2FzZSBJc1R5cGVkQXJyYXlWaWV3OgogICAgICAgICAgICAgaWYgKCEo
Y2hpbGQubV90eXBlICYgflNwZWNUeXBlZEFycmF5VmlldykpIHsKQEAgLTI2NzYsMTAgKzI2ODYs
NDIgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0
ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisg
ICAgY2FzZSBDcmVhdGVHZW5lcmF0b3I6IHsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7
CisgICAgICAgIGlmIChKU1ZhbHVlIGJhc2UgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3Zh
bHVlKSB7CisgICAgICAgICAgICBpZiAoYXV0byogZnVuY3Rpb24gPSBqc0R5bmFtaWNDYXN0PEpT
RnVuY3Rpb24qPihtX2dyYXBoLm1fdm0sIGJhc2UpKSB7CisgICAgICAgICAgICAgICAgaWYgKEZ1
bmN0aW9uUmFyZURhdGEqIHJhcmVEYXRhID0gZnVuY3Rpb24tPnJhcmVEYXRhKCkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKHJhcmVEYXRhLT5hbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnRT
ZXQoKS5pc1N0aWxsVmFsaWQoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUgPSByYXJlRGF0YS0+aW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25TdHJ1Y3R1
cmUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdHJ1Y3R1cmUKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAmJiBzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpID09IEpTR2VuZXJhdG9y
OjppbmZvKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBzdHJ1Y3R1cmUtPmdsb2Jh
bE9iamVjdCgpID09IGdsb2JhbE9iamVjdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICYm
IHJhcmVEYXRhLT5hbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnRTZXQoKS5pc1N0aWxsVmFsaWQo
KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguZnJlZXplKHJhcmVEYXRh
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLndhdGNocG9pbnRzKCkuYWRk
TGF6aWx5KHJhcmVEYXRhLT5hbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnRTZXQoKSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbV9zdGF0ZS5zZXRGb3VuZENvbnN0YW50cyh0cnVlKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWRGb2xkQ2xvYmJlcldvcmxkKCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2V0Rm9yTm9kZShub2RlLCBzdHJ1Y3R1cmUpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgICAgIGNsb2JiZXJXb3JsZCgpOworICAgICAgICBzZXRUeXBlRm9y
Tm9kZShub2RlLCBTcGVjT2JqZWN0T3RoZXIpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAg
ICBjYXNlIE5ld1Byb21pc2U6CiAgICAgICAgIEFTU0VSVCghIW5vZGUtPnN0cnVjdHVyZSgpLmdl
dCgpKTsKICAgICAgICAgc2V0Rm9yTm9kZShub2RlLCBub2RlLT5zdHJ1Y3R1cmUoKSk7CiAgICAg
ICAgIGJyZWFrOworCisgICAgY2FzZSBOZXdHZW5lcmF0b3I6CisgICAgICAgIEFTU0VSVCghIW5v
ZGUtPnN0cnVjdHVyZSgpLmdldCgpKTsKKyAgICAgICAgc2V0Rm9yTm9kZShub2RlLCBub2RlLT5z
dHJ1Y3R1cmUoKSk7CisgICAgICAgIGJyZWFrOwogICAgICAgICAKICAgICBjYXNlIE5ld09iamVj
dDoKICAgICAgICAgQVNTRVJUKCEhbm9kZS0+c3RydWN0dXJlKCkuZ2V0KCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCBhZDYzZDMx
YmYzMWI1YzIxMjJiYmFkMTgyN2RmMmM4MWQ3NDYxZGNiLi44YWFkMjVhYjcwZDE1OGU5MGFiNGJl
ZDM1ZDQxYWM2NjI2ZDJlMzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtNDk1Miw2ICs0OTUyLDUyIEBAIHZvaWQgQnl0ZUNvZGVQ
YXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICBORVhUX09QQ09E
RShvcF9jcmVhdGVfcHJvbWlzZSk7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIG9wX2NyZWF0
ZV9nZW5lcmF0b3I6IHsKKyAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qg
PSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjdXJyZW50Tm9kZU9yaWdpbigpLnNlbWFudGljKTsK
KyAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wQ3Jl
YXRlR2VuZXJhdG9yPigpOworICAgICAgICAgICAgTm9kZSogY2FsbGVlID0gZ2V0KFZpcnR1YWxS
ZWdpc3RlcihieXRlY29kZS5tX2NhbGxlZSkpOworCisgICAgICAgICAgICBib29sIGFscmVhZHlF
bWl0dGVkID0gZmFsc2U7CisKKyAgICAgICAgICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gY2Fs
bGVlLT5keW5hbWljQ2FzdENvbnN0YW50PEpTRnVuY3Rpb24qPigqbV92bSk7CisgICAgICAgICAg
ICBpZiAoIWZ1bmN0aW9uKSB7CisgICAgICAgICAgICAgICAgSlNDZWxsKiBjYWNoZWRGdW5jdGlv
biA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jaykubV9jYWNoZWRDYWxsZWUudW52YWxpZGF0
ZWRHZXQoKTsKKyAgICAgICAgICAgICAgICBpZiAoY2FjaGVkRnVuY3Rpb24KKyAgICAgICAgICAg
ICAgICAgICAgJiYgY2FjaGVkRnVuY3Rpb24gIT0gSlNDZWxsOjpzZWVuTXVsdGlwbGVDYWxsZWVP
YmplY3RzKCkKKyAgICAgICAgICAgICAgICAgICAgJiYgIW1faW5saW5lU3RhY2tUb3AtPm1fZXhp
dFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZENlbGwpKSB7CisgICAgICAg
ICAgICAgICAgICAgIEFTU0VSVChjYWNoZWRGdW5jdGlvbi0+aW5oZXJpdHM8SlNGdW5jdGlvbj4o
Km1fdm0pKTsKKworICAgICAgICAgICAgICAgICAgICBGcm96ZW5WYWx1ZSogZnJvemVuID0gbV9n
cmFwaC5mcmVlemUoY2FjaGVkRnVuY3Rpb24pOworICAgICAgICAgICAgICAgICAgICBhZGRUb0dy
YXBoKENoZWNrQ2VsbCwgT3BJbmZvKGZyb3plbiksIGNhbGxlZSk7CisKKyAgICAgICAgICAgICAg
ICAgICAgZnVuY3Rpb24gPSBzdGF0aWNfY2FzdDxKU0Z1bmN0aW9uKj4oY2FjaGVkRnVuY3Rpb24p
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGZ1
bmN0aW9uKSB7CisgICAgICAgICAgICAgICAgaWYgKEZ1bmN0aW9uUmFyZURhdGEqIHJhcmVEYXRh
ID0gZnVuY3Rpb24tPnJhcmVEYXRhKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHJhcmVE
YXRhLT5hbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnRTZXQoKS5pc1N0aWxsVmFsaWQoKSkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSByYXJlRGF0YS0+
aW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25TdHJ1Y3R1cmUoKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChzdHJ1Y3R1cmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBzdHJ1
Y3R1cmUtPmNsYXNzSW5mbygpID09IEpTR2VuZXJhdG9yOjppbmZvKCkKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAmJiBzdHJ1Y3R1cmUtPmdsb2JhbE9iamVjdCgpID09IGdsb2JhbE9iamVj
dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIHJhcmVEYXRhLT5hbGxvY2F0aW9uUHJv
ZmlsZVdhdGNocG9pbnRTZXQoKS5pc1N0aWxsVmFsaWQoKSkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1fZ3JhcGguZnJlZXplKHJhcmVEYXRhKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtX2dyYXBoLndhdGNocG9pbnRzKCkuYWRkTGF6aWx5KHJhcmVEYXRhLT5hbGxvY2F0
aW9uUHJvZmlsZVdhdGNocG9pbnRTZXQoKSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBUaGUgY2FsbGVlIGlzIHN0aWxsIGxpdmUgdXAgdG8gdGhpcyBwb2ludC4KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFBoYW50b20sIGNhbGxlZSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2RzdCks
IGFkZFRvR3JhcGgoTmV3R2VuZXJhdG9yLCBPcEluZm8obV9ncmFwaC5yZWdpc3RlclN0cnVjdHVy
ZShzdHJ1Y3R1cmUpKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFscmVhZHlFbWl0
dGVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICgh
YWxyZWFkeUVtaXR0ZWQpCisgICAgICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihieXRl
Y29kZS5tX2RzdCksIGFkZFRvR3JhcGgoQ3JlYXRlR2VuZXJhdG9yLCBjYWxsZWUpKTsKKyAgICAg
ICAgICAgIE5FWFRfT1BDT0RFKG9wX2NyZWF0ZV9nZW5lcmF0b3IpOworICAgICAgICB9CisKICAg
ICAgICAgY2FzZSBvcF9uZXdfb2JqZWN0OiB7CiAgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0g
Y3VycmVudEluc3RydWN0aW9uLT5hczxPcE5ld09iamVjdD4oKTsKICAgICAgICAgICAgIHNldChi
eXRlY29kZS5tX2RzdCwKQEAgLTQ5NjYsNiArNTAxMiwxMyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2Vy
OjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLm1f
ZHN0LCBhZGRUb0dyYXBoKE5ld1Byb21pc2UsIE9wSW5mbyhtX2dyYXBoLnJlZ2lzdGVyU3RydWN0
dXJlKGJ5dGVjb2RlLm1faXNJbnRlcm5hbFByb21pc2UgPyBnbG9iYWxPYmplY3QtPmludGVybmFs
UHJvbWlzZVN0cnVjdHVyZSgpIDogZ2xvYmFsT2JqZWN0LT5wcm9taXNlU3RydWN0dXJlKCkpKSwg
T3BJbmZvKGJ5dGVjb2RlLm1faXNJbnRlcm5hbFByb21pc2UpKSk7CiAgICAgICAgICAgICBORVhU
X09QQ09ERShvcF9uZXdfcHJvbWlzZSk7CiAgICAgICAgIH0KKworICAgICAgICBjYXNlIG9wX25l
d19nZW5lcmF0b3I6IHsKKyAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1
Y3Rpb24tPmFzPE9wTmV3R2VuZXJhdG9yPigpOworICAgICAgICAgICAgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGN1cnJlbnROb2RlT3JpZ2lu
KCkuc2VtYW50aWMpOworICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLm1fZHN0LCBhZGRUb0dyYXBo
KE5ld0dlbmVyYXRvciwgT3BJbmZvKG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2Jq
ZWN0LT5nZW5lcmF0b3JTdHJ1Y3R1cmUoKSkpKSk7CisgICAgICAgICAgICBORVhUX09QQ09ERShv
cF9uZXdfZ2VuZXJhdG9yKTsKKyAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgIGNhc2Ug
b3BfbmV3X2FycmF5OiB7CiAgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3Ry
dWN0aW9uLT5hczxPcE5ld0FycmF5PigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDYXBhYmlsaXRpZXMuY3BwCmluZGV4IGMwZWU5OGFlYTgzOGQ3MjU2ZTZiNzU0YjU0NTc0YmI4
ZDZlOWY5ZmEuLjcxZWM3ZjE2Mjg0OTVlYjJjODQwNDU5NTE3ODU3MTAyZjFkOGU0MGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKQEAgLTExNyw2
ICsxMTcsNyBAQCBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsKE9wY29kZUlEIG9wY29k
ZUlELCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgSQogICAgIGNhc2Ugb3BfY2hlY2tfdGR6
OgogICAgIGNhc2Ugb3BfY3JlYXRlX3RoaXM6CiAgICAgY2FzZSBvcF9jcmVhdGVfcHJvbWlzZToK
KyAgICBjYXNlIG9wX2NyZWF0ZV9nZW5lcmF0b3I6CiAgICAgY2FzZSBvcF9iaXRub3Q6CiAgICAg
Y2FzZSBvcF9iaXRhbmQ6CiAgICAgY2FzZSBvcF9iaXRvcjoKQEAgLTIxMiw2ICsyMTMsNyBAQCBD
YXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsKE9wY29kZUlEIG9wY29kZUlELCBDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgY29uc3QgSQogICAgIGNhc2Ugb3BfZW5kOgogICAgIGNhc2Ugb3BfbmV3
X29iamVjdDoKICAgICBjYXNlIG9wX25ld19wcm9taXNlOgorICAgIGNhc2Ugb3BfbmV3X2dlbmVy
YXRvcjoKICAgICBjYXNlIG9wX25ld19hcnJheToKICAgICBjYXNlIG9wX25ld19hcnJheV93aXRo
X3NpemU6CiAgICAgY2FzZSBvcF9uZXdfYXJyYXlfYnVmZmVyOgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Nsb2JiZXJpemUuaAppbmRleCAzMDNmNDc5M2UzYjY0NWU4NDhiYzM2ZGQyNjli
ZDhmMGNiNjU0ZGI0Li45YThhZDA3YjMxYTg4YmVhNmY5YjRkN2E5YTkyZTFkZGJmOGVkNTQ3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaApAQCAtNjY4LDYgKzY2
OCw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJl
YWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgY2FzZSBOdW1iZXJUb1N0cmluZ1dp
dGhSYWRpeDoKICAgICBjYXNlIENyZWF0ZVRoaXM6CiAgICAgY2FzZSBDcmVhdGVQcm9taXNlOgor
ICAgIGNhc2UgQ3JlYXRlR2VuZXJhdG9yOgogICAgIGNhc2UgSW5zdGFuY2VPZjoKICAgICBjYXNl
IFN0cmluZ1ZhbHVlT2Y6CiAgICAgY2FzZSBPYmplY3RLZXlzOgpAQCAtMTU2Niw2ICsxNTY3LDcg
QEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1
bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKIAogICAgIGNhc2UgTmV3T2JqZWN0OgogICAgIGNh
c2UgTmV3UHJvbWlzZToKKyAgICBjYXNlIE5ld0dlbmVyYXRvcjoKICAgICBjYXNlIE5ld1JlZ2V4
cDoKICAgICBjYXNlIE5ld1N5bWJvbDoKICAgICBjYXNlIE5ld1N0cmluZ09iamVjdDoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHAKaW5k
ZXggMzcwZmQxZGMyYzVjMTQ3NmM3YjVhNTNjZmRjMmRiN2MxZjRlMDFjNC4uZDJmN2JhNDc4ZDhl
YzgzNGNkMjUwOGQ1M2JkOWZhMTRkMjgwMDkwZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHAKQEAgLTU4LDYgKzU4LDcgQEAgYm9v
bCBjbG9iYmVyc0V4aXRTdGF0ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBB
cnJheWlmeToKICAgICBjYXNlIE5ld09iamVjdDoKICAgICBjYXNlIE5ld1Byb21pc2U6CisgICAg
Y2FzZSBOZXdHZW5lcmF0b3I6CiAgICAgY2FzZSBOZXdSZWdleHA6CiAgICAgY2FzZSBOZXdTeW1i
b2w6CiAgICAgY2FzZSBOZXdTdHJpbmdPYmplY3Q6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCmluZGV4IDk5ZDg3NWU2NmE2
YjcwZmJlNTI4ODFlMDAxMTdhNzA4YmVhNDNiZDAuLmYzZjVjYjYwZDg4YWM1YzY0NTJkZGYxNWJl
NGM0NWRmZTEwOGQ5YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCkBAIC03NzgsNiArNzc4LDMwIEBAIGNsYXNzIENv
bnN0YW50Rm9sZGluZ1BoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIH0KIAorICAgICAgICAgICAgY2FzZSBDcmVhdGVHZW5lcmF0b3I6IHsK
KyAgICAgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgICAgICAgICBp
ZiAoSlNWYWx1ZSBiYXNlID0gbV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3ZhbHVl
KSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChhdXRvKiBmdW5jdGlvbiA9IGpzRHluYW1pY0Nh
c3Q8SlNGdW5jdGlvbio+KG1fZ3JhcGgubV92bSwgYmFzZSkpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChGdW5jdGlvblJhcmVEYXRhKiByYXJlRGF0YSA9IGZ1bmN0aW9uLT5yYXJlRGF0
YSgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJhcmVEYXRhLT5hbGxvY2F0
aW9uUHJvZmlsZVdhdGNocG9pbnRTZXQoKS5pc1N0aWxsVmFsaWQoKSkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHJhcmVEYXRhLT5pbnRl
cm5hbEZ1bmN0aW9uQWxsb2NhdGlvblN0cnVjdHVyZSgpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoc3RydWN0dXJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAmJiBzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpID09IEpTR2VuZXJhdG9yOjppbmZvKCkKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIHN0cnVjdHVyZS0+Z2xvYmFsT2Jq
ZWN0KCkgPT0gZ2xvYmFsT2JqZWN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAmJiByYXJlRGF0YS0+YWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50U2V0KCkuaXNTdGlsbFZh
bGlkKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguZnJl
ZXplKHJhcmVEYXRhKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3Jh
cGgud2F0Y2hwb2ludHMoKS5hZGRMYXppbHkocmFyZURhdGEtPmFsbG9jYXRpb25Qcm9maWxlV2F0
Y2hwb2ludFNldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUt
PmNvbnZlcnRUb05ld0dlbmVyYXRvcihtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHN0cnVjdHVy
ZSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKwogICAgICAg
ICAgICAgY2FzZSBPYmplY3RDcmVhdGU6IHsKICAgICAgICAgICAgICAgICBpZiAoSlNWYWx1ZSBi
YXNlID0gbV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3ZhbHVlKSB7CiAgICAgICAg
ICAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdEb2VzR0MuY3BwCmluZGV4IDQwNzJmOTE3ZTQ1ZjRhMDU5MWE4YWFjNjgzMGYwZDgwNGE2
NTQ3NjYuLmM5NzMzZDAwOTZkNjJlZjJkNWRlYzE3ODNlYzc2OWJlZjIwMjc1NjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKQEAgLTMzMyw2ICszMzMsNyBAQCBib29s
IGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBUcnlHZXRCeUlkOgog
ICAgIGNhc2UgQ3JlYXRlVGhpczoKICAgICBjYXNlIENyZWF0ZVByb21pc2U6CisgICAgY2FzZSBD
cmVhdGVHZW5lcmF0b3I6CiAgICAgY2FzZSBPYmplY3RDcmVhdGU6CiAgICAgY2FzZSBPYmplY3RL
ZXlzOgogICAgIGNhc2UgQWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2U6CkBAIC0zNDEsNiArMzQyLDcg
QEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgQXJyYXlp
ZnlUb1N0cnVjdHVyZToKICAgICBjYXNlIE5ld09iamVjdDoKICAgICBjYXNlIE5ld1Byb21pc2U6
CisgICAgY2FzZSBOZXdHZW5lcmF0b3I6CiAgICAgY2FzZSBOZXdBcnJheToKICAgICBjYXNlIE5l
d0FycmF5V2l0aFNwcmVhZDoKICAgICBjYXNlIFNwcmVhZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4IGVjMDQwYWY4ZGQ2NzNkYTBhNDA3NDdiMWFl
OTlkNjIzYzY3ZWM0MTIuLmQwNjQzMjI1YWNiZmI0NGQ2ZjAxZjFmNDdmZjFhYzU5Nzg5M2U1ZTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcApAQCAtMTY0
Nyw2ICsxNjQ3LDcgQEAgY2xhc3MgRml4dXBQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAg
IGNhc2UgQ2hlY2tDZWxsOgogICAgICAgICBjYXNlIENyZWF0ZVRoaXM6CiAgICAgICAgIGNhc2Ug
Q3JlYXRlUHJvbWlzZToKKyAgICAgICAgY2FzZSBDcmVhdGVHZW5lcmF0b3I6CiAgICAgICAgIGNh
c2UgR2V0QnV0dGVyZmx5OiB7CiAgICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNo
aWxkMSgpKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjQwNCw2ICsyNDA1LDcgQEAgY2xhc3Mg
Rml4dXBQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgIGNhc2UgUHJvZmlsZUNvbnRyb2xG
bG93OgogICAgICAgICBjYXNlIE5ld09iamVjdDoKICAgICAgICAgY2FzZSBOZXdQcm9taXNlOgor
ICAgICAgICBjYXNlIE5ld0dlbmVyYXRvcjoKICAgICAgICAgY2FzZSBOZXdSZWdleHA6CiAgICAg
ICAgIGNhc2UgRGVsZXRlQnlJZDoKICAgICAgICAgY2FzZSBEZWxldGVCeVZhbDoKQEAgLTI1NzQs
NjEgKzI1NzYsNjQgQEAgY2xhc3MgRml4dXBQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAKICAgICB2
b2lkIGZpeHVwSXNDZWxsV2l0aFR5cGUoTm9kZSogbm9kZSkKICAgICB7Ci0gICAgICAgIHN3aXRj
aCAobm9kZS0+c3BlY3VsYXRlZFR5cGVGb3JRdWVyeSgpKSB7Ci0gICAgICAgIGNhc2UgU3BlY1N0
cmluZzoKLSAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlU3Ry
aW5nKCkpIHsKLSAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAotICAg
ICAgICAgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY05vbmUsIENoZWNrLCBub2RlLT5v
cmlnaW4sCi0gICAgICAgICAgICAgICAgICAgIEVkZ2Uobm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBT
dHJpbmdVc2UpKTsKLSAgICAgICAgICAgICAgICBtX2dyYXBoLmNvbnZlcnRUb0NvbnN0YW50KG5v
ZGUsIGpzQm9vbGVhbih0cnVlKSk7Ci0gICAgICAgICAgICAgICAgb2JzZXJ2ZVVzZUtpbmRPbk5v
ZGU8U3RyaW5nVXNlPihub2RlKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgT3B0aW9uYWw8U3BlY3VsYXRlZFR5cGU+
IGZpbHRlciA9IG5vZGUtPnNwZWN1bGF0ZWRUeXBlRm9yUXVlcnkoKTsKKyAgICAgICAgaWYgKGZp
bHRlcikgeworICAgICAgICAgICAgc3dpdGNoIChmaWx0ZXIudmFsdWUoKSkgeworICAgICAgICAg
ICAgY2FzZSBTcGVjU3RyaW5nOgorICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+
c2hvdWxkU3BlY3VsYXRlU3RyaW5nKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRp
b25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIG1faW5kZXhJbkJsb2Nr
LCBTcGVjTm9uZSwgQ2hlY2ssIG5vZGUtPm9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgICAg
IEVkZ2Uobm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBTdHJpbmdVc2UpKTsKKyAgICAgICAgICAgICAg
ICAgICAgbV9ncmFwaC5jb252ZXJ0VG9Db25zdGFudChub2RlLCBqc0Jvb2xlYW4odHJ1ZSkpOwor
ICAgICAgICAgICAgICAgICAgICBvYnNlcnZlVXNlS2luZE9uTm9kZTxTdHJpbmdVc2U+KG5vZGUp
OworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIGNhc2UgU3BlY1Byb3h5T2JqZWN0OgotICAgICAg
ICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVQcm94eU9iamVjdCgpKSB7
Ci0gICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAg
ICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNOb25lLCBDaGVjaywgbm9kZS0+b3JpZ2luLAot
ICAgICAgICAgICAgICAgICAgICBFZGdlKG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgUHJveHlPYmpl
Y3RVc2UpKTsKLSAgICAgICAgICAgICAgICBtX2dyYXBoLmNvbnZlcnRUb0NvbnN0YW50KG5vZGUs
IGpzQm9vbGVhbih0cnVlKSk7Ci0gICAgICAgICAgICAgICAgb2JzZXJ2ZVVzZUtpbmRPbk5vZGU8
UHJveHlPYmplY3RVc2U+KG5vZGUpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBTcGVjUHJveHlPYmpl
Y3Q6CisgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVQ
cm94eU9iamVjdCgpKSB7CisgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2Vy
dE5vZGUoCisgICAgICAgICAgICAgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY05vbmUs
IENoZWNrLCBub2RlLT5vcmlnaW4sCisgICAgICAgICAgICAgICAgICAgICAgICBFZGdlKG5vZGUt
PmNoaWxkMSgpLm5vZGUoKSwgUHJveHlPYmplY3RVc2UpKTsKKyAgICAgICAgICAgICAgICAgICAg
bV9ncmFwaC5jb252ZXJ0VG9Db25zdGFudChub2RlLCBqc0Jvb2xlYW4odHJ1ZSkpOworICAgICAg
ICAgICAgICAgICAgICBvYnNlcnZlVXNlS2luZE9uTm9kZTxQcm94eU9iamVjdFVzZT4obm9kZSk7
CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgY2FzZSBTcGVjUmVnRXhwT2JqZWN0OgotICAgICAg
ICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVSZWdFeHBPYmplY3QoKSkg
ewotICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0gICAgICAgICAg
ICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgQ2hlY2ssIG5vZGUtPm9yaWdpbiwK
LSAgICAgICAgICAgICAgICAgICAgRWRnZShub2RlLT5jaGlsZDEoKS5ub2RlKCksIFJlZ0V4cE9i
amVjdFVzZSkpOwotICAgICAgICAgICAgICAgIG1fZ3JhcGguY29udmVydFRvQ29uc3RhbnQobm9k
ZSwganNCb29sZWFuKHRydWUpKTsKLSAgICAgICAgICAgICAgICBvYnNlcnZlVXNlS2luZE9uTm9k
ZTxSZWdFeHBPYmplY3RVc2U+KG5vZGUpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBTcGVjUmVnRXhw
T2JqZWN0OgorICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3Vs
YXRlUmVnRXhwT2JqZWN0KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQu
aW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVj
Tm9uZSwgQ2hlY2ssIG5vZGUtPm9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgIEVkZ2Uo
bm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBSZWdFeHBPYmplY3RVc2UpKTsKKyAgICAgICAgICAgICAg
ICAgICAgbV9ncmFwaC5jb252ZXJ0VG9Db25zdGFudChub2RlLCBqc0Jvb2xlYW4odHJ1ZSkpOwor
ICAgICAgICAgICAgICAgICAgICBvYnNlcnZlVXNlS2luZE9uTm9kZTxSZWdFeHBPYmplY3RVc2U+
KG5vZGUpOworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIGNhc2UgU3BlY0FycmF5OgotICAgICAg
ICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVBcnJheSgpKSB7Ci0gICAg
ICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgICAgICAg
ICAgbV9pbmRleEluQmxvY2ssIFNwZWNOb25lLCBDaGVjaywgbm9kZS0+b3JpZ2luLAotICAgICAg
ICAgICAgICAgICAgICBFZGdlKG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgQXJyYXlVc2UpKTsKLSAg
ICAgICAgICAgICAgICBtX2dyYXBoLmNvbnZlcnRUb0NvbnN0YW50KG5vZGUsIGpzQm9vbGVhbih0
cnVlKSk7Ci0gICAgICAgICAgICAgICAgb2JzZXJ2ZVVzZUtpbmRPbk5vZGU8QXJyYXlVc2U+KG5v
ZGUpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgY2FzZSBTcGVjQXJyYXk6CisgICAgICAgICAgICAgICAgaWYg
KG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVBcnJheSgpKSB7CisgICAgICAgICAgICAg
ICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAgICAgICAgICAgICAgICAg
ICBtX2luZGV4SW5CbG9jaywgU3BlY05vbmUsIENoZWNrLCBub2RlLT5vcmlnaW4sCisgICAgICAg
ICAgICAgICAgICAgICAgICBFZGdlKG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgQXJyYXlVc2UpKTsK
KyAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5jb252ZXJ0VG9Db25zdGFudChub2RlLCBqc0Jv
b2xlYW4odHJ1ZSkpOworICAgICAgICAgICAgICAgICAgICBvYnNlcnZlVXNlS2luZE9uTm9kZTxB
cnJheVVzZT4obm9kZSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgY2FzZSBTcGVjRGVyaXZl
ZEFycmF5OgotICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVE
ZXJpdmVkQXJyYXkoKSkgewotICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5v
ZGUoCi0gICAgICAgICAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgQ2hlY2ss
IG5vZGUtPm9yaWdpbiwKLSAgICAgICAgICAgICAgICAgICAgRWRnZShub2RlLT5jaGlsZDEoKS5u
b2RlKCksIERlcml2ZWRBcnJheVVzZSkpOwotICAgICAgICAgICAgICAgIG1fZ3JhcGguY29udmVy
dFRvQ29uc3RhbnQobm9kZSwganNCb29sZWFuKHRydWUpKTsKLSAgICAgICAgICAgICAgICBvYnNl
cnZlVXNlS2luZE9uTm9kZTxEZXJpdmVkQXJyYXlVc2U+KG5vZGUpOwotICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgIGNhc2UgU3BlY0Rlcml2ZWRBcnJheToKKyAgICAgICAgICAg
ICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZURlcml2ZWRBcnJheSgpKSB7
CisgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAg
ICAgICAgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY05vbmUsIENoZWNrLCBub2RlLT5v
cmlnaW4sCisgICAgICAgICAgICAgICAgICAgICAgICBFZGdlKG5vZGUtPmNoaWxkMSgpLm5vZGUo
KSwgRGVyaXZlZEFycmF5VXNlKSk7CisgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguY29udmVy
dFRvQ29uc3RhbnQobm9kZSwganNCb29sZWFuKHRydWUpKTsKKyAgICAgICAgICAgICAgICAgICAg
b2JzZXJ2ZVVzZUtpbmRPbk5vZGU8RGVyaXZlZEFycmF5VXNlPihub2RlKTsKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKICAgICAg
ICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVDZWxsKCkpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKaW5kZXggMmI1MzFiMjY4OWM3MmY4NTY2YTM1N2My
OTZkMzBlNDI5MWMwNjM0Ni4uNzRmMDVjNDZmNDI2ZTc4OTZlMGM2NDBlOTU4ZGExOTQ5ODI1YTll
MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKQEAgLTI4MSw4ICsyODEs
OCBAQCB2b2lkIEdyYXBoOjpkdW1wKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IGNoYXIqIHByZWZp
eFN0ciwgTm9kZSogbm9kZSwgRHVtcENvbnRleAogICAgICAgICAgICAgfQogICAgICAgICB9CiAg
ICAgfQotICAgIGlmIChub2RlLT5oYXNTcGVjdWxhdGVkVHlwZUZvclF1ZXJ5KCkpCi0gICAgICAg
IG91dC5wcmludChjb21tYSwgU3BlY3VsYXRpb25EdW1wKG5vZGUtPnNwZWN1bGF0ZWRUeXBlRm9y
UXVlcnkoKSkpOworICAgIGlmIChub2RlLT5oYXNRdWVyaWVkVHlwZSgpKQorICAgICAgICBvdXQu
cHJpbnQoY29tbWEsIG5vZGUtPnF1ZXJpZWRUeXBlKCkpOwogICAgIGlmIChub2RlLT5oYXNTdG9y
YWdlQWNjZXNzRGF0YSgpKSB7CiAgICAgICAgIFN0b3JhZ2VBY2Nlc3NEYXRhJiBzdG9yYWdlQWNj
ZXNzRGF0YSA9IG5vZGUtPnN0b3JhZ2VBY2Nlc3NEYXRhKCk7CiAgICAgICAgIG91dC5wcmludChj
b21tYSwgImlkIiwgc3RvcmFnZUFjY2Vzc0RhdGEuaWRlbnRpZmllck51bWJlciwgInsiLCBpZGVu
dGlmaWVycygpW3N0b3JhZ2VBY2Nlc3NEYXRhLmlkZW50aWZpZXJOdW1iZXJdLCAifSIpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAppbmRleCA2NzZkZjYzNjViMTUwNWE1OWU3OGRkNDZi
YzI0N2FhNjVjYTI3NmI5Li4yZDU1MjRhNmJjOThiMDI0ODNmY2FhZWZmNmJmOTUwNWNhZDU1YTVh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaApAQCAtNzY3LDYgKzc2NywxNSBAQCBz
dHJ1Y3QgTm9kZSB7CiAgICAgICAgIG1fb3BJbmZvMiA9IGludGVybmFsOwogICAgIH0KIAorICAg
IHZvaWQgY29udmVydFRvTmV3R2VuZXJhdG9yKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJl
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fb3AgPT0gQ3JlYXRlR2VuZXJhdG9yKTsKKyAgICAg
ICAgc2V0T3BBbmREZWZhdWx0RmxhZ3MoTmV3R2VuZXJhdG9yKTsKKyAgICAgICAgY2hpbGRyZW4u
cmVzZXQoKTsKKyAgICAgICAgbV9vcEluZm8gPSBzdHJ1Y3R1cmU7CisgICAgICAgIG1fb3BJbmZv
MiA9IE9wSW5mb1dyYXBwZXIoKTsKKyAgICB9CisKICAgICB2b2lkIGNvbnZlcnRUb05ld0FycmF5
QnVmZmVyKEZyb3plblZhbHVlKiBpbW11dGFibGVCdXR0ZXJmbHkpOwogICAgIAogICAgIHZvaWQg
Y29udmVydFRvRGlyZWN0Q2FsbChGcm96ZW5WYWx1ZSopOwpAQCAtMTM3Miw3ICsxMzgxLDcgQEAg
c3RydWN0IE5vZGUgewogICAgICAgICByZXR1cm4gb3AoKSA9PSBJc0NlbGxXaXRoVHlwZTsKICAg
ICB9CiAKLSAgICBTcGVjdWxhdGVkVHlwZSBzcGVjdWxhdGVkVHlwZUZvclF1ZXJ5KCkKKyAgICBP
cHRpb25hbDxTcGVjdWxhdGVkVHlwZT4gc3BlY3VsYXRlZFR5cGVGb3JRdWVyeSgpCiAgICAgewog
ICAgICAgICByZXR1cm4gc3BlY3VsYXRpb25Gcm9tSlNUeXBlKHF1ZXJpZWRUeXBlKCkpOwogICAg
IH0KQEAgLTE5MDksNiArMTkxOCw3IEBAIHN0cnVjdCBOb2RlIHsKICAgICAgICAgY2FzZSBBcnJh
eWlmeVRvU3RydWN0dXJlOgogICAgICAgICBjYXNlIE5ld09iamVjdDoKICAgICAgICAgY2FzZSBO
ZXdQcm9taXNlOgorICAgICAgICBjYXNlIE5ld0dlbmVyYXRvcjoKICAgICAgICAgY2FzZSBOZXdT
dHJpbmdPYmplY3Q6CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgZGVmYXVsdDoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAppbmRleCA2ODU2MjhiZjRmMDY1
ZTZlN2NmZjdhNTcyMjg5MDBjZmJmZDI1M2QzLi4wMmI3ZDdlMWY4MmM3OTU1OTdlMjZjOWM3M2Qw
YWFlNmRiYTlkNjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05v
ZGVUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCkBA
IC01NCw2ICs1NCw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNy
byhUb1RoaXMsIE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKENyZWF0ZVRoaXMsIE5vZGVSZXN1
bHRKUykgLyogTm90ZSB0aGlzIGlzIG5vdCBNdXN0R2VuZXJhdGUgc2luY2Ugd2UncmUgcmV0dXJu
aW5nIGl0IGFueXdheS4gKi8gXAogICAgIG1hY3JvKENyZWF0ZVByb21pc2UsIE5vZGVSZXN1bHRK
UyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhDcmVhdGVHZW5lcmF0b3IsIE5vZGVS
ZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhHZXRDYWxsZWUsIE5vZGVS
ZXN1bHRKUykgXAogICAgIG1hY3JvKFNldENhbGxlZSwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAg
IG1hY3JvKEdldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBOb2RlUmVzdWx0SW50MzIpIFwK
QEAgLTM0MSw2ICszNDIsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAg
LyogQWxsb2NhdGlvbnMuICovXAogICAgIG1hY3JvKE5ld09iamVjdCwgTm9kZVJlc3VsdEpTKSBc
CiAgICAgbWFjcm8oTmV3UHJvbWlzZSwgTm9kZVJlc3VsdEpTKSBcCisgICAgbWFjcm8oTmV3R2Vu
ZXJhdG9yLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhOZXdBcnJheSwgTm9kZVJlc3VsdEpT
IHwgTm9kZUhhc1ZhckFyZ3MpIFwKICAgICBtYWNybyhOZXdBcnJheVdpdGhTcHJlYWQsIE5vZGVS
ZXN1bHRKUyB8IE5vZGVIYXNWYXJBcmdzKSBcCiAgICAgbWFjcm8oTmV3QXJyYXlXaXRoU2l6ZSwg
Tm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKaW5kZXggYWZhMjgyMjBkY2YzMDI0NDE0NDE1OTNlMzU3
M2Q4OWUzYWQ1MDMzZC4uYzMxNWMyNjUyN2M3NjJiMTNjMGU2ZTMzYzM0OWMyYmNiNjQ0NDlhYiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCkBAIC0zOTgs
NiArMzk4LDE2IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVJbnRlcm5h
bFByb21pc2UoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCoKICAgICBSRUxFQVNFX0FORF9SRVRV
Uk4oc2NvcGUsIEpTSW50ZXJuYWxQcm9taXNlOjpjcmVhdGUodm0sIHN0cnVjdHVyZSkpOwogfQog
CitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlR2VuZXJhdG9yKEV4ZWNTdGF0
ZSogZXhlYywgSlNPYmplY3QqIGNvbnN0cnVjdG9yLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0KQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcih2bSwgZXhlYyk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3Jl
YXRlU3ViY2xhc3NTdHJ1Y3R1cmUoZXhlYywgbnVsbHB0ciwgY29uc3RydWN0b3IsIGdsb2JhbE9i
amVjdC0+Z2VuZXJhdG9yU3RydWN0dXJlKCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIG51bGxwdHIpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNHZW5lcmF0b3I6
OmNyZWF0ZSh2bSwgc3RydWN0dXJlKSk7Cit9CisKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVy
YXRpb25DYWxsT2JqZWN0Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVGFyZ2V0KQogewogICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9u
cy5oCmluZGV4IGI5OGU2MjE3NWM2NmYzNmUzNjRkNThlOWRjODA2YWQwNTJkYzY1MmIuLjc0NGE1
MGRiZmVmODI3NWUyOWFmNzI5NjljNjg2NGEzNjYyYzU3MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCkBAIC01MCw2ICs1MCw3IEBAIEpTQ2VsbCogSklUX09Q
RVJBVElPTiBvcGVyYXRpb25PYmplY3RDcmVhdGVPYmplY3QoRXhlY1N0YXRlKiwgSlNPYmplY3Qq
KSBXVEZfSU5UCiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlVGhpcyhFeGVj
U3RhdGUqLCBKU09iamVjdCogY29uc3RydWN0b3IsIHVpbnQzMl90IGlubGluZUNhcGFjaXR5KSBX
VEZfSU5URVJOQUw7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlUHJvbWlz
ZShFeGVjU3RhdGUqLCBKU09iamVjdCogY29uc3RydWN0b3IsIEpTR2xvYmFsT2JqZWN0KikgV1RG
X0lOVEVSTkFMOwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZUludGVybmFs
UHJvbWlzZShFeGVjU3RhdGUqLCBKU09iamVjdCogY29uc3RydWN0b3IsIEpTR2xvYmFsT2JqZWN0
KikgV1RGX0lOVEVSTkFMOworSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZUdl
bmVyYXRvcihFeGVjU3RhdGUqLCBKU09iamVjdCogY29uc3RydWN0b3IsIEpTR2xvYmFsT2JqZWN0
KikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25U
b1RoaXMoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSkgV1RGX0lOVEVSTkFM
OwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Ub1RoaXNTdHJpY3QoRXhl
Y1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSkgV1RGX0lOVEVSTkFMOwogRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZU1vZChFeGVjU3RhdGUqLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKSBXVEZfSU5U
RVJOQUw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rp
b25Qcm9wYWdhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJl
ZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4IDAwYWM1NWM2ZTY2OWJlNDIxN2NkZDBh
NzA1MDM4N2QwZTQzMDU4NDEuLmMzZDkyMWNkNzFhNTgzNjQ3OTBhMWNjZWE5OTQ0OGNlZjI0Zjdm
NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblBy
b3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJl
ZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC0xMDE1LDYgKzEwMTUsMTEgQEAgY2xhc3Mg
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICBjYXNl
IE5ld1Byb21pc2U6CiAgICAgICAgICAgICBzZXRQcmVkaWN0aW9uKFNwZWNQcm9taXNlT2JqZWN0
KTsKICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgQ3JlYXRlR2VuZXJhdG9yOgor
ICAgICAgICBjYXNlIE5ld0dlbmVyYXRvcjoKKyAgICAgICAgICAgIHNldFByZWRpY3Rpb24oU3Bl
Y09iamVjdE90aGVyKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgICAg
IGNhc2UgQXJyYXlTbGljZToKICAgICAgICAgY2FzZSBOZXdBcnJheVdpdGhTcHJlYWQ6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCmluZGV4IDY4MzdlMjM1
YjMwNjI1NTc3MThmNWYxMzJjMDQ2ODJjZDhjZWM5M2IuLjdkOGVlZTg0ZGZhNzdjYzQ3ZmViMTk1
MGFlZTFkNjNiZGE3ODVjMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU2FmZVRvRXhlY3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2Fm
ZVRvRXhlY3V0ZS5oCkBAIC0xNzksNiArMTc5LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3Ry
YWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBib29sIGlnbm8K
ICAgICBjYXNlIFRvVGhpczoKICAgICBjYXNlIENyZWF0ZVRoaXM6CiAgICAgY2FzZSBDcmVhdGVQ
cm9taXNlOgorICAgIGNhc2UgQ3JlYXRlR2VuZXJhdG9yOgogICAgIGNhc2UgT2JqZWN0Q3JlYXRl
OgogICAgIGNhc2UgT2JqZWN0S2V5czoKICAgICBjYXNlIEdldENhbGxlZToKQEAgLTMyMSw2ICsz
MjIsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFw
aCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGJvb2wgaWdubwogICAgIGNhc2UgQ29uc3RydWN0Rm9yd2Fy
ZFZhcmFyZ3M6CiAgICAgY2FzZSBOZXdPYmplY3Q6CiAgICAgY2FzZSBOZXdQcm9taXNlOgorICAg
IGNhc2UgTmV3R2VuZXJhdG9yOgogICAgIGNhc2UgTmV3QXJyYXk6CiAgICAgY2FzZSBOZXdBcnJh
eVdpdGhTaXplOgogICAgIGNhc2UgTmV3QXJyYXlCdWZmZXI6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IDU2N2FkOTQzOGI5YmE2Njgw
YTQ0Y2RmNmMwNzRhMDI1NzYxYTAwMWEuLmY4MTIwYWE2ODI3OTNjZDQ1MjkyZjM0ZDBmZGVjMmM1
MTJhY2VhNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwCkBAIC0xMjcyMiw2ICsxMjcyMiw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVDcmVhdGVQcm9taXNlKE5vZGUqIG5vZGUpCiAgICAgbV9qaXQubG9hZFB0cihKSVRDb21w
aWxlcjo6QWRkcmVzcyhjYWxsZWVHUFIsIEpTRnVuY3Rpb246Om9mZnNldE9mUmFyZURhdGEoKSks
IHJhcmVEYXRhR1BSKTsKICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaFRlc3RQdHIo
TWFjcm9Bc3NlbWJsZXI6Olplcm8sIHJhcmVEYXRhR1BSKSk7CiAgICAgbV9qaXQubG9hZFB0cihK
SVRDb21waWxlcjo6QWRkcmVzcyhyYXJlRGF0YUdQUiwgRnVuY3Rpb25SYXJlRGF0YTo6b2Zmc2V0
T2ZJbnRlcm5hbEZ1bmN0aW9uQWxsb2NhdGlvblByb2ZpbGUoKSArIEludGVybmFsRnVuY3Rpb25B
bGxvY2F0aW9uUHJvZmlsZTo6b2Zmc2V0T2ZTdHJ1Y3R1cmUoKSksIHN0cnVjdHVyZUdQUik7Cisg
ICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hUZXN0UHRyKENDYWxsSGVscGVyczo6WmVy
bywgc3RydWN0dXJlR1BSKSk7CiAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyKG5vZGUtPmlz
SW50ZXJuYWxQcm9taXNlKCkgPyBKU0ludGVybmFsUHJvbWlzZTo6aW5mbygpIDogSlNQcm9taXNl
OjppbmZvKCkpLCBzY3JhdGNoMUdQUik7CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFu
Y2hQdHIoQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwgc2NyYXRjaDFHUFIsIENDYWxsSGVscGVyczo6
QWRkcmVzcyhzdHJ1Y3R1cmVHUFIsIFN0cnVjdHVyZTo6Y2xhc3NJbmZvT2Zmc2V0KCkpKSk7CiAg
ICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2ppdC5ncmFwaCgpLCBn
bG9iYWxPYmplY3QpLCBzY3JhdGNoMUdQUik7CkBAIC0xMjc0Miw2ICsxMjc0Myw1MSBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3JlYXRlUHJvbWlzZShOb2RlKiBub2RlKQogICAgIGNl
bGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIH0KIAordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUNyZWF0ZUdlbmVyYXRvcihOb2RlKiBub2RlKQoreworICAgIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QgPSBtX2ppdC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KTsKKworICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGNhbGxlZSh0aGlzLCBub2RlLT5jaGlsZDEo
KSk7CisgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICBHUFJUZW1wb3Jhcnkgc3Ry
dWN0dXJlKHRoaXMpOworICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoMSh0aGlzKTsKKyAgICBHUFJU
ZW1wb3Jhcnkgc2NyYXRjaDIodGhpcyk7CisKKyAgICBHUFJSZWcgY2FsbGVlR1BSID0gY2FsbGVl
LmdwcigpOworICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisgICAgR1BSUmVn
IHN0cnVjdHVyZUdQUiA9IHN0cnVjdHVyZS5ncHIoKTsKKyAgICBHUFJSZWcgc2NyYXRjaDFHUFIg
PSBzY3JhdGNoMS5ncHIoKTsKKyAgICBHUFJSZWcgc2NyYXRjaDJHUFIgPSBzY3JhdGNoMi5ncHIo
KTsKKyAgICAvLyBSYXJlIGRhdGEgaXMgb25seSB1c2VkIHRvIGFjY2VzcyB0aGUgYWxsb2NhdG9y
ICYgc3RydWN0dXJlCisgICAgLy8gV2UgY2FuIGF2b2lkIHVzaW5nIGFuIGFkZGl0aW9uYWwgR1BS
IHRoaXMgd2F5CisgICAgR1BSUmVnIHJhcmVEYXRhR1BSID0gc3RydWN0dXJlR1BSOworCisgICAg
TWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IHNsb3dDYXNlczsKKworICAgIHNsb3dDYXNlcy5hcHBl
bmQobV9qaXQuYnJhbmNoSWZOb3RGdW5jdGlvbihjYWxsZWVHUFIpKTsKKyAgICBtX2ppdC5sb2Fk
UHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGNhbGxlZUdQUiwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZS
YXJlRGF0YSgpKSwgcmFyZURhdGFHUFIpOworICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJh
bmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6WmVybywgcmFyZURhdGFHUFIpKTsKKyAgICBtX2pp
dC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKHJhcmVEYXRhR1BSLCBGdW5jdGlvblJhcmVE
YXRhOjpvZmZzZXRPZkludGVybmFsRnVuY3Rpb25BbGxvY2F0aW9uUHJvZmlsZSgpICsgSW50ZXJu
YWxGdW5jdGlvbkFsbG9jYXRpb25Qcm9maWxlOjpvZmZzZXRPZlN0cnVjdHVyZSgpKSwgc3RydWN0
dXJlR1BSKTsKKyAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaFRlc3RQdHIoQ0NhbGxI
ZWxwZXJzOjpaZXJvLCBzdHJ1Y3R1cmVHUFIpKTsKKyAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1Q
dHIoSlNHZW5lcmF0b3I6OmluZm8oKSksIHNjcmF0Y2gxR1BSKTsKKyAgICBzbG93Q2FzZXMuYXBw
ZW5kKG1faml0LmJyYW5jaFB0cihDQ2FsbEhlbHBlcnM6Ok5vdEVxdWFsLCBzY3JhdGNoMUdQUiwg
Q0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0cnVjdHVyZUdQUiwgU3RydWN0dXJlOjpjbGFzc0luZm9P
ZmZzZXQoKSkpKTsKKyAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1f
aml0LmdyYXBoKCksIGdsb2JhbE9iamVjdCksIHNjcmF0Y2gxR1BSKTsKKyAgICBzbG93Q2FzZXMu
YXBwZW5kKG1faml0LmJyYW5jaFB0cihDQ2FsbEhlbHBlcnM6Ok5vdEVxdWFsLCBzY3JhdGNoMUdQ
UiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0cnVjdHVyZUdQUiwgU3RydWN0dXJlOjpnbG9iYWxP
YmplY3RPZmZzZXQoKSkpKTsKKworICAgIGF1dG8gYnV0dGVyZmx5ID0gVHJ1c3RlZEltbVB0cihu
dWxscHRyKTsKKyAgICBlbWl0QWxsb2NhdGVKU09iamVjdFdpdGhLbm93blNpemU8SlNHZW5lcmF0
b3I+KHJlc3VsdEdQUiwgc3RydWN0dXJlR1BSLCBidXR0ZXJmbHksIHNjcmF0Y2gxR1BSLCBzY3Jh
dGNoMkdQUiwgc2xvd0Nhc2VzLCBzaXplb2YoSlNHZW5lcmF0b3IpKTsKKyAgICBtX2ppdC5zdG9y
ZVRydXN0ZWRWYWx1ZShqc051bGwoKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHJlc3VsdEdQUiwg
SlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbDw+OjpvZmZzZXRPZkludGVybmFsRmllbGQoc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTR2VuZXJhdG9yOjpGaWVsZDo6UG9seVByb3RvKSkpKTsKKyAgICBt
X2ppdC5zdG9yZVRydXN0ZWRWYWx1ZShqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dl
bmVyYXRvcjo6R2VuZXJhdG9yU3RhdGU6OkluaXQpKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHJl
c3VsdEdQUiwgSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbDw+OjpvZmZzZXRPZkludGVybmFsRmll
bGQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTR2VuZXJhdG9yOjpGaWVsZDo6U3RhdGUpKSkpOwor
ICAgIG1faml0LnN0b3JlVHJ1c3RlZFZhbHVlKGpzVW5kZWZpbmVkKCksIENDYWxsSGVscGVyczo6
QWRkcmVzcyhyZXN1bHRHUFIsIEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGw8Pjo6b2Zmc2V0T2ZJ
bnRlcm5hbEZpZWxkKHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0dlbmVyYXRvcjo6RmllbGQ6Ok5l
eHQpKSkpOworICAgIG1faml0LnN0b3JlVHJ1c3RlZFZhbHVlKGpzVW5kZWZpbmVkKCksIENDYWxs
SGVscGVyczo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGw8Pjo6
b2Zmc2V0T2ZJbnRlcm5hbEZpZWxkKHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0dlbmVyYXRvcjo6
RmllbGQ6OlRoaXMpKSkpOworICAgIG1faml0LnN0b3JlVHJ1c3RlZFZhbHVlKGpzVW5kZWZpbmVk
KCksIENDYWxsSGVscGVyczo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTSW50ZXJuYWxGaWVsZE9iamVj
dEltcGw8Pjo6b2Zmc2V0T2ZJbnRlcm5hbEZpZWxkKHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0dl
bmVyYXRvcjo6RmllbGQ6OkZyYW1lKSkpKTsKKyAgICBtX2ppdC5tdXRhdG9yRmVuY2UobV9qaXQu
dm0oKSk7CisKKyAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd0Nhc2Vz
LCB0aGlzLCBvcGVyYXRpb25DcmVhdGVHZW5lcmF0b3IsIHJlc3VsdEdQUiwgY2FsbGVlR1BSLCBU
cnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2ppdC5ncmFwaCgpLCBnbG9iYWxPYmplY3QpKSk7
CisKKyAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7Cit9CisKIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVOZXdPYmplY3QoTm9kZSogbm9kZSkKIHsKICAgICBHUFJUZW1wb3Jhcnkg
cmVzdWx0KHRoaXMpOwpAQCAtMTI3OTgsNiArMTI4NDQsMzMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZU5ld1Byb21pc2UoTm9kZSogbm9kZSkKICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQ
Uiwgbm9kZSk7CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdHZW5lcmF0b3Io
Tm9kZSogbm9kZSkKK3sKKyAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworICAgIEdQUlRl
bXBvcmFyeSBzY3JhdGNoMSh0aGlzKTsKKyAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDIodGhpcyk7
CisKKyAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworICAgIEdQUlJlZyBzY3Jh
dGNoMUdQUiA9IHNjcmF0Y2gxLmdwcigpOworICAgIEdQUlJlZyBzY3JhdGNoMkdQUiA9IHNjcmF0
Y2gyLmdwcigpOworCisgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IHNsb3dDYXNlczsKKwor
ICAgIEZyb3plblZhbHVlKiBzdHJ1Y3R1cmUgPSBtX2dyYXBoLmZyZWV6ZVN0cm9uZyhub2RlLT5z
dHJ1Y3R1cmUoKS5nZXQoKSk7CisgICAgYXV0byBidXR0ZXJmbHkgPSBUcnVzdGVkSW1tUHRyKG51
bGxwdHIpOworICAgIGVtaXRBbGxvY2F0ZUpTT2JqZWN0V2l0aEtub3duU2l6ZTxKU0dlbmVyYXRv
cj4ocmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIGJ1dHRlcmZseSwgc2NyYXRj
aDFHUFIsIHNjcmF0Y2gyR1BSLCBzbG93Q2FzZXMsIHNpemVvZihKU0dlbmVyYXRvcikpOworICAg
IG1faml0LnN0b3JlVHJ1c3RlZFZhbHVlKGpzTnVsbCgpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mo
cmVzdWx0R1BSLCBKU0ludGVybmFsRmllbGRPYmplY3RJbXBsPD46Om9mZnNldE9mSW50ZXJuYWxG
aWVsZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNHZW5lcmF0b3I6OkZpZWxkOjpQb2x5UHJvdG8p
KSkpOworICAgIG1faml0LnN0b3JlVHJ1c3RlZFZhbHVlKGpzTnVtYmVyKHN0YXRpY19jYXN0PGlu
dDMyX3Q+KEpTR2VuZXJhdG9yOjpHZW5lcmF0b3JTdGF0ZTo6SW5pdCkpLCBDQ2FsbEhlbHBlcnM6
OkFkZHJlc3MocmVzdWx0R1BSLCBKU0ludGVybmFsRmllbGRPYmplY3RJbXBsPD46Om9mZnNldE9m
SW50ZXJuYWxGaWVsZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNHZW5lcmF0b3I6OkZpZWxkOjpT
dGF0ZSkpKSk7CisgICAgbV9qaXQuc3RvcmVUcnVzdGVkVmFsdWUoanNVbmRlZmluZWQoKSwgQ0Nh
bGxIZWxwZXJzOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbDw+
OjpvZmZzZXRPZkludGVybmFsRmllbGQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTR2VuZXJhdG9y
OjpGaWVsZDo6TmV4dCkpKSk7CisgICAgbV9qaXQuc3RvcmVUcnVzdGVkVmFsdWUoanNVbmRlZmlu
ZWQoKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNJbnRlcm5hbEZpZWxkT2Jq
ZWN0SW1wbDw+OjpvZmZzZXRPZkludGVybmFsRmllbGQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
R2VuZXJhdG9yOjpGaWVsZDo6VGhpcykpKSk7CisgICAgbV9qaXQuc3RvcmVUcnVzdGVkVmFsdWUo
anNVbmRlZmluZWQoKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNJbnRlcm5h
bEZpZWxkT2JqZWN0SW1wbDw+OjpvZmZzZXRPZkludGVybmFsRmllbGQoc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTR2VuZXJhdG9yOjpGaWVsZDo6RnJhbWUpKSkpOworICAgIG1faml0Lm11dGF0b3JG
ZW5jZShtX2ppdC52bSgpKTsKKworICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2Fs
bChzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbk5ld0dlbmVyYXRvciwgcmVzdWx0R1BSLCBUcnVz
dGVkSW1tUHRyKHN0cnVjdHVyZSkpKTsKKworICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2Rl
KTsKK30KKwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVRvUHJpbWl0aXZlKE5vZGUqIG5v
ZGUpCiB7CiAgICAgREZHX0FTU0VSVChtX2ppdC5ncmFwaCgpLCBub2RlLCBub2RlLT5jaGlsZDEo
KS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSwgbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAppbmRleCBjODM1
NGExMjI1MzQ1ZjE5YTRmOWJiOGZjZDFjYjE2NjI1NjFlODIzLi4yZDMyMmQ0ZTE0MWQxYzllMGRj
MzEzYjRmMWFkMTliMjI4MmM1MjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5oCkBAIC0xNDc0LDggKzE0NzQsMTAgQEAgY2xhc3MgU3BlY3VsYXRp
dmVKSVQgewogICAgIHZvaWQgY29tcGlsZU9iamVjdENyZWF0ZShOb2RlKik7CiAgICAgdm9pZCBj
b21waWxlQ3JlYXRlVGhpcyhOb2RlKik7CiAgICAgdm9pZCBjb21waWxlQ3JlYXRlUHJvbWlzZShO
b2RlKik7CisgICAgdm9pZCBjb21waWxlQ3JlYXRlR2VuZXJhdG9yKE5vZGUqKTsKICAgICB2b2lk
IGNvbXBpbGVOZXdPYmplY3QoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZU5ld1Byb21pc2UoTm9k
ZSopOworICAgIHZvaWQgY29tcGlsZU5ld0dlbmVyYXRvcihOb2RlKik7CiAgICAgdm9pZCBjb21w
aWxlVG9QcmltaXRpdmUoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUxvZ1NoYWRvd0NoaWNrZW5Q
cm9sb2d1ZShOb2RlKik7CiAgICAgdm9pZCBjb21waWxlTG9nU2hhZG93Q2hpY2tlblRhaWwoTm9k
ZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQzMl82NC5jcHAKaW5kZXggZTllOTI5MTJkYTMyMWRkNzYyM2M0N2RjNDQzODllM2I3YWU2OWQ5
ZC4uYTZkNDZhNTQ1NjgxNzA4YTliNGQ4NmQwOTkzNzM2OTNiMTk0MWE2NyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCkBA
IC0zMTU3LDYgKzMxNTcsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBu
b2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIENyZWF0ZUdlbmVyYXRvcjog
eworICAgICAgICBjb21waWxlQ3JlYXRlR2VuZXJhdG9yKG5vZGUpOworICAgICAgICBicmVhazsK
KyAgICB9CisKICAgICBjYXNlIE5ld09iamVjdDogewogICAgICAgICBjb21waWxlTmV3T2JqZWN0
KG5vZGUpOwogICAgICAgICBicmVhazsKQEAgLTMxNjcsNiArMzE3MiwxMSBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAor
ICAgIGNhc2UgTmV3R2VuZXJhdG9yOiB7CisgICAgICAgIGNvbXBpbGVOZXdHZW5lcmF0b3Iobm9k
ZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgR2V0Q2FsbGVlOiB7CiAgICAg
ICAgIGNvbXBpbGVHZXRDYWxsZWUobm9kZSk7CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggZWVjMjEw
ZTc5NjViMmQ2MDg4NzMxZmEyZWFlNmQ4MDUxODM4MjY3MS4uMzczMzg0M2IzYzljYWZjYzAyNTEy
YTBlNWU4NjdiMTVkNGIzNzJlYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC0zNDgzLDYgKzM0ODMsMTEgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjb21waWxlQ3JlYXRlUHJv
bWlzZShub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorCisgICAgY2FzZSBDcmVhdGVHZW5l
cmF0b3I6IHsKKyAgICAgICAgY29tcGlsZUNyZWF0ZUdlbmVyYXRvcihub2RlKTsKKyAgICAgICAg
YnJlYWs7CisgICAgfQogICAgICAgICAKICAgICBjYXNlIE5ld09iamVjdDogewogICAgICAgICBj
b21waWxlTmV3T2JqZWN0KG5vZGUpOwpAQCAtMzQ5NCw2ICszNDk5LDExIEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisg
ICAgY2FzZSBOZXdHZW5lcmF0b3I6IHsKKyAgICAgICAgY29tcGlsZU5ld0dlbmVyYXRvcihub2Rl
KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBHZXRDYWxsZWU6IHsKICAgICAg
ICAgY29tcGlsZUdldENhbGxlZShub2RlKTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhh
c2UuY3BwCmluZGV4IDI0YjU1ZTc4OGQ5ZGU5YjUwNjk5Njc1NTc1Mzc3MzhiMzMyYmUzNTcuLjBk
NTkwMTg2ZDgzYmRiNDc0NWVmN2M3YzE1Njc0MTAyNDUyMzllYzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhh
c2UuY3BwCkBAIC0zMjIsNiArMzIyLDcgQEAgY2xhc3MgU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhh
c2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgc3dpdGNoIChtX25vZGUtPm9wKCkpIHsK
ICAgICAgICAgICAgIGNhc2UgTmV3T2JqZWN0OgogICAgICAgICAgICAgY2FzZSBOZXdQcm9taXNl
OgorICAgICAgICAgICAgY2FzZSBOZXdHZW5lcmF0b3I6CiAgICAgICAgICAgICBjYXNlIE5ld0Fy
cmF5OgogICAgICAgICAgICAgY2FzZSBOZXdBcnJheVdpdGhTaXplOgogICAgICAgICAgICAgY2Fz
ZSBOZXdBcnJheUJ1ZmZlcjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJp
bGl0aWVzLmNwcAppbmRleCAxOTg5NDc4NzMwNzk0OTNmODlhNWU0MzUzYjhjZTVlNGI4N2NiYjhl
Li5lYWQyNTlhMDE0NzUyZTJjMzY5MjZkOGQxNmMzNThhZjE2NGYwYjM5IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCkBAIC03NSw2ICs3NSw3IEBA
IGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2Ug
R2V0QnV0dGVyZmx5OgogICAgIGNhc2UgTmV3T2JqZWN0OgogICAgIGNhc2UgTmV3UHJvbWlzZToK
KyAgICBjYXNlIE5ld0dlbmVyYXRvcjoKICAgICBjYXNlIE5ld1N0cmluZ09iamVjdDoKICAgICBj
YXNlIE5ld1N5bWJvbDoKICAgICBjYXNlIE5ld0FycmF5OgpAQCAtMzgwLDYgKzM4MSw3IEBAIGlu
bGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgRmls
dGVySW5CeUlkU3RhdHVzOgogICAgIGNhc2UgQ3JlYXRlVGhpczoKICAgICBjYXNlIENyZWF0ZVBy
b21pc2U6CisgICAgY2FzZSBDcmVhdGVHZW5lcmF0b3I6CiAgICAgY2FzZSBEYXRhVmlld0dldElu
dDoKICAgICBjYXNlIERhdGFWaWV3R2V0RmxvYXQ6CiAgICAgY2FzZSBEYXRhVmlld1NldDoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCA0YTM1
ZDFiM2IwZGNmMDhmZDAyNTE4NjViOTkyMDQxMDMzMTkyMDFhLi4zMGMzYWVhY2Y3MGRmMDk2ZmY0
OGFlMWJlNTExNjIyYmE1YzY4YzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExMb3dlckRGR1RvQjMuY3BwCkBAIC03OCw2ICs3OCw3IEBACiAjaW5jbHVkZSAiSlNBc3luY0Z1
bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uLmgiCiAjaW5jbHVk
ZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNH
ZW5lcmF0b3JGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTSW1tdXRhYmxlQnV0dGVyZmx5LmgiCiAj
aW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKQEAgLTEwNDgsNiArMTA0OSw5IEBAIGNs
YXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIGNhc2UgTmV3UHJvbWlzZToKICAgICAgICAgICAg
IGNvbXBpbGVOZXdQcm9taXNlKCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBO
ZXdHZW5lcmF0b3I6CisgICAgICAgICAgICBjb21waWxlTmV3R2VuZXJhdG9yKCk7CisgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBOZXdTdHJpbmdPYmplY3Q6CiAgICAgICAgICAgICBj
b21waWxlTmV3U3RyaW5nT2JqZWN0KCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTEwNjYsNiAr
MTA3MCw5IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIGNhc2UgQ3JlYXRlUHJvbWlz
ZToKICAgICAgICAgICAgIGNvbXBpbGVDcmVhdGVQcm9taXNlKCk7CiAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBDcmVhdGVHZW5lcmF0b3I6CisgICAgICAgICAgICBjb21waWxlQ3Jl
YXRlR2VuZXJhdG9yKCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBTcHJlYWQ6
CiAgICAgICAgICAgICBjb21waWxlU3ByZWFkKCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTU5
MTIsNiArNTkxOSwzMSBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBzZXRKU1ZhbHVl
KG1fb3V0LnBoaShwb2ludGVyVHlwZSgpLCBmYXN0UmVzdWx0LCBzbG93UmVzdWx0KSk7CiAgICAg
fQogCisgICAgdm9pZCBjb21waWxlTmV3R2VuZXJhdG9yKCkKKyAgICB7CisgICAgICAgIExCYXNp
Y0Jsb2NrIHNsb3dDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sg
Y29udGludWF0aW9uID0gbV9vdXQubmV3QmxvY2soKTsKKworICAgICAgICBMQmFzaWNCbG9jayBs
YXN0TmV4dCA9IG1fb3V0Lmluc2VydE5ld0Jsb2Nrc0JlZm9yZShzbG93Q2FzZSk7CisKKyAgICAg
ICAgTFZhbHVlIGdlbmVyYXRvciA9IGFsbG9jYXRlT2JqZWN0PEpTR2VuZXJhdG9yPihtX25vZGUt
PnN0cnVjdHVyZSgpLCBtX291dC5pbnRQdHJaZXJvLCBzbG93Q2FzZSk7CisgICAgICAgIG1fb3V0
LnN0b3JlNjQobV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjplbmNvZGUoanNOdWxsKCkpKSwgZ2Vu
ZXJhdG9yLCBtX2hlYXBzLkpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGxfaW50ZXJuYWxGaWVsZHNb
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTR2VuZXJhdG9yOjpGaWVsZDo6UG9seVByb3RvKV0pOwor
ICAgICAgICBtX291dC5zdG9yZTY0KG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6ZW5jb2RlKGpz
TnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpHZW5lcmF0b3JTdGF0ZTo6
SW5pdCkpKSksIGdlbmVyYXRvciwgbV9oZWFwcy5KU0ludGVybmFsRmllbGRPYmplY3RJbXBsX2lu
dGVybmFsRmllbGRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihKU0dlbmVyYXRvcjo6RmllbGQ6OlN0
YXRlKV0pOworICAgICAgICBtX291dC5zdG9yZTY0KG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpKSwgZ2VuZXJhdG9yLCBtX2hlYXBzLkpTSW50ZXJuYWxGaWVs
ZE9iamVjdEltcGxfaW50ZXJuYWxGaWVsZHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTR2VuZXJh
dG9yOjpGaWVsZDo6TmV4dCldKTsKKyAgICAgICAgbV9vdXQuc3RvcmU2NChtX291dC5jb25zdElu
dDY0KEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKSksIGdlbmVyYXRvciwgbV9oZWFwcy5K
U0ludGVybmFsRmllbGRPYmplY3RJbXBsX2ludGVybmFsRmllbGRzW3N0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0dlbmVyYXRvcjo6RmllbGQ6OlRoaXMpXSk7CisgICAgICAgIG1fb3V0LnN0b3JlNjQo
bV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSkpLCBnZW5lcmF0
b3IsIG1faGVhcHMuSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbF9pbnRlcm5hbEZpZWxkc1tzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNHZW5lcmF0b3I6OkZpZWxkOjpGcmFtZSldKTsKKyAgICAgICAg
bXV0YXRvckZlbmNlKCk7CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIGZhc3RSZXN1bHQgPSBtX291
dC5hbmNob3IoZ2VuZXJhdG9yKTsKKyAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwor
CisgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dDYXNlLCBjb250aW51YXRpb24pOworICAgICAg
ICBWYWx1ZUZyb21CbG9jayBzbG93UmVzdWx0ID0gbV9vdXQuYW5jaG9yKHZtQ2FsbChwb2ludGVy
VHlwZSgpLCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uTmV3R2VuZXJhdG9yKSwgbV9jYWxsRnJh
bWUsIGZyb3plblBvaW50ZXIobV9ncmFwaC5mcmVlemVTdHJvbmcobV9ub2RlLT5zdHJ1Y3R1cmUo
KS5nZXQoKSkpKSk7CisgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAg
ICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKKyAgICAgICAgc2V0SlNW
YWx1ZShtX291dC5waGkocG9pbnRlclR5cGUoKSwgZmFzdFJlc3VsdCwgc2xvd1Jlc3VsdCkpOwor
ICAgIH0KKwogICAgIHZvaWQgY29tcGlsZU5ld1N0cmluZ09iamVjdCgpCiAgICAgewogICAgICAg
ICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSA9IG1fbm9kZS0+c3RydWN0dXJlKCk7CkBA
IC02Mjc5LDYgKzYzMTEsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBMQmFzaWNC
bG9jayBkZXJpdmVkQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgIExCYXNpY0Jsb2Nr
IGlzRnVuY3Rpb25CbG9jayA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgIExCYXNpY0Jsb2Nr
IGhhc1JhcmVEYXRhID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgaGFz
U3RydWN0dXJlID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgTEJhc2ljQmxvY2sgY2hlY2tH
bG9iYWxPYmplY3RDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgTEJhc2ljQmxvY2sg
ZmFzdEFsbG9jYXRpb25DYXNlID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgTEJhc2ljQmxv
Y2sgc2xvd0Nhc2UgPSBtX291dC5uZXdCbG9jaygpOwpAQCAtNjI5NCw4ICs2MzI3LDExIEBAIGNs
YXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIExWYWx1ZSByYXJlRGF0YSA9IG1fb3V0LmxvYWRQ
dHIoY2FsbGVlLCBtX2hlYXBzLkpTRnVuY3Rpb25fcmFyZURhdGEpOwogICAgICAgICBtX291dC5i
cmFuY2gobV9vdXQuaXNaZXJvNjQocmFyZURhdGEpLCByYXJlbHkoc2xvd0Nhc2UpLCB1c3VhbGx5
KGhhc1JhcmVEYXRhKSk7CiAKLSAgICAgICAgbV9vdXQuYXBwZW5kVG8oaGFzUmFyZURhdGEsIGZh
c3RBbGxvY2F0aW9uQ2FzZSk7CisgICAgICAgIG1fb3V0LmFwcGVuZFRvKGhhc1JhcmVEYXRhLCBo
YXNTdHJ1Y3R1cmUpOwogICAgICAgICBMVmFsdWUgc3RydWN0dXJlID0gbV9vdXQubG9hZFB0cihy
YXJlRGF0YSwgbV9oZWFwcy5GdW5jdGlvblJhcmVEYXRhX2ludGVybmFsRnVuY3Rpb25BbGxvY2F0
aW9uUHJvZmlsZV9zdHJ1Y3R1cmUpOworICAgICAgICBtX291dC5icmFuY2gobV9vdXQuaXNaZXJv
NjQoc3RydWN0dXJlKSwgcmFyZWx5KHNsb3dDYXNlKSwgdXN1YWxseShoYXNTdHJ1Y3R1cmUpKTsK
KworICAgICAgICBtX291dC5hcHBlbmRUbyhoYXNTdHJ1Y3R1cmUsIGNoZWNrR2xvYmFsT2JqZWN0
Q2FzZSk7CiAgICAgICAgIG1fb3V0LmJyYW5jaChtX291dC5lcXVhbChtX291dC5sb2FkUHRyKHN0
cnVjdHVyZSwgbV9oZWFwcy5TdHJ1Y3R1cmVfY2xhc3NJbmZvKSwgbV9vdXQuY29uc3RJbnRQdHIo
bV9ub2RlLT5pc0ludGVybmFsUHJvbWlzZSgpID8gSlNJbnRlcm5hbFByb21pc2U6OmluZm8oKSA6
IEpTUHJvbWlzZTo6aW5mbygpKSksIHVzdWFsbHkoY2hlY2tHbG9iYWxPYmplY3RDYXNlKSwgcmFy
ZWx5KHNsb3dDYXNlKSk7CiAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY2hlY2tHbG9iYWxPYmpl
Y3RDYXNlLCBmYXN0QWxsb2NhdGlvbkNhc2UpOwpAQCAtNjMyNCw2ICs2MzYwLDU3IEBAIGNsYXNz
IExvd2VyREZHVG9CMyB7CiAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKICAgICB9CiAKKyAg
ICB2b2lkIGNvbXBpbGVDcmVhdGVHZW5lcmF0b3IoKQorICAgIHsKKyAgICAgICAgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3Jp
Z2luLnNlbWFudGljKTsKKworICAgICAgICBMVmFsdWUgY2FsbGVlID0gbG93Q2VsbChtX25vZGUt
PmNoaWxkMSgpKTsKKworICAgICAgICBMQmFzaWNCbG9jayBpc0Z1bmN0aW9uQmxvY2sgPSBtX291
dC5uZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9jayBoYXNSYXJlRGF0YSA9IG1fb3V0Lm5l
d0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIGhhc1N0cnVjdHVyZSA9IG1fb3V0Lm5ld0Js
b2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIGNoZWNrR2xvYmFsT2JqZWN0Q2FzZSA9IG1fb3V0
Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIGZhc3RBbGxvY2F0aW9uQ2FzZSA9IG1f
b3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIHNsb3dDYXNlID0gbV9vdXQubmV3
QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9vdXQubmV3Qmxv
Y2soKTsKKworICAgICAgICBtX291dC5icmFuY2goaXNGdW5jdGlvbihjYWxsZWUsIHByb3ZlblR5
cGUobV9ub2RlLT5jaGlsZDEoKSkpLCB1c3VhbGx5KGlzRnVuY3Rpb25CbG9jayksIHJhcmVseShz
bG93Q2FzZSkpOworCisgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5k
VG8oaXNGdW5jdGlvbkJsb2NrLCBoYXNSYXJlRGF0YSk7CisgICAgICAgIExWYWx1ZSByYXJlRGF0
YSA9IG1fb3V0LmxvYWRQdHIoY2FsbGVlLCBtX2hlYXBzLkpTRnVuY3Rpb25fcmFyZURhdGEpOwor
ICAgICAgICBtX291dC5icmFuY2gobV9vdXQuaXNaZXJvNjQocmFyZURhdGEpLCByYXJlbHkoc2xv
d0Nhc2UpLCB1c3VhbGx5KGhhc1JhcmVEYXRhKSk7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8o
aGFzUmFyZURhdGEsIGhhc1N0cnVjdHVyZSk7CisgICAgICAgIExWYWx1ZSBzdHJ1Y3R1cmUgPSBt
X291dC5sb2FkUHRyKHJhcmVEYXRhLCBtX2hlYXBzLkZ1bmN0aW9uUmFyZURhdGFfaW50ZXJuYWxG
dW5jdGlvbkFsbG9jYXRpb25Qcm9maWxlX3N0cnVjdHVyZSk7CisgICAgICAgIG1fb3V0LmJyYW5j
aChtX291dC5pc1plcm82NChzdHJ1Y3R1cmUpLCByYXJlbHkoc2xvd0Nhc2UpLCB1c3VhbGx5KGhh
c1N0cnVjdHVyZSkpOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKGhhc1N0cnVjdHVyZSwgY2hl
Y2tHbG9iYWxPYmplY3RDYXNlKTsKKyAgICAgICAgbV9vdXQuYnJhbmNoKG1fb3V0LmVxdWFsKG1f
b3V0LmxvYWRQdHIoc3RydWN0dXJlLCBtX2hlYXBzLlN0cnVjdHVyZV9jbGFzc0luZm8pLCBtX291
dC5jb25zdEludFB0cihKU0dlbmVyYXRvcjo6aW5mbygpKSksIHVzdWFsbHkoY2hlY2tHbG9iYWxP
YmplY3RDYXNlKSwgcmFyZWx5KHNsb3dDYXNlKSk7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8o
Y2hlY2tHbG9iYWxPYmplY3RDYXNlLCBmYXN0QWxsb2NhdGlvbkNhc2UpOworICAgICAgICBtX291
dC5icmFuY2gobV9vdXQuZXF1YWwobV9vdXQubG9hZFB0cihzdHJ1Y3R1cmUsIG1faGVhcHMuU3Ry
dWN0dXJlX2dsb2JhbE9iamVjdCksIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCkpLCB1c3VhbGx5
KGZhc3RBbGxvY2F0aW9uQ2FzZSksIHJhcmVseShzbG93Q2FzZSkpOworCisgICAgICAgIG1fb3V0
LmFwcGVuZFRvKGZhc3RBbGxvY2F0aW9uQ2FzZSwgc2xvd0Nhc2UpOworICAgICAgICBMVmFsdWUg
Z2VuZXJhdG9yID0gYWxsb2NhdGVPYmplY3Q8SlNHZW5lcmF0b3I+KHN0cnVjdHVyZSwgbV9vdXQu
aW50UHRyWmVybywgc2xvd0Nhc2UpOworICAgICAgICBtX291dC5zdG9yZTY0KG1fb3V0LmNvbnN0
SW50NjQoSlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgpKSksIGdlbmVyYXRvciwgbV9oZWFwcy5KU0lu
dGVybmFsRmllbGRPYmplY3RJbXBsX2ludGVybmFsRmllbGRzW3N0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0dlbmVyYXRvcjo6RmllbGQ6OlBvbHlQcm90byldKTsKKyAgICAgICAgbV9vdXQuc3RvcmU2
NChtX291dC5jb25zdEludDY0KEpTVmFsdWU6OmVuY29kZShqc051bWJlcihzdGF0aWNfY2FzdDxp
bnQzMl90PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9yU3RhdGU6OkluaXQpKSkpLCBnZW5lcmF0b3Is
IG1faGVhcHMuSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbF9pbnRlcm5hbEZpZWxkc1tzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNHZW5lcmF0b3I6OkZpZWxkOjpTdGF0ZSldKTsKKyAgICAgICAgbV9v
dXQuc3RvcmU2NChtX291dC5jb25zdEludDY0KEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KSksIGdlbmVyYXRvciwgbV9oZWFwcy5KU0ludGVybmFsRmllbGRPYmplY3RJbXBsX2ludGVybmFs
RmllbGRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihKU0dlbmVyYXRvcjo6RmllbGQ6Ok5leHQpXSk7
CisgICAgICAgIG1fb3V0LnN0b3JlNjQobV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSkpLCBnZW5lcmF0b3IsIG1faGVhcHMuSlNJbnRlcm5hbEZpZWxkT2JqZWN0
SW1wbF9pbnRlcm5hbEZpZWxkc1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNHZW5lcmF0b3I6OkZp
ZWxkOjpUaGlzKV0pOworICAgICAgICBtX291dC5zdG9yZTY0KG1fb3V0LmNvbnN0SW50NjQoSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpKSwgZ2VuZXJhdG9yLCBtX2hlYXBzLkpTSW50ZXJu
YWxGaWVsZE9iamVjdEltcGxfaW50ZXJuYWxGaWVsZHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
R2VuZXJhdG9yOjpGaWVsZDo6RnJhbWUpXSk7CisgICAgICAgIG11dGF0b3JGZW5jZSgpOworICAg
ICAgICBWYWx1ZUZyb21CbG9jayBmYXN0UmVzdWx0ID0gbV9vdXQuYW5jaG9yKGdlbmVyYXRvcik7
CisgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAgICBtX291dC5hcHBl
bmRUbyhzbG93Q2FzZSwgY29udGludWF0aW9uKTsKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xv
d1Jlc3VsdCA9IG1fb3V0LmFuY2hvcih2bUNhbGwoSW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVy
YXRpb25DcmVhdGVHZW5lcmF0b3IpLCBtX2NhbGxGcmFtZSwgY2FsbGVlLCB3ZWFrUG9pbnRlcihn
bG9iYWxPYmplY3QpKSk7CisgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAg
ICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKKyAgICAgICAgTFZh
bHVlIHJlc3VsdCA9IG1fb3V0LnBoaShJbnQ2NCwgZmFzdFJlc3VsdCwgc2xvd1Jlc3VsdCk7CisK
KyAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOworICAgIH0KKwogICAgIHZvaWQgY29tcGlsZVNw
cmVhZCgpCiAgICAgewogICAgICAgICBpZiAobV9ub2RlLT5jaGlsZDEoKS0+b3AoKSA9PSBQaGFu
dG9tTmV3QXJyYXlCdWZmZXIpIHsKQEAgLTE2MTAxLDEwICsxNjE4OCwxMiBAQCBjbGFzcyBMb3dl
ckRGR1RvQjMgewogICAgICAgICBqc1ZhbHVlVG9TdHJpY3RJbnQ1MihlZGdlLCBsb3dKU1ZhbHVl
KGVkZ2UsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbikpOwogICAgIH0KIAotICAgIExWYWx1ZSBp
c0NlbGxXaXRoVHlwZShMVmFsdWUgY2VsbCwgSlNUeXBlIHF1ZXJpZWRUeXBlLCBTcGVjdWxhdGVk
VHlwZSBzcGVjdWxhdGVkVHlwZUZvclF1ZXJ5LCBTcGVjdWxhdGVkVHlwZSB0eXBlID0gU3BlY0Z1
bGxUb3ApCisgICAgTFZhbHVlIGlzQ2VsbFdpdGhUeXBlKExWYWx1ZSBjZWxsLCBKU1R5cGUgcXVl
cmllZFR5cGUsIE9wdGlvbmFsPFNwZWN1bGF0ZWRUeXBlPiBzcGVjdWxhdGVkVHlwZUZvclF1ZXJ5
LCBTcGVjdWxhdGVkVHlwZSB0eXBlID0gU3BlY0Z1bGxUb3ApCiAgICAgewotICAgICAgICBpZiAo
TFZhbHVlIHByb3ZlbiA9IGlzUHJvdmVuVmFsdWUodHlwZSAmIFNwZWNDZWxsLCBzcGVjdWxhdGVk
VHlwZUZvclF1ZXJ5KSkKLSAgICAgICAgICAgIHJldHVybiBwcm92ZW47CisgICAgICAgIGlmIChz
cGVjdWxhdGVkVHlwZUZvclF1ZXJ5KSB7CisgICAgICAgICAgICBpZiAoTFZhbHVlIHByb3ZlbiA9
IGlzUHJvdmVuVmFsdWUodHlwZSAmIFNwZWNDZWxsLCBzcGVjdWxhdGVkVHlwZUZvclF1ZXJ5LnZh
bHVlKCkpKQorICAgICAgICAgICAgICAgIHJldHVybiBwcm92ZW47CisgICAgICAgIH0KICAgICAg
ICAgcmV0dXJuIG1fb3V0LmVxdWFsKAogICAgICAgICAgICAgbV9vdXQubG9hZDhaZXJvRXh0MzIo
Y2VsbCwgbV9oZWFwcy5KU0NlbGxfdHlwZUluZm9UeXBlKSwKICAgICAgICAgICAgIG1fb3V0LmNv
bnN0SW50MzIocXVlcmllZFR5cGUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRleCBi
MTY3ZjFjMjZhYWZiMDNlZDNhMTc4ZWMxNjA1NDJiODdmYzk0YjZmLi5iYmZjZmUzMGZhMzYwZmRm
NTNkODM3YTdiOTdhNTQyMzY3ZTI5NWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBA
IC0zMTIsNiArMzEyLDggQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAg
ICAgICBERUZJTkVfU0xPV19PUChjcmVhdGVfcmVzdCkKICAgICAgICAgREVGSU5FX1NMT1dfT1Ao
Y3JlYXRlX3Byb21pc2UpCiAgICAgICAgIERFRklORV9TTE9XX09QKG5ld19wcm9taXNlKQorICAg
ICAgICBERUZJTkVfU0xPV19PUChjcmVhdGVfZ2VuZXJhdG9yKQorICAgICAgICBERUZJTkVfU0xP
V19PUChuZXdfZ2VuZXJhdG9yKQogICAgICAgICBERUZJTkVfU0xPV19PUChwb3cpCiAKICAgICAg
ICAgREVGSU5FX09QKG9wX2FkZCkKQEAgLTU4MCw2ICs1ODIsNyBAQCB2b2lkIEpJVDo6cHJpdmF0
ZUNvbXBpbGVTbG93Q2FzZXMoKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfU0xPV19PUChkaXYp
CiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9TTE9XX09QKGNyZWF0ZV90aGlzKQogICAgICAgICBE
RUZJTkVfU0xPV0NBU0VfU0xPV19PUChjcmVhdGVfcHJvbWlzZSkKKyAgICAgICAgREVGSU5FX1NM
T1dDQVNFX1NMT1dfT1AoY3JlYXRlX2dlbmVyYXRvcikKICAgICAgICAgREVGSU5FX1NMT1dDQVNF
X1NMT1dfT1AodG9fdGhpcykKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX1NMT1dfT1AodG9fcHJp
bWl0aXZlKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfU0xPV19PUCh0b19udW1iZXIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAppbmRleCA3YWY0ZWUzMjZj
ZjFlODllOWE1M2Y5YTI3N2JkNWM0MDUyNjMwODA4Li5lZmEyNTRjYjJhZjAxMjU3ZWFkNjBjZDIy
NTg5N2E2MWI3MTA5MTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0
aW9ucy5jcHAKQEAgLTEzOTQsNiArMTM5NCwxNCBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uTmV3SW50ZXJuYWxQcm9taXNlKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdAog
ICAgIHJldHVybiBKU0ludGVybmFsUHJvbWlzZTo6Y3JlYXRlKHZtLCBzdHJ1Y3R1cmUpOwogfQog
CitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3R2VuZXJhdG9yKEV4ZWNTdGF0ZSog
ZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKKworICAgIHJldHVy
biBKU0dlbmVyYXRvcjo6Y3JlYXRlKHZtLCBzdHJ1Y3R1cmUpOworfQorCiBKU0NlbGwqIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uTmV3UmVnZXhwKEV4ZWNTdGF0ZSogZXhlYywgSlNDZWxsKiByZWdl
eHBQdHIpCiB7CiAgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2Up
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAppbmRleCAxYzNjMjcy
Y2JiYThkZDM1NjJkNGQxNWNmMDk1MGU2YzkyNDI4NzYyLi4xYjc0OWIyMzBmODAyZDNmYzQyZmNm
YTE2MDQ2YmE4OWYzMGM4YzViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuaApAQCAtNDIxLDYgKzQyMSw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25T
ZXRGdW5jdGlvbk5hbWUoRXhlY1N0YXRlKiwgSlNDZWxsKiwgRW5jb2RlZEpTVmFsdWUpCiBKU0Nl
bGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3T2JqZWN0KEV4ZWNTdGF0ZSosIFN0cnVjdHVy
ZSopIFdURl9JTlRFUk5BTDsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdQcm9t
aXNlKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSopIFdURl9JTlRFUk5BTDsKIEpTQ2VsbCogSklUX09Q
RVJBVElPTiBvcGVyYXRpb25OZXdJbnRlcm5hbFByb21pc2UoRXhlY1N0YXRlKiwgU3RydWN0dXJl
KikgV1RGX0lOVEVSTkFMOworSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0dlbmVy
YXRvcihFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqKSBXVEZfSU5URVJOQUw7CiBKU0NlbGwqIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uTmV3UmVnZXhwKEV4ZWNTdGF0ZSosIEpTQ2VsbCopIFdURl9JTlRF
Uk5BTDsKIFVudXNlZFB0ciBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkhhbmRsZVRyYXBzKEV4ZWNT
dGF0ZSopIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25UaHJvdyhF
eGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAppbmRleCA0MDc1OGU3ZjMwYWNj
NGQ3MjgyZWI4NTM1Y2I0ZDMxYmM4YzBlNzQyLi4zNjljYjEwYjIyNWMwOWExNDJhZmU2MjNiZTkz
ZDViMDRhZjgwZGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFBy
b3BlcnR5QWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3Bl
cnR5QWNjZXNzLmNwcApAQCAtMTI0Myw3ICsxMjQzLDYgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0
X2ludGVybmFsX2ZpZWxkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAg
ICAgaW50IGRzdCA9IGJ5dGVjb2RlLm1fZHN0Lm9mZnNldCgpOwogICAgIGludCBiYXNlID0gYnl0
ZWNvZGUubV9iYXNlLm9mZnNldCgpOwogICAgIHVuc2lnbmVkIGluZGV4ID0gYnl0ZWNvZGUubV9p
bmRleDsKLSAgICBBU1NFUlQoaW5kZXggPCBKU1Byb21pc2U6Om51bWJlck9mSW50ZXJuYWxGaWVs
ZHMpOwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCByZWdUMSk7CiAgICAgbG9h
ZFB0cihBZGRyZXNzKHJlZ1QxLCBKU0ludGVybmFsRmllbGRPYmplY3RJbXBsPD46Om9mZnNldE9m
SW50ZXJuYWxGaWVsZChpbmRleCkpLCByZWdUMCk7CkBAIC0xMjU4LDcgKzEyNTcsNiBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9wdXRfaW50ZXJuYWxfZmllbGQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKICAgICBpbnQgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZS5vZmZzZXQoKTsK
ICAgICBpbnQgdmFsdWUgPSBieXRlY29kZS5tX3ZhbHVlLm9mZnNldCgpOwogICAgIHVuc2lnbmVk
IGluZGV4ID0gYnl0ZWNvZGUubV9pbmRleDsKLSAgICBBU1NFUlQoaW5kZXggPCBKU1Byb21pc2U6
Om51bWJlck9mSW50ZXJuYWxGaWVsZHMpOwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihi
YXNlLCByZWdUMCk7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcih2YWx1ZSwgcmVnVDEpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIu
YXNtCmluZGV4IGQyMDRiNDA3YzJkZTQ4ZTVkY2IyY2ExMzFhNGFiMTRlM2Q4OWIxY2MuLjI1NzZl
ZjQ5ZTExODMxMjZjZmY4ZjFlMzVlZWFlZGJmZTA0NmRlY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KQEAgLTE0OTUsNiAr
MTQ5NSw3IEBAIHNsb3dQYXRoT3AoY3JlYXRlX3Jlc3QpCiBzbG93UGF0aE9wKGNyZWF0ZV9zY29w
ZWRfYXJndW1lbnRzKQogc2xvd1BhdGhPcChjcmVhdGVfdGhpcykKIHNsb3dQYXRoT3AoY3JlYXRl
X3Byb21pc2UpCitzbG93UGF0aE9wKGNyZWF0ZV9nZW5lcmF0b3IpCiBzbG93UGF0aE9wKGRlZmlu
ZV9hY2Nlc3Nvcl9wcm9wZXJ0eSkKIHNsb3dQYXRoT3AoZGVmaW5lX2RhdGFfcHJvcGVydHkpCiBz
bG93UGF0aE9wKGVudW1lcmF0b3JfZ2VuZXJpY19wbmFtZSkKQEAgLTE1MzAsNiArMTUzMSw3IEBA
IHNsb3dQYXRoT3AodG9faW5kZXhfc3RyaW5nKQogc2xvd1BhdGhPcCh0eXBlb2YpCiBzbG93UGF0
aE9wKHVucmVhY2hhYmxlKQogc2xvd1BhdGhPcChuZXdfcHJvbWlzZSkKK3Nsb3dQYXRoT3AobmV3
X2dlbmVyYXRvcikKIAogbWFjcm8gbGxpbnRTbG93UGF0aE9wKG9wY29kZU5hbWUpCiAgICAgbGxp
bnRPcChvcF8lb3Bjb2RlTmFtZSUsIHVudXNlZCwgbWFjcm8gKHVudXNlZCwgdW51c2VkLCBkaXNw
YXRjaCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNs
b3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0
aHMuY3BwCmluZGV4IDY1ODY1Nzk4MjMzNDQ0OTk3MDJiYmJkYzVkMzVjYjI3NTQ0ZTNjZWYuLjEx
MjNkMTc5ZjYzOTA2MjMxNWU1NDI0MDRhMWU1MjViNDg3ZTZmNWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcApAQCAtMzA5LDYgKzMw
OSwzNiBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmV3X3Byb21pc2UpCiAgICAgUkVUVVJO
KHJlc3VsdCk7CiB9CiAKK1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jcmVhdGVfZ2VuZXJhdG9y
KQoreworICAgIEJFR0lOKCk7CisgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcENyZWF0ZUdl
bmVyYXRvcj4oKTsKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpOworICAgIEpTT2JqZWN0KiBjb25zdHJ1Y3RvckFzT2JqZWN0ID0g
YXNPYmplY3QoR0VUKGJ5dGVjb2RlLm1fY2FsbGVlKS5qc1ZhbHVlKCkpOworCisgICAgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVy
ZShleGVjLCBudWxscHRyLCBjb25zdHJ1Y3RvckFzT2JqZWN0LCBnbG9iYWxPYmplY3QtPmdlbmVy
YXRvclN0cnVjdHVyZSgpKTsKKyAgICBDSEVDS19FWENFUFRJT04oKTsKKyAgICBKU0dlbmVyYXRv
ciogcmVzdWx0ID0gSlNHZW5lcmF0b3I6OmNyZWF0ZSh2bSwgc3RydWN0dXJlKTsKKworICAgIEpT
RnVuY3Rpb24qIGNvbnN0cnVjdG9yID0ganNEeW5hbWljQ2FzdDxKU0Z1bmN0aW9uKj4odm0sIGNv
bnN0cnVjdG9yQXNPYmplY3QpOworICAgIGlmIChjb25zdHJ1Y3RvciAmJiBjb25zdHJ1Y3Rvci0+
Y2FuVXNlQWxsb2NhdGlvblByb2ZpbGUoKSkgeworICAgICAgICBXcml0ZUJhcnJpZXI8SlNDZWxs
PiYgY2FjaGVkQ2FsbGVlID0gYnl0ZWNvZGUubWV0YWRhdGEoZXhlYykubV9jYWNoZWRDYWxsZWU7
CisgICAgICAgIGlmICghY2FjaGVkQ2FsbGVlKQorICAgICAgICAgICAgY2FjaGVkQ2FsbGVlLnNl
dCh2bSwgZXhlYy0+Y29kZUJsb2NrKCksIGNvbnN0cnVjdG9yKTsKKyAgICAgICAgZWxzZSBpZiAo
Y2FjaGVkQ2FsbGVlLnVudmFsaWRhdGVkR2V0KCkgIT0gSlNDZWxsOjpzZWVuTXVsdGlwbGVDYWxs
ZWVPYmplY3RzKCkgJiYgY2FjaGVkQ2FsbGVlLmdldCgpICE9IGNvbnN0cnVjdG9yKQorICAgICAg
ICAgICAgY2FjaGVkQ2FsbGVlLnNldFdpdGhvdXRXcml0ZUJhcnJpZXIoSlNDZWxsOjpzZWVuTXVs
dGlwbGVDYWxsZWVPYmplY3RzKCkpOworICAgIH0KKyAgICBSRVRVUk4ocmVzdWx0KTsKK30KKwor
U0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX25ld19nZW5lcmF0b3IpCit7CisgICAgQkVHSU4oKTsK
KyAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wTmV3R2VuZXJhdG9yPigpOworICAgIEpTR2Vu
ZXJhdG9yKiByZXN1bHQgPSBKU0dlbmVyYXRvcjo6Y3JlYXRlKHZtLCBleGVjLT5sZXhpY2FsR2xv
YmFsT2JqZWN0KCktPmdlbmVyYXRvclN0cnVjdHVyZSgpKTsKKyAgICBSRVRVUk4ocmVzdWx0KTsK
K30KKwogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3RvX3RoaXMpCiB7CiAgICAgQkVHSU4oKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRo
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKaW5k
ZXggMmZlNzVlNmMzNjUyM2VmYzliYTgyYTQ2MTY1NTBkZmY3NjIzYTE4OC4uN2Y5MGIxNDBiODk3
OTBmZTE0YzQzMDdmMWEyMGY3NGZkOWQzZmJiMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKQEAgLTM4NCw2ICszODQsNyBAQCBTTE9XX1BB
VEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3Jlc29sdmVfc2NvcGUpOwogU0xPV19QQVRIX0hJRERF
Tl9ERUNMKHNsb3dfcGF0aF9pc192YXJfc2NvcGUpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNs
b3dfcGF0aF9yZXNvbHZlX3Njb3BlX2Zvcl9ob2lzdGluZ19mdW5jX2RlY2xfaW5fZXZhbCk7CiBT
TE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2NyZWF0ZV9wcm9taXNlKTsKK1NMT1dfUEFU
SF9ISURERU5fREVDTChzbG93X3BhdGhfY3JlYXRlX2dlbmVyYXRvcik7CiBTTE9XX1BBVEhfSElE
REVOX0RFQ0woc2xvd19wYXRoX2NyZWF0ZV9yZXN0KTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChz
bG93X3BhdGhfZ2V0X2J5X2lkX3dpdGhfdGhpcyk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xv
d19wYXRoX2dldF9ieV92YWxfd2l0aF90aGlzKTsKQEAgLTM5Myw2ICszOTQsNyBAQCBTTE9XX1BB
VEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2RlZmluZV9kYXRhX3Byb3BlcnR5KTsKIFNMT1dfUEFU
SF9ISURERU5fREVDTChzbG93X3BhdGhfZGVmaW5lX2FjY2Vzc29yX3Byb3BlcnR5KTsKIFNMT1df
UEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfdGhyb3dfc3RhdGljX2Vycm9yKTsKIFNMT1dfUEFU
SF9ISURERU5fREVDTChzbG93X3BhdGhfbmV3X3Byb21pc2UpOworU0xPV19QQVRIX0hJRERFTl9E
RUNMKHNsb3dfcGF0aF9uZXdfZ2VuZXJhdG9yKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93
X3BhdGhfbmV3X2FycmF5X3dpdGhfc3ByZWFkKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93
X3BhdGhfbmV3X2FycmF5X2J1ZmZlcik7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRo
X3NwcmVhZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRl
cm5hbEZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFs
RnVuY3Rpb24uY3BwCmluZGV4IGRkNGEyMjA4MDBmMTgzNDMxNzAxMjlmOTMxYmUzMTJmZjM3ZjEz
ZDIuLjIzOGU1NDMzM2VhZGNjYmVmODViM2ViNjA0MDNkNTdiMGJmMzg5YjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uY3BwCkBAIC0x
MTksNyArMTE5LDYgQEAgU3RydWN0dXJlKiBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFz
c1N0cnVjdHVyZVNsb3coRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHUKIHsKICAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAg
ICBBU1NFUlQoIW5ld1RhcmdldCB8fCBuZXdUYXJnZXQuaXNDb25zdHJ1Y3Rvcih2bSkpOwogCiAg
ICAgQVNTRVJUKGJhc2VDbGFzcy0+aGFzTW9ub1Byb3RvKCkpOwogCkBAIC0xMzMsNyArMTMyLDcg
QEAgU3RydWN0dXJlKiBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZVNs
b3coRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHUKICAgICAgICAgICAgIHJldHVybiBzdHJ1Y3R1cmU7
CiAKICAgICAgICAgLy8gTm90ZSwgUmVmbGVjdC5jb25zdHJ1Y3QgbWlnaHQgY2F1c2UgdGhlIHBy
b2ZpbGUgdG8gY2h1cm4gYnV0IHdlIGRvbid0IGNhcmUuCi0gICAgICAgIEpTVmFsdWUgcHJvdG90
eXBlVmFsdWUgPSBuZXdUYXJnZXQuZ2V0KGV4ZWMsIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlw
ZSk7CisgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlVmFsdWUgPSB0YXJnZXRGdW5jdGlvbi0+Z2V0
KGV4ZWMsIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSk7CiAgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwogICAgICAgICBpZiAoSlNPYmplY3QqIHByb3RvdHlw
ZSA9IGpzRHluYW1pY0Nhc3Q8SlNPYmplY3QqPih2bSwgcHJvdG90eXBlVmFsdWUpKQogICAgICAg
ICAgICAgcmV0dXJuIHRhcmdldEZ1bmN0aW9uLT5yYXJlRGF0YSh2bSktPmNyZWF0ZUludGVybmFs
RnVuY3Rpb25BbGxvY2F0aW9uU3RydWN0dXJlRnJvbUJhc2Uodm0sIGdsb2JhbE9iamVjdCwgcHJv
dG90eXBlLCBiYXNlQ2xhc3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50ZXJuYWxGdW5jdGlvbi5oCmluZGV4IDkzMzY4ODlmZWU4MTUwMThjOWNhY2I0MzVjNjRhNzhh
YzEwYWU3M2IuLjFmYTQ4NThjN2MzZTZlMjFiNTRjMDM4N2ViNmM0ODQzYTgwMTMxZjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmgKQEAg
LTEwMiw4ICsxMDIsNiBAQCBBTFdBWVNfSU5MSU5FIFN0cnVjdHVyZSogSW50ZXJuYWxGdW5jdGlv
bjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoRXhlY1N0YXRlKiBleAogewogICAgIC8vIFdlIGFs
bG93IG5ld1RhcmdldCA9PSBKU1ZhbHVlKCkgYmVjYXVzZSB0aGUgQVBJIG5lZWRzIHRvIGJlIGFi
bGUgdG8gY3JlYXRlIGNsYXNzZXMgd2l0aG91dCBoYXZpbmcgYSByZWFsIEpTIGZyYW1lLgogICAg
IC8vIFNpbmNlIHdlIGRvbid0IGFsbG93IHN1YmNsYXNzaW5nIGluIHRoZSBBUEkgd2UganVzdCB0
cmVhdCBuZXdUYXJnZXQgPT0gSlNWYWx1ZSgpIGFzIG5ld1RhcmdldCA9PSBleGVjLT5qc0NhbGxl
ZSgpCi0gICAgQVNTRVJUKCFuZXdUYXJnZXQgfHwgbmV3VGFyZ2V0LmlzQ29uc3RydWN0b3IoZXhl
Yy0+dm0oKSkpOwotCiAgICAgaWYgKG5ld1RhcmdldCAmJiBuZXdUYXJnZXQgIT0gYmFzZUNhbGxl
ZSkKICAgICAgICAgcmV0dXJuIGNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlU2xvdyhleGVjLCBuZXdU
YXJnZXQsIGJhc2VDbGFzcyk7CiAgICAgcmV0dXJuIGJhc2VDbGFzczsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJhdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YjAwYTQyZjM5
MTA2MjNkY2E5MDc0M2M2ODNlNTFkNjEzNWUwYzhmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3IuY3BwCkBAIC0wLDAgKzEsNzMgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNHZW5lcmF0b3Iu
aCIKKworI2luY2x1ZGUgIkJ1aWx0aW5OYW1lcy5oIgorI2luY2x1ZGUgIkVycm9yLmgiCisjaW5j
bHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJK
U0ludGVybmFsRmllbGRPYmplY3RJbXBsSW5saW5lcy5oIgorCituYW1lc3BhY2UgSlNDIHsKKwor
Y29uc3QgQ2xhc3NJbmZvIEpTR2VuZXJhdG9yOjpzX2luZm8gPSB7ICJHZW5lcmF0b3IiLCAmQmFz
ZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTR2VuZXJh
dG9yKSB9OworCitKU0dlbmVyYXRvciogSlNHZW5lcmF0b3I6OmNyZWF0ZShWTSYgdm0sIFN0cnVj
dHVyZSogc3RydWN0dXJlKQoreworICAgIEpTR2VuZXJhdG9yKiBnZW5lcmF0b3IgPSBuZXcgKE5v
dE51bGwsIGFsbG9jYXRlQ2VsbDxKU0dlbmVyYXRvcj4odm0uaGVhcCkpIEpTR2VuZXJhdG9yKHZt
LCBzdHJ1Y3R1cmUpOworICAgIGdlbmVyYXRvci0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHJl
dHVybiBnZW5lcmF0b3I7Cit9CisKK1N0cnVjdHVyZSogSlNHZW5lcmF0b3I6OmNyZWF0ZVN0cnVj
dHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90
eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBw
cm90b3R5cGUsIFR5cGVJbmZvKEpTR2VuZXJhdG9yVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZv
KCkpOworfQorCitKU0dlbmVyYXRvcjo6SlNHZW5lcmF0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKKyAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKK3sKK30KKwordm9pZCBKU0dlbmVy
YXRvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9u
KHZtKTsKKyAgICBpbnRlcm5hbEZpZWxkKHN0YXRpY19jYXN0PHVuc2lnbmVkPihGaWVsZDo6UG9s
eVByb3RvKSkuc2V0KHZtLCB0aGlzLCBqc051bGwoKSk7CisgICAgaW50ZXJuYWxGaWVsZChzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oRmllbGQ6OlN0YXRlKSkuc2V0KHZtLCB0aGlzLCBqc051bWJlcihz
dGF0aWNfY2FzdDxpbnQzMl90PihHZW5lcmF0b3JTdGF0ZTo6SW5pdCkpKTsKKyAgICBpbnRlcm5h
bEZpZWxkKHN0YXRpY19jYXN0PHVuc2lnbmVkPihGaWVsZDo6TmV4dCkpLnNldCh2bSwgdGhpcywg
anNVbmRlZmluZWQoKSk7CisgICAgaW50ZXJuYWxGaWVsZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
RmllbGQ6OlRoaXMpKS5zZXQodm0sIHRoaXMsIGpzVW5kZWZpbmVkKCkpOworICAgIGludGVybmFs
RmllbGQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEZpZWxkOjpGcmFtZSkpLnNldCh2bSwgdGhpcywg
anNVbmRlZmluZWQoKSk7Cit9CisKK3ZvaWQgSlNHZW5lcmF0b3I6OnZpc2l0Q2hpbGRyZW4oSlND
ZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBhdXRvKiB0aGlzT2JqZWN0
ID0ganNDYXN0PEpTR2VuZXJhdG9yKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09i
amVjdCwgdmlzaXRvcik7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2VuZXJhdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTQ4OWE0YzE3YjcxZWJk
YzMyZjI2OWNiY2VhNGVhNzNlMmIzYTM2YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJhdG9yLmgKQEAgLTAsMCArMSw5MCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1w
bC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSlNGdW5jdGlvbjsKKworY2xhc3MgSlNH
ZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbDw1PiB7Citw
dWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGw8NT47CisK
KyAgICAvLyBKU0dlbmVyYXRvciBoYXMgb25lIGlubGluZSBzdG9yYWdlIHNsb3QsIHdoaWNoIGlz
IHBvaW50aW5nIGludGVybmFsRmllbGQoMCkuCisgICAgc3RhdGljIHNpemVfdCBhbGxvY2F0aW9u
U2l6ZShDaGVja2VkPHNpemVfdD4gaW5saW5lQ2FwYWNpdHkpCisgICAgeworICAgICAgICBBU1NF
UlRfVU5VU0VEKGlubGluZUNhcGFjaXR5LCBpbmxpbmVDYXBhY2l0eSA9PSAwVSk7CisgICAgICAg
IHJldHVybiBzaXplb2YoSlNHZW5lcmF0b3IpOworICAgIH0KKworICAgIGVudW0gY2xhc3MgR2Vu
ZXJhdG9yUmVzdW1lTW9kZSA6IGludDMyX3QgeworICAgICAgICBOb3JtYWxNb2RlID0gMCwKKyAg
ICAgICAgUmV0dXJuTW9kZSA9IDEsCisgICAgICAgIFRocm93TW9kZSA9IDIKKyAgICB9OworCisg
ICAgZW51bSBjbGFzcyBHZW5lcmF0b3JTdGF0ZSA6IGludDMyX3QgeworICAgICAgICBDb21wbGV0
ZWQgPSAtMSwKKyAgICAgICAgRXhlY3V0aW5nID0gLTIsCisgICAgICAgIEluaXQgPSAwLAorICAg
IH07CisKKyAgICAvLyBbdGhpc10sIEBnZW5lcmF0b3IsIEBnZW5lcmF0b3JTdGF0ZSwgQGdlbmVy
YXRvclZhbHVlLCBAZ2VuZXJhdG9yUmVzdW1lTW9kZSwgQGdlbmVyYXRvckZyYW1lLgorICAgIGVu
dW0gY2xhc3MgR2VuZXJhdG9yQXJndW1lbnQgOiBpbnQzMl90IHsKKyAgICAgICAgVGhpc1ZhbHVl
ID0gMCwKKyAgICAgICAgR2VuZXJhdG9yID0gMSwKKyAgICAgICAgU3RhdGUgPSAyLAorICAgICAg
ICBWYWx1ZSA9IDMsCisgICAgICAgIFJlc3VtZU1vZGUgPSA0LAorICAgICAgICBGcmFtZSA9IDUs
CisgICAgfTsKKworICAgIGVudW0gY2xhc3MgRmllbGQgOiB1aW50MzJfdCB7CisgICAgICAgIC8v
IEZJWE1FOiBKU0dlbmVyYXRvciBzaG91bGQgc3VwcG9ydCBQb2x5UHJvdG8sIHNpbmNlIGdlbmVy
YXRvciB0ZW5kcyB0byBiZSBjcmVhdGVkIHdpdGggcG9seSBwcm90byBtb2RlLgorICAgICAgICAv
LyBXZSByZXNlcnZlIHRoZSBmaXJzdCBpbnRlcm5hbCBmaWVsZCBmb3IgUG9seVByb3RvIHByb3Bl
cnR5LiBUaGlzIG9mZnNldCBpcyBpZGVudGljYWwgdG8gSlNGaW5hbE9iamVjdCdzIGZpcnN0IGlu
bGluZSBzdG9yYWdlIHNsb3Qgd2hpY2ggd2lsbCBiZSB1c2VkIGZvciBQb2x5UHJvdG8uCisgICAg
ICAgIFBvbHlQcm90byA9IDAsCisgICAgICAgIFN0YXRlLAorICAgICAgICBOZXh0LAorICAgICAg
ICBUaGlzLAorICAgICAgICBGcmFtZSwKKyAgICB9OworICAgIHN0YXRpY19hc3NlcnQobnVtYmVy
T2ZJbnRlcm5hbEZpZWxkcyA9PSA1KTsKKworICAgIHN0YXRpYyBKU0dlbmVyYXRvciogY3JlYXRl
KFZNJiwgU3RydWN0dXJlKik7CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJl
KFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVfRVhQT1JUX0lO
Rk87CisKKyAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9y
Jik7CisKK3Byb3RlY3RlZDoKKyAgICBKU0dlbmVyYXRvcihWTSYsIFN0cnVjdHVyZSopOworICAg
IHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlv
bi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5o
CmluZGV4IGE0NTRiOTU4ODA2MWQ0OGI1N2Y1NmIzMGVmZTA2M2M4NGYyNmIyOTMuLmVmZDI4OTBh
MzFmYWY4MGRmYWM1MGI3NDQwYjlkMmYzNDZlY2EyY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmgKQEAgLTQxLDI4ICs0MSw3
IEBAIGNsYXNzIEpTR2VuZXJhdG9yRnVuY3Rpb24gZmluYWwgOiBwdWJsaWMgSlNGdW5jdGlvbiB7
CiAjZW5kaWYKICAgICBmcmllbmQgY2xhc3MgVk07CiBwdWJsaWM6Ci0gICAgdHlwZWRlZiBKU0Z1
bmN0aW9uIEJhc2U7Ci0KLSAgICBlbnVtIGNsYXNzIEdlbmVyYXRvclJlc3VtZU1vZGUgOiBpbnQz
Ml90IHsKLSAgICAgICAgTm9ybWFsTW9kZSA9IDAsCi0gICAgICAgIFJldHVybk1vZGUgPSAxLAot
ICAgICAgICBUaHJvd01vZGUgPSAyCi0gICAgfTsKLQotICAgIGVudW0gY2xhc3MgR2VuZXJhdG9y
U3RhdGUgOiBpbnQzMl90IHsKLSAgICAgICAgQ29tcGxldGVkID0gLTEsCi0gICAgICAgIEV4ZWN1
dGluZyA9IC0yLAotICAgIH07Ci0KLSAgICAvLyBbdGhpc10sIEBnZW5lcmF0b3IsIEBnZW5lcmF0
b3JTdGF0ZSwgQGdlbmVyYXRvclZhbHVlLCBAZ2VuZXJhdG9yUmVzdW1lTW9kZSwgQGdlbmVyYXRv
ckZyYW1lLgotICAgIGVudW0gY2xhc3MgR2VuZXJhdG9yQXJndW1lbnQgOiBpbnQzMl90IHsKLSAg
ICAgICAgVGhpc1ZhbHVlID0gMCwKLSAgICAgICAgR2VuZXJhdG9yID0gMSwKLSAgICAgICAgU3Rh
dGUgPSAyLAotICAgICAgICBWYWx1ZSA9IDMsCi0gICAgICAgIFJlc3VtZU1vZGUgPSA0LAotICAg
ICAgICBGcmFtZSA9IDUsCi0gICAgfTsKKyAgICB1c2luZyBCYXNlID0gSlNGdW5jdGlvbjsKIAog
ICAgIGNvbnN0IHN0YXRpYyB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVy
ZUZsYWdzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5jcHAKaW5kZXggYWE3M2ZjNTNkNDdiNzAwZDM0MjBhODYyY2U3NmU3YzBkZmEwYzc1MS4u
ZTg3ZTBjYjQxNjJlMDc4NTQ1ZmFjZTUyNzFlMjg4NTI1ZDU3NTkxZiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtODE5LDYgKzgx
OSw3IEBAIGNhcGl0YWxOYW1lICMjIENvbnN0cnVjdG9yKiBsb3dlck5hbWUgIyMgQ29uc3RydWN0
b3IgPSBmZWF0dXJlRmxhZyA/IGNhcGl0YWxOYW1lCiAKICAgICBtX2dlbmVyYXRvclByb3RvdHlw
ZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0
cnVjdG9yLCBtX2dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmdldCgpLCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOwogICAgIG1fZ2Vu
ZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIG1fZ2VuZXJhdG9yUHJvdG90eXBlLmdldCgpLCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkp
OworICAgIG1fZ2VuZXJhdG9yU3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNHZW5lcmF0b3I6OmNy
ZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9nZW5lcmF0b3JQcm90b3R5cGUuZ2V0KCkpKTsKIAog
ICAgIG1fYXN5bmNGdW5jdGlvblByb3RvdHlwZS5zZXQodm0sIHRoaXMsIEFzeW5jRnVuY3Rpb25Q
cm90b3R5cGU6OmNyZWF0ZSh2bSwgQXN5bmNGdW5jdGlvblByb3RvdHlwZTo6Y3JlYXRlU3RydWN0
dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSkpOwogICAgIEFzeW5jRnVu
Y3Rpb25Db25zdHJ1Y3RvciogYXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yID0gQXN5bmNGdW5jdGlv
bkNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRl
U3RydWN0dXJlKHZtLCB0aGlzLCBmdW5jdGlvbkNvbnN0cnVjdG9yKSwgbV9hc3luY0Z1bmN0aW9u
UHJvdG90eXBlLmdldCgpKTsKQEAgLTE3NjcsNiArMTc2OCw3IEBAIHZvaWQgSlNHbG9iYWxPYmpl
Y3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAg
ICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2dlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJl
KTsKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2FzeW5jRnVuY3Rpb25TdHJ1Y3R1
cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fYXN5bmNHZW5lcmF0b3JGdW5j
dGlvblN0cnVjdHVyZSk7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9nZW5lcmF0
b3JTdHJ1Y3R1cmUpOwogICAgIHRoaXNPYmplY3QtPm1faXRlcmF0b3JSZXN1bHRPYmplY3RTdHJ1
Y3R1cmUudmlzaXQodmlzaXRvcik7CiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9y
ZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmpl
Y3QtPm1fcmVnRXhwTWF0Y2hlc0FycmF5V2l0aEdyb3Vwc1N0cnVjdHVyZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCAxMDVkNTZhOGM4
YzNkMGExNDFjNDQwYWY3NGIwODllNzdiYWE0Y2I5Li4yYWQ5MWE1M2Y4ZWFlOGM0NDY1YzEzNzNh
ODg0MzNlOTZiOTgzNzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmgKQEAgLTM3NCw2ICszNzQsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6
IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBXcml0ZUJhcnJpZXI8U3Ry
dWN0dXJlPiBtX2FzeW5jRnVuY3Rpb25TdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVj
dHVyZT4gbV9hc3luY0dlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmll
cjxTdHJ1Y3R1cmU+IG1fZ2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmU7CisgICAgV3JpdGVCYXJy
aWVyPFN0cnVjdHVyZT4gbV9nZW5lcmF0b3JTdHJ1Y3R1cmU7CiAgICAgTGF6eVByb3BlcnR5PEpT
R2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1faXRlcmF0b3JSZXN1bHRPYmplY3RTdHJ1Y3R1cmU7
CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1
cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9yZWdFeHBNYXRjaGVzQXJyYXlXaXRo
R3JvdXBzU3RydWN0dXJlOwpAQCAtNzUyLDYgKzc1Myw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0
IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIFN0cnVjdHVyZSogbnVt
YmVyT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9udW1iZXJPYmplY3RTdHJ1Y3R1
cmUuZ2V0KHRoaXMpOyB9CiAgICAgU3RydWN0dXJlKiBtYXBTdHJ1Y3R1cmUoKSBjb25zdCB7IHJl
dHVybiBtX21hcFN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogcmVnRXhwU3RydWN0
dXJlKCkgY29uc3QgeyByZXR1cm4gbV9yZWdFeHBTdHJ1Y3R1cmUuZ2V0KCk7IH0KKyAgICBTdHJ1
Y3R1cmUqIGdlbmVyYXRvclN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fZ2VuZXJhdG9yU3Ry
dWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBnZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVy
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZ2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0K
ICAgICBTdHJ1Y3R1cmUqIGFzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBt
X2FzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIGFzeW5jR2Vu
ZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2FzeW5jR2VuZXJhdG9y
RnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTVHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1R5cGUuY3BwCmluZGV4IDg0OWIzNzkxODhlZmNlNTcwOTIzZjVhMWE1YTRmNzFiYzlkOTk0NzYu
LmRhYzVlNjlkYTIwNDUxYjkwZmQ0OGIwN2E3MGMxMTIyM2Y1NzA3NmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmNwcApAQCAtOTYsNiArOTYsNyBAQCB2b2lkIHByaW50
SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgSlNDOjpKU1R5cGUgdHlwZSkKICAgICBDQVNFKFdp
dGhTY29wZVR5cGUpCiAgICAgQ0FTRShSZWdFeHBPYmplY3RUeXBlKQogICAgIENBU0UoUHJveHlP
YmplY3RUeXBlKQorICAgIENBU0UoSlNHZW5lcmF0b3JUeXBlKQogICAgIENBU0UoSlNQcm9taXNl
VHlwZSkKICAgICBDQVNFKEpTTWFwVHlwZSkKICAgICBDQVNFKEpTU2V0VHlwZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmgKaW5kZXggOGQzNWFjNzc5ODM3MzliMWEzZmU1ZDUw
YTZmOTFiOTAxMjlmZjc3ZC4uMDFlNzAyMjczNDc2NGIxOGQ5ZTMxYTkxZWU4Y2Q2MGE5OTU5MjVl
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmgKQEAgLTEwOCw2ICsxMDgs
NyBAQCBlbnVtIEpTVHlwZSA6IHVpbnQ4X3QgewogCiAgICAgUmVnRXhwT2JqZWN0VHlwZSwKICAg
ICBQcm94eU9iamVjdFR5cGUsCisgICAgSlNHZW5lcmF0b3JUeXBlLAogICAgIEpTUHJvbWlzZVR5
cGUsCiAgICAgSlNNYXBUeXBlLAogICAgIEpTU2V0VHlwZSwKZGlmZiAtLWdpdCBhL0pTVGVzdHMv
Q2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNGYyODhlMGRmMDg3MzlhMmQxZWE5
NDk5ZDQxZGM4YzZmZWNkYmY2Zi4uNDY4ZjNmZDgzZmU2OGJlN2FjYjRlMGIxM2RjZTYzYjMxZDlh
ZmYwNCAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyNiBAQAorMjAxOS0wOS0xNiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lA
YXBwbGUuY29tPgorCisgICAgICAgIFtKU0NdIEdlbmVyYXRvciBzaG91bGQgaGF2ZSBpbnRlcm5h
bCBmaWVsZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIwMTE1OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogc3RyZXNzL2NyZWF0ZS1nZW5lcmF0b3IuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUp
OgorICAgICAgICAodGVzdC5nZW5lcmF0b3IpOgorICAgICAgICAodGVzdCk6CisgICAgICAgICog
c3RyZXNzL2dlbmVyYXRvci1jb25zdHJ1Y3QtZmFpbHVyZS5qczogQWRkZWQuCisgICAgICAgIChz
aG91bGRUaHJvdyk6CisgICAgICAgIChUeXBlRXJyb3IpOgorICAgICAgICAqIHN0cmVzcy9nZW5l
cmF0b3ItcHJvdG90eXBlLWNoYW5nZS5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6Cisg
ICAgICAgIChnZW4pOgorICAgICAgICAqIHN0cmVzcy9nZW5lcmF0b3ItcHJvdG90eXBlLWNsb3N1
cmUuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAodGVzdC5nZW4pOgor
ICAgICAgICAodGVzdCk6CisgICAgICAgICogc3RyZXNzL29iamVjdC1hc3NpZ24tZmFzdC1wYXRo
LmpzOgorCiAyMDE5LTA5LTEzICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNv
bT4KIAogICAgICAgICBEYXRlLnByb3RvdHlwZS50b0pTT04gZG9lcyBub3QgZXhlY3V0ZSBzdGVw
cyAxLTIKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2NyZWF0ZS1nZW5lcmF0b3IuanMgYi9K
U1Rlc3RzL3N0cmVzcy9jcmVhdGUtZ2VuZXJhdG9yLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkyZDAzMDUxYjRj
MDgyZGYzYWViOTg5NTg0ZGQxMzJiZmYzM2UxM2QKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3Rz
L3N0cmVzcy9jcmVhdGUtZ2VuZXJhdG9yLmpzCkBAIC0wLDAgKzEsMjAgQEAKK2Z1bmN0aW9uIHNo
b3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkK
KyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCitm
dW5jdGlvbiB0ZXN0KCkgeworICAgIGZ1bmN0aW9uKiBnZW5lcmF0b3IoKSB7CisgICAgICAgIHJl
dHVybiB0aGlzOworICAgIH0KKworICAgIHZhciBnID0gZ2VuZXJhdG9yKCk7CisgICAgc2hvdWxk
QmUoZy5fX3Byb3RvX18sIGdlbmVyYXRvci5wcm90b3R5cGUpOworICAgIHJldHVybiBnOworfQor
Citmb3IgKHZhciBpID0gMDsgaSA8IDFlNjsgKytpKSB7CisgICAgdmFyIGcxID0gdGVzdCgpOwor
ICAgIHZhciBnMiA9IHRlc3QoKTsKKyAgICBzaG91bGRCZShnMS5fX3Byb3RvX18gIT0gZzIuX19w
cm90b19fLCB0cnVlKTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2dlbmVyYXRvci1j
b25zdHJ1Y3QtZmFpbHVyZS5qcyBiL0pTVGVzdHMvc3RyZXNzL2dlbmVyYXRvci1jb25zdHJ1Y3Qt
ZmFpbHVyZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZTRhM2M3ZWNhYzJkZDlmODUzYzZmZDNlMjRiZWI5ZWM0
M2YyZmYxCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWNvbnN0
cnVjdC1mYWlsdXJlLmpzCkBAIC0wLDAgKzEsMjQgQEAKK2Z1bmN0aW9uIHNob3VsZFRocm93KGZ1
bmMsIGVycm9yTWVzc2FnZSkgeworICAgIHZhciBlcnJvclRocm93biA9IGZhbHNlOworICAgIHZh
ciBlcnJvciA9IG51bGw7CisgICAgdHJ5IHsKKyAgICAgICAgZnVuYygpOworICAgIH0gY2F0Y2gg
KGUpIHsKKyAgICAgICAgZXJyb3JUaHJvd24gPSB0cnVlOworICAgICAgICBlcnJvciA9IGU7Cisg
ICAgfQorICAgIGlmICghZXJyb3JUaHJvd24pCisgICAgICAgIHRocm93IG5ldyBFcnJvcignbm90
IHRocm93bicpOworICAgIGlmIChTdHJpbmcoZXJyb3IpICE9PSBlcnJvck1lc3NhZ2UpCisgICAg
ICAgIHRocm93IG5ldyBFcnJvcihgYmFkIGVycm9yOiAke1N0cmluZyhlcnJvcil9YCk7Cit9CisK
K2Z1bmN0aW9uKiBnZW4oKSB7IH0KKworc2hvdWxkVGhyb3coKCkgPT4geworICAgIG5ldyBnZW4o
KQorfSwgYFR5cGVFcnJvcjogZnVuY3Rpb24gaXMgbm90IGEgY29uc3RydWN0b3IgKGV2YWx1YXRp
bmcgJ25ldyBnZW4oKScpYCk7CisKK3Nob3VsZFRocm93KCgpID0+IHsKKyAgICBSZWZsZWN0LmNv
bnN0cnVjdChnZW4sIFtdLCB7fSk7Cit9LCBgVHlwZUVycm9yOiBSZWZsZWN0LmNvbnN0cnVjdCBy
ZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYSBjb25zdHJ1Y3RvcmApOwpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXByb3RvdHlwZS1jaGFuZ2UuanMgYi9KU1Rlc3Rz
L3N0cmVzcy9nZW5lcmF0b3ItcHJvdG90eXBlLWNoYW5nZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ODcxMTcy
NjRkMGM0NzI0MmNhYjg5MTE2MjMyYmE3OTJiMmViNWEyCi0tLSAvZGV2L251bGwKKysrIGIvSlNU
ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXByb3RvdHlwZS1jaGFuZ2UuanMKQEAgLTAsMCArMSwxOCBA
QAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwg
IT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFj
dHVhbCk7Cit9CisKK2Z1bmN0aW9uKiBnZW4oKQoreworfQordmFyIG9yaWdpbmFsUHJvdG90eXBl
ID0gZ2VuLnByb3RvdHlwZTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTY7ICsraSkgeworICAg
IHZhciBnID0gZ2VuKCk7CisgICAgc2hvdWxkQmUoZy5fX3Byb3RvX18sIGdlbi5wcm90b3R5cGUp
OworfQorZ2VuLnByb3RvdHlwZSA9IHt9OwordmFyIGcgPSBnZW4oKTsKK3Nob3VsZEJlKGcuX19w
cm90b19fLCBnZW4ucHJvdG90eXBlKTsKK3Nob3VsZEJlKGcuX19wcm90b19fICE9PSBvcmlnaW5h
bFByb3RvdHlwZSwgdHJ1ZSk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0b3It
cHJvdG90eXBlLWNsb3N1cmUuanMgYi9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItcHJvdG90eXBl
LWNsb3N1cmUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGIyOGVkNjRjMzJiNTJiMDY1OWMwMTc3Y2Q5ZDkyYTNh
N2FjYzAyMQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2dlbmVyYXRvci1wcm90
b3R5cGUtY2xvc3VyZS5qcwpAQCAtMCwwICsxLDIyIEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1
YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRo
cm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKworZnVuY3Rpb24gdGVz
dCgpIHsKKyAgICBmdW5jdGlvbiogZ2VuKCkKKyAgICB7CisgICAgfQorICAgIHZhciBvcmlnaW5h
bFByb3RvdHlwZSA9IGdlbi5wcm90b3R5cGU7CisKKyAgICB2YXIgZyA9IGdlbigpOworICAgIHNo
b3VsZEJlKGcuX19wcm90b19fLCBnZW4ucHJvdG90eXBlKTsKKyAgICBnZW4ucHJvdG90eXBlID0g
e307CisgICAgdmFyIGcgPSBnZW4oKTsKKyAgICBzaG91bGRCZShnLl9fcHJvdG9fXywgZ2VuLnBy
b3RvdHlwZSk7CisgICAgc2hvdWxkQmUoZy5fX3Byb3RvX18gIT09IG9yaWdpbmFsUHJvdG90eXBl
LCB0cnVlKTsKK30KK25vSW5saW5lKHRlc3QpOworCitmb3IgKHZhciBpID0gMDsgaSA8IDFlNTsg
KytpKQorICAgIHRlc3QoKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL29iamVjdC1hc3Np
Z24tZmFzdC1wYXRoLmpzIGIvSlNUZXN0cy9zdHJlc3Mvb2JqZWN0LWFzc2lnbi1mYXN0LXBhdGgu
anMKaW5kZXggNWM2ZDU0NzYwYTg3YmZlOWI0NjcwMzY1OGFlZmUzMWUwZTVhNDM2YS4uZWNiOTBk
NTZiY2Q1MGZjM2Y1NWM5N2MxMjI5Y2IzODNiOWEyOGUzZCAxMDA2NDQKLS0tIGEvSlNUZXN0cy9z
dHJlc3Mvb2JqZWN0LWFzc2lnbi1mYXN0LXBhdGguanMKKysrIGIvSlNUZXN0cy9zdHJlc3Mvb2Jq
ZWN0LWFzc2lnbi1mYXN0LXBhdGguanMKQEAgLTEyOCwxNCArMTI4LDE4IEBAIHNldCBvayh2YWx1
ZSkgewogICAgIHNob3VsZEJlKG9rQ2FsbGVkLCAxKTsKIH0KIHsKLSAgICBsZXQgYnVpbHRpbiA9
IGNyZWF0ZUJ1aWx0aW4oYChmdW5jdGlvbiAob2JqKSB7Ci0gICAgICAgIHJldHVybiBAZ2V0QnlJ
ZERpcmVjdFByaXZhdGUob2JqLCAiZ2VuZXJhdG9yU3RhdGUiKTsKKyAgICBsZXQgYnVpbHRpblB1
dCA9IGNyZWF0ZUJ1aWx0aW4oYChmdW5jdGlvbiAob2JqLCB2YWx1ZSkgeworICAgICAgICBAcHV0
QnlJZERpcmVjdFByaXZhdGUob2JqLCAibmV4dCIsIHZhbHVlKTsKICAgICB9KWApOwotICAgIGZ1
bmN0aW9uKiBoZWxsbygpIHsgfQotICAgIGxldCBnZW5lcmF0b3IgPSBoZWxsbygpOwotICAgIHNo
b3VsZEJlKHR5cGVvZiBidWlsdGluKGdlbmVyYXRvciksICJudW1iZXIiKTsKLSAgICBsZXQgcmVz
dWx0ID0gT2JqZWN0LmFzc2lnbih7fSwgZ2VuZXJhdG9yKTsKLSAgICBzaG91bGRCZSh0eXBlb2Yg
YnVpbHRpbihyZXN1bHQpLCAidW5kZWZpbmVkIik7CisgICAgbGV0IGJ1aWx0aW5HZXQgPSBjcmVh
dGVCdWlsdGluKGAoZnVuY3Rpb24gKG9iaikgeworICAgICAgICByZXR1cm4gQGdldEJ5SWREaXJl
Y3RQcml2YXRlKG9iaiwgIm5leHQiKTsKKyAgICB9KWApOworICAgIHZhciBvYmplY3QgPSB7fTsK
KyAgICB2YXIgdmFsdWUgPSA0MjsKKyAgICBidWlsdGluUHV0KG9iamVjdCwgdmFsdWUpOworICAg
IHNob3VsZEJlKHR5cGVvZiBidWlsdGluR2V0KG9iamVjdCksICJudW1iZXIiKTsKKyAgICBsZXQg
cmVzdWx0ID0gT2JqZWN0LmFzc2lnbih7fSwgb2JqZWN0KTsKKyAgICBzaG91bGRCZSh0eXBlb2Yg
YnVpbHRpbkdldChyZXN1bHQpLCAidW5kZWZpbmVkIik7CiB9CiB7CiAgICAgbGV0IG9iamVjdCA9
IHt9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378875</attachid>
            <date>2019-09-16 11:12:35 -0700</date>
            <delta_ts>2019-09-17 12:03:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201159-20190916111235.patch</filename>
            <type>text/plain</type>
            <size>125275</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5OTA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
MDRkYmQ0YWUxODlmMDYyMGQ2N2I3YzlkZmMyZTg4NDc5ZGExZTQ0Li45OThkZTAxZWQ4MzMyMTdl
YWZiOTEzYjc4NWUyYTAxMWY5NDNiZTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNjYgQEAKKzIwMTktMDktMTYgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBHZW5lcmF0b3Igc2hvdWxkIGhhdmUgaW50ZXJuYWwgZmllbGRz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDExNTkK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBh
dGNoIG1ha2VzIGdlbmVyYXRvcidzIGludGVybmFsIHN0YXRlcyBJbnRlcm5hbEZpZWxkIGluc3Rl
YWQgb2YgcHJpdmF0ZSBwcm9wZXJ0aWVzLgorICAgICAgICBFYWNoIGdlbmVyYXRvciBmdW5jdGlv
biBwcm9kdWNlcyBhIGdlbmVyYXRvciB3aXRoIGRpZmZlcmVudCBbW1Byb3RvdHlwZV1dLCB3aGlj
aCBtYWtlcyBnZW5lcmF0b3JzIGhhdmUgZGlmZmVyZW50IFN0cnVjdHVyZXMuCisgICAgICAgIEFz
IGEgcmVzdWx0LCBHZW5lcmF0b3IucHJvdG90eXBlLm5leHQgZXRjLidzIGltcGxlbWVudGF0aW9u
IGJlY29tZXMgbWVnYW1vcnBoaWMgZXZlbiBpZiBpdCBpcyBub3QgbmVjZXNzYXJ5LgorCisgICAg
ICAgIElmIHdlIG1ha2UgdGhlc2Ugc3RydWN0dXJlcyBhZGFwdGl2ZWx5IHBvbHktcHJvdG8gb25l
cywgc29tZSBnZW5lcmF0b3JzIGdldCBwb2x5LXByb3RvIHN0cnVjdHVyZXMgd2hpbGUgb3RoZXJz
IGFyZSBub3QsIHJlc3VsdGluZworICAgICAgICBpbiBtZWdhbW9ycGhpYyBsb29rdXAgaW4gR2Vu
ZXJhdG9yLnByb3RvdHlwZS5uZXh0LiBJZiB3ZSBtYWtlIGFsbCB0aGUgZ2VuZXJhdG9yJ3Mgc3Ry
dWN0dXJlIHBvbHktcHJvdG8gb25lcywgaXQgbWFrZXMgR2VuZXJhdG9yLnByb3RvdHlwZS5uZXh0
CisgICAgICAgIGxvb2t1cCBzdWJvcHRpbWFsIGZvciBub3cuCisKKyAgICAgICAgSW4gdGhpcyBw
YXRjaCwgd2Ugc3RhcnQgd2l0aCByZWxhdGl2ZWx5IHNpbXBsZSB3YXkuIFRoaXMgcGF0Y2ggaW50
cm9kdWNlcyBKU0dlbmVyYXRvciBjbGFzcywgYW5kIGl0IGhhcyBpbnRlcm5hbCBmaWVsZHMgZm9y
IGdlbmVyYXRvcidzIGludGVybmFsCisgICAgICAgIHN0YXRlcy4gV2UgZXh0ZW5kIHByb21pc2Ut
aW50ZXJuYWwtZmllbGQgYWNjZXNzIGJ5dGVjb2RlcyB0byBhY2Nlc3MgdG8gdGhlc2UgZmllbGRz
IGZyb20gYnl0ZWNvZGUgc28gdGhhdCBHZW5lcmF0b3IucHJvdG90eXBlLm5leHQgY2FuIGFjY2Vz
cworICAgICAgICB0aGVzZSBmaWVsZHMgd2l0aG91dCB1c2luZyBtZWdhbW9ycGhpYyBnZXRfYnlf
aWRfZGlyZWN0LgorCisgICAgICAgIEFuZCB3ZSBjYW4gYXR0YWNoIEpTR2VuZXJhdG9yVHlwZSB0
byBKU0dlbmVyYXRvciBzbyB0aGF0IHdlIGNhbiBlZmZpY2llbnRseSBpbXBsZW1lbnQgYEBpc0dl
bmVyYXRvcigpYCBjaGVjayBpbiBieXRlY29kZS4KKworICAgICAgICBXZSByZXNlcnZlIHRoZSBv
ZmZzZXQgPSAwIHNsb3QgZm9yIHRoZSBmdXR1cmUgcG9seS1wcm90byBleHRlbnNpb24gZm9yIEpT
R2VuZXJhdG9yLiBCeSByZXNlcnZpbmcgdGhpcyBzbG90LCBub24tcG9seS1wcm90byBKU0dlbmVy
YXRvciBhbmQgcG9seS1wcm90bworICAgICAgICBKU0dlbmVyYXRvciBzdGlsbCBjYW4gb2ZmZXIg
dGhlIHdheSB0byBhY2Nlc3MgdG8gdGhlIHNhbWUgR2VuZXJhdG9yIGludGVybmFsIGZpZWxkcyB3
aXRoIHRoZSBzYW1lIG9mZnNldCB3aGlsZSBwb2x5LXByb3RvIEpTR2VuZXJhdG9yIGNhbiBnZXQg
b2Zmc2V0ID0gMAorICAgICAgICBpbmxpbmUtc3RvcmFnZSBzbG90IGZvciBQb2x5UHJvdG8gaW1w
bGVtZW50YXRpb24uCisKKyAgICAgICAgQ3VycmVudGx5LCB3ZSBzdGFydCBoYXZpbmcgb3BfY3Jl
YXRlX2dlbmVyYXRvciBzaW5jZSBpdCBjb3VsZCBiZSBkaWZmZXJlbnQgZnJvbSBjcmVhdGVfcHJv
bWlzZSB3aGVuIHdlIGFkZCBQb2x5UHJvdG8gc3VwcG9ydC4gQnV0IHdoZW4gYWRkaW5nIGNyZWF0
ZV9hc3luY19nZW5lcmF0b3ItbGlrZQorICAgICAgICB0aGluZywgd2Ugd2lsbCBpbnRyb2R1Y2Ug
b25lIGFic3RyYWN0ZWQgYnl0ZWNvZGUgZm9yIGJvdGggY3JlYXRlX2dlbmVyYXRvciBhbmQgY3Jl
YXRlX2FzeW5jX2dlbmVyYXRvciB0byBlZmZpY2llbnRseSBzdXBwb3J0IGJvdGguCisKKyAgICAg
ICAgVGhpcyBwYXRjaCBvZmZlcnMgYXJvdW5kIDEwJSBpbXByb3ZlbWVudCBpbiBKZXRTdHJlYW0y
L0Jhc2ljLiBBbmQgdGhpcyBwYXRjaCBpcyB0aGUgYmFzaXMgb2Ygb3B0aW1pemF0aW9uIG9mIEpl
dFN0cmVhbTIvYXN5bmMtZnMgd2hpY2ggbGV2ZXJhZ2VzIGFzeW5jIGdlbmVyYXRvcnMgc2lnbmlm
aWNhbnRseS4KKworICAgICAgICBUaGlzIHBhdGNoIGluY2x1ZGVzIHNldmVyYWwgZGVzaWduIGRl
Y2lzaW9ucy4KKworICAgICAgICAgICAgMS4gV2UgYWRkIGEgbmV3IEpTR2VuZXJhdG9yIGluc3Rl
YWQgb2YgbGV2ZXJhZ2luZyBKU0ZpbmFsT2JqZWN0LiBUaGUgbWFpbiByZWFzb24gaXMgdGhhdCB3
ZSB3b3VsZCBsaWtlIHRvIGhhdmUgSlNHZW5lcmF0b3JUeXBlIHRvIHF1aWNrbHkgcXVlcnkgYEBp
c0dlbmVyYXRvcmAuCisgICAgICAgICAgICAyLiBUaGlzIHBhdGNoIGN1cnJlbnRseSBkb2VzIG5v
dCBpbmNsdWRlIG9iamVjdC1hbGxvY2F0aW9uLXNpbmtpbmcgc3VwcG9ydCBmb3IgSlNHZW5lcmF0
b3IsIGJ1dCBpdCBpcyB0cml2aWFsLCBhbmQgd2lsbCBiZSBhZGRlZC4gQW5kIHRoaXMgcGF0Y2gg
YWxzbyBkb2VzIG5vdCBpbmNsdWRlIHBvbHktcHJvdG8KKyAgICAgICAgICAgICAgIHN1cHBvcnQg
Zm9yIEpTR2VuZXJhdG9yLiBUaGUgbWFpbiByZWFzb24gaXMgc2ltcGx5IGJlY2F1c2UgdGhpcyBw
YXRjaCBpcyBhbHJlYWR5IGxhcmdlIGVub3VnaCwgYW5kIEkgZG8gbm90IHdhbnQgdG8gbWFrZSB0
aGlzIHBhdGNoIGxhcmdlciBhbmQgbGFyZ2VyLgorICAgICAgICAgICAgMy4gV2UgY2FuIHN1cHBv
cnQgYXJiaXRyYXJ5IHNpemVkIGlubGluZS1zdG9yYWdlOiBSZXNlcnZpbmcgMC01IG9mZnNldHMg
Zm9yIGludGVybmFsIGZpZWxkcywgYW5kIHN0YXJ0IHB1dHRpbmcgYWxsIHRoZSBvdGhlciB0aGlu
Z3MgdG8gdGhlIHN1YnNlcXVlbnQgaW50ZXJuYWwgZmllbGRzLiBCdXQgZm9yIG5vdywKKyAgICAg
ICAgICAgICAgIHdlIGFyZSBub3QgdGFraW5nIHRoaXMgYXBwcm9hY2gganVzdCBiZWNhdXNlIEkn
bSBub3Qgc3VyZSB0aGlzIGlzIG5lY2Vzc2FyeS4gSWYgd2UgZm91bmQgc3VjaCBhIHBhdHRlcm4s
IHdlIGNhbiBlYXNpbHkgZXh0ZW5kIHRoZSBjdXJyZW50IG9uZSBidXQgZm9yIG5vdywgSSB3b3Vs
ZCBsaWtlIHRvIGtlZXAKKyAgICAgICAgICAgICAgIHRoaXMgcGF0Y2ggc2ltcGxlLgorCisgICAg
ICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBidWlsdGlucy9Bc3luY0Z1bmN0aW9uUHJvdG90eXBl
LmpzOgorICAgICAgICAoZ2xvYmFsUHJpdmF0ZS5hc3luY0Z1bmN0aW9uUmVzdW1lKToKKyAgICAg
ICAgKiBidWlsdGlucy9HZW5lcmF0b3JQcm90b3R5cGUuanM6CisgICAgICAgIChnbG9iYWxQcml2
YXRlLmdlbmVyYXRvclJlc3VtZSk6CisgICAgICAgIChuZXh0KToKKyAgICAgICAgKHJldHVybik6
CisgICAgICAgICh0aHJvdyk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3Jp
ZmljYXRpb24uY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjo6
cnVuKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmNwcDoK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6Qnl0ZWNvZGVJbnRyaW5z
aWNSZWdpc3RyeSk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3Ry
eS5oOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYjoKKyAgICAgICAgKiBieXRl
Y29kZS9CeXRlY29kZVVzZURlZi5oOgorICAgICAgICAoSlNDOjpjb21wdXRlVXNlc0ZvckJ5dGVj
b2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldCk6
CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJs
b2NrOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluYWxpemVM
TEludElubGluZUNhY2hlcyk6CisgICAgICAgICogYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3Bw
OgorICAgICAgICAoSlNDOjpzcGVjdWxhdGlvbkZyb21KU1R5cGUpOgorICAgICAgICAqIGJ5dGVj
b2RlL1NwZWN1bGF0ZWRUeXBlLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2Vu
ZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRHZW5lcmF0
b3JGaWVsZHMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENyZWF0ZUdl
bmVyYXRvcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3R2VuZXJh
dG9yKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRZaWVsZCk6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGVsZWdhdGVZaWVsZCk6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2VuZXJhdG9yU3RhdGVDaGFuZ2UpOgorICAg
ICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdElzR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVHZW5lcmF0b3I6OmdlbmVyYXRvclN0YXRlUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUdlbmVyYXRvcjo6Z2VuZXJhdG9yVmFsdWVSZWdpc3Rlcik6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIpOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdG9yRnJhbWVSZWdpc3Rlcik6CisgICAgICAg
ICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6OmdlbmVyYXRv
ckludGVybmFsRmllbGRJbmRleCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlSW50cmluc2ljTm9k
ZTo6ZW1pdF9pbnRyaW5zaWNfZ2V0R2VuZXJhdG9ySW50ZXJuYWxGaWVsZCk6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfcHV0R2VuZXJhdG9ySW50
ZXJuYWxGaWVsZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9p
bnRyaW5zaWNfaXNHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbk5vZGU6OmVtaXRC
eXRlY29kZSk6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6
CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlw
ZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAg
ICAgKiBkZmcvREZHQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpjYXBhYmls
aXR5TGV2ZWwpOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyaXplLmg6CisgICAgICAgIChKU0M6
OkRGRzo6Y2xvYmJlcml6ZSk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJzRXhpdFN0YXRlLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyc0V4aXRTdGF0ZSk6CisgICAgICAgICogZGZn
L0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDb25zdGFu
dEZvbGRpbmdQaGFzZTo6Zm9sZENvbnN0YW50cyk6CisgICAgICAgICogZGZnL0RGR0RvZXNHQy5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6ZG9lc0dDKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQ
aGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAg
ICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cElzQ2VsbFdpdGhUeXBlKToKKyAgICAg
ICAgKiBkZmcvREZHR3JhcGguY3BwOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpkdW1wKToK
KyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmNvbnZl
cnRUb05ld0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6c3BlY3VsYXRlZFR5
cGVGb3JRdWVyeSk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzU3RydWN0dXJlKToKKyAg
ICAgICAgKiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5j
cHA6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBkZmcvREZHUHJl
ZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdTYWZlVG9FeGVj
dXRlLmg6CisgICAgICAgIChKU0M6OkRGRzo6c2FmZVRvRXhlY3V0ZSk6CisgICAgICAgICogZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUNyZWF0ZVByb21pc2UpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjb21waWxlQ3JlYXRlR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZU5ld0dlbmVyYXRvcik6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0
aXZlSklULmg6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcv
REZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFz
ZS5jcHA6CisgICAgICAgICogZnRsL0ZUTENhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6
OkZUTDo6Y2FuQ29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6Cisg
ICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOb2RlKToKKyAgICAg
ICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5ld0dlbmVyYXRvcik6Cisg
ICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDcmVhdGVQcm9taXNl
KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNyZWF0ZUdl
bmVyYXRvcik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmlzQ2VsbFdp
dGhUeXBlKToKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2
YXRlQ29tcGlsZU1haW5QYXNzKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVNs
b3dDYXNlcyk6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGpp
dC9KSVRPcGVyYXRpb25zLmg6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9pbnRlcm5hbF9maWVsZCk6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfaW50ZXJuYWxfZmllbGQpOgorICAgICAgICAqIGxsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1Bh
dGhzLmNwcDoKKyAgICAgICAgKEpTQzo6U0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIHJ1bnRp
bWUvQ29tbW9uU2xvd1BhdGhzLmg6CisgICAgICAgICogcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9u
LmNwcDoKKyAgICAgICAgKEpTQzo6SW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1
Y3R1cmVTbG93KToKKyAgICAgICAgKiBydW50aW1lL0ludGVybmFsRnVuY3Rpb24uaDoKKyAgICAg
ICAgKEpTQzo6SW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNHZW5lcmF0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SlNH
ZW5lcmF0b3I6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkpTR2VuZXJhdG9yOjpjcmVhdGVTdHJ1
Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU0dlbmVyYXRvcjo6SlNHZW5lcmF0b3IpOgorICAgICAg
ICAoSlNDOjpKU0dlbmVyYXRvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpKU0dl
bmVyYXRvcjo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9KU0dlbmVyYXRvci5o
OiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRvckZ1
bmN0aW9uLmguCisgICAgICAgICogcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmg6CisgICAg
ICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFs
T2JqZWN0Ojppbml0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRy
ZW4pOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6
SlNHbG9iYWxPYmplY3Q6OmdlbmVyYXRvclN0cnVjdHVyZSBjb25zdCk6CisgICAgICAgICogcnVu
dGltZS9KU1R5cGUuY3BwOgorICAgICAgICAoV1RGOjpwcmludEludGVybmFsKToKKyAgICAgICAg
KiBydW50aW1lL0pTVHlwZS5oOgorCiAyMDE5LTA5LTE1ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHpl
ckBhcHBsZS5jb20+CiAKICAgICAgICAgTGVhayBvZiBOU01hcFRhYmxlIGluIC1bSlNWaXJ0dWFs
TWFjaGluZSBhZGRNYW5hZ2VkUmVmZXJlbmNlOndpdGhPd25lcjpdCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IGUyMmMxNGZhYWFhYzM4MzA3MThjMWIxZmU4MDk3OWNmY2Q3Zjg1YmEu
LmJhN2UwNWU1NDYzNDM3MThlNDY1Yjc5ODZmM2QxOGQwNWFjOTY3NTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC0xODAzLDYgKzE4MDMsNyBAQAogCQlFMzQwMEVDMTIyQTFDQzdC
MDA5REVENTQgLyogRnVuY3Rpb25FeGVjdXRhYmxlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM0MDBFQzAyMkExQ0M3ODAwOURFRDU0IC8q
IEZ1bmN0aW9uRXhlY3V0YWJsZUlubGluZXMuaCAqLzsgfTsKIAkJRTM0RTY1NzUyMDY2OEVBQTAw
RkI4MUFDIC8qIFBhcnNlSGFzaC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTM0RTY1NzMyMDY2OEU4RDAwRkI4MUFDIC8qIFBhcnNlSGFzaC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzNEVEQkY3MURC
NUZGQzkwMERDODdBNSAvKiBGcmFtZVRyYWNlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNEVEQkY2MURCNUZGQzEwMERDODdBNSAvKiBGcmFtZVRy
YWNlcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQlFMzRGOTMwRTIzMjJEODgyMDAyQjhEQjQgLyogSlNHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNEY5MzBDMjMyMkQ4ODEwMDJCOERC
NCAvKiBKU0dlbmVyYXRvci5oICovOyB9OwogCQlFMzUwNzA4QTFEQzQ5QkJGMDA4OUJDRDYgLyog
RE9NSklUU2lnbmF0dXJlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFMzUwNzA4OTFEQzQ5QkI2MDA4OUJDRDYgLyogRE9NSklUU2lnbmF0dXJlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM1NDYyMkIx
QjYwNjVEMTAwNTQ1Mzg2IC8qIENvbnN0cnVjdEFiaWxpdHkuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNTQ2MjJBMUI2MDY1RDEwMDU0NTM4NiAvKiBD
b25zdHJ1Y3RBYmlsaXR5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJRTM1NTVCOEExREFFMDNBNTAwRjM2OTIxIC8qIERPTUpJVENhbGxET01HZXR0
ZXJTbmlwcGV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFMzU1NUI4OTFEQUUwM0EyMDBGMzY5MjEgLyogRE9NSklUQ2FsbERPTUdldHRlclNuaXBwZXQu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNDkw
MSw2ICs0OTAyLDggQEAKIAkJRTM0RTY1NzMyMDY2OEU4RDAwRkI4MUFDIC8qIFBhcnNlSGFzaC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYXJzZUhhc2guaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM0RTY1NzQyMDY2OEU4RTAwRkI4MUFDIC8qIFBhcnNlSGFz
aC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYXJzZUhhc2guY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzRFREJGNjFEQjVGRkMxMDBEQzg3QTUg
LyogRnJhbWVUcmFjZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZyYW1l
VHJhY2Vycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzRGOTMwQjIzMjJEODgx
MDAyQjhEQjQgLyogSlNHZW5lcmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNHZW5lcmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlF
MzRGOTMwQzIzMjJEODgxMDAyQjhEQjQgLyogSlNHZW5lcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSlNHZW5lcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRTM1MDcwODkxREM0OUJCNjAwODlCQ0Q2IC8qIERPTUpJVFNpZ25hdHVyZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01KSVRTaWduYXR1cmUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM1NDYyMkExQjYwNjVEMTAwNTQ1Mzg2IC8qIENvbnN0cnVj
dEFiaWxpdHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29uc3RydWN0QWJp
bGl0eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzU1NUI4OTFEQUUwM0EyMDBG
MzY5MjEgLyogRE9NSklUQ2FsbERPTUdldHRlclNuaXBwZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRE9NSklUQ2FsbERPTUdldHRlclNuaXBwZXQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTcxNDMsMTEgKzcxNDYsMTEgQEAKIAkJCQk4Njg5MjFDMTFGOUMw
Q0I3MDAxMTU5RjYgLyogSlNCaWdJbnQuaCAqLywKIAkJCQk4NkZBOUU4RjE0MkJCQjJEMDAxNzcz
QjcgLyogSlNCb3VuZEZ1bmN0aW9uLmNwcCAqLywKIAkJCQk4NkZBOUU5MDE0MkJCQjJFMDAxNzcz
QjcgLyogSlNCb3VuZEZ1bmN0aW9uLmggKi8sCi0JCQkJRkU0OEJENDMyMzI0NUU4NzAwRjEzNkQw
IC8qIEpTQ0NvbmZpZy5jcHAgKi8sCi0JCQkJRkU0OEJENDIyMzI0NUU4NzAwRjEzNkQwIC8qIEpT
Q0NvbmZpZy5oICovLAogCQkJCTY1N0NGNDU2MTlCRjY2NjIwMDRBQ0JGMiAvKiBKU0NhbGxlZS5j
cHAgKi8sCiAJCQkJNjU3Q0Y0NTcxOUJGNjY2MjAwNEFDQkYyIC8qIEpTQ2FsbGVlLmggKi8sCiAJ
CQkJNTNCNjAxRUIyMDM0QjhDNTAwNkJFNjY3IC8qIEpTQ2FzdC5oICovLAorCQkJCUZFNDhCRDQz
MjMyNDVFODcwMEYxMzZEMCAvKiBKU0NDb25maWcuY3BwICovLAorCQkJCUZFNDhCRDQyMjMyNDVF
ODcwMEYxMzZEMCAvKiBKU0NDb25maWcuaCAqLywKIAkJCQlCQzdGOEZCQTBFMTlEMUVGMDA4NjMy
QzAgLyogSlNDZWxsLmNwcCAqLywKIAkJCQlCQzExNjdEODBFMTlCQ0M5MDA4MDY2REQgLyogSlND
ZWxsLmggKi8sCiAJCQkJMEY5NzQ5NkYxNjg3QURFMjAwQTRGRjZBIC8qIEpTQ2VsbElubGluZXMu
aCAqLywKQEAgLTcxNzYsNiArNzE3OSw4IEBACiAJCQkJRjY5MkE4NUUwMjU1NTk3RDAxRkY2MEY3
IC8qIEpTRnVuY3Rpb24uY3BwICovLAogCQkJCUY2OTJBODVGMDI1NTU5N0QwMUZGNjBGNyAvKiBK
U0Z1bmN0aW9uLmggKi8sCiAJCQkJQTcyMDI4QjkxNzk3NjAzRDAwOTgwMjhDIC8qIEpTRnVuY3Rp
b25JbmxpbmVzLmggKi8sCisJCQkJRTM0RjkzMEIyMzIyRDg4MTAwMkI4REI0IC8qIEpTR2VuZXJh
dG9yLmNwcCAqLywKKwkJCQlFMzRGOTMwQzIzMjJEODgxMDAyQjhEQjQgLyogSlNHZW5lcmF0b3Iu
aCAqLywKIAkJCQk3MEI3OTE4QzFDMDI0NDYyMDAyNDgxRTIgLyogSlNHZW5lcmF0b3JGdW5jdGlv
bi5jcHAgKi8sCiAJCQkJNzBCNzkxOEQxQzAyNDQ2MjAwMjQ4MUUyIC8qIEpTR2VuZXJhdG9yRnVu
Y3Rpb24uaCAqLywKIAkJCQkwRjJCNjZDMzE3QjZCNUFCMDBBN0FFM0YgLyogSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXcuaCAqLywKQEAgLTkzNDgsNyArOTM1Myw2IEBACiAJCQkJMEZFQTBBMTAxNzA1
MTNEQjAwQkI3MjJDIC8qIEZUTExvd2VyREZHVG9CMy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdE
ODlEMDIxN0EwQjkwNDAwNzczQUQ4IC8qIEZUTExvd2VyZWROb2RlVmFsdWUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGMkI5Q0Y5MTlEMEJBQzEwMEIxRDFCNSAvKiBGVExPcGVyYXRpb25zLmggaW4g
SGVhZGVycyAqLywKLQkJCQlGRTM4NDIzMjIzMjRENTFCMDA5REQ0NDUgLyogT3B0aW9uRW50cnku
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGRDhBMzFDMTdENTFGMjIwMENBMkM0MCAvKiBGVExPU1JF
bnRyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyMzVCREQxNzE3OEUxQzAwNjkwQzdGIC8qIEZU
TE9TUkV4aXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjM1QkUwMTcxNzhFMUMwMDY5MEM3RiAv
KiBGVExPU1JFeGl0Q29tcGlsZXIuaCBpbiBIZWFkZXJzICovLApAQCAtOTUzOCw3ICs5NTQyLDYg
QEAKIAkJCQlBMUQ3OTMwMTFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1hdFByb3Rv
dHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTEyNTg0NkYxQjQ1QTM2MDAwQ0M3RjZDIC8qIElu
dGxOdW1iZXJGb3JtYXRQcm90b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTJCQkZG
MjFCMDQ0QThCMDA2NjRCNjkgLyogSW50bE9iamVjdC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRkU0
OEJENDQyMzI0NUU5MzAwRjEzNkQwIC8qIEpTQ0NvbmZpZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NzA4RUJFMjQxQ0U4RjM1ODAwNDUzMTQ2IC8qIEludGxPYmplY3RJbmxpbmVzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk4NjBCRDgwMTE0OEVBNkYyMDAxMTJCMkYgLyogSW50cmluc2ljLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1MzRFMDM1NDFFNTNCRDI5MDAyMTNGNjQgLyogSW50cmluc2ljR2V0dGVy
QWNjZXNzQ2FzZS5oIGluIEhlYWRlcnMgKi8sCkBAIC05NjA5LDYgKzk2MTIsNyBAQAogCQkJCTY1
N0NGNDU5MTlCRjY2NjIwMDRBQ0JGMiAvKiBKU0NhbGxlZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTNCNjAxRUMyMDM0QjhDNTAwNkJFNjY3IC8qIEpTQ2FzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTdEODAxQTkxODgwRDZBODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmggaW4gSGVhZGVycyAqLywK
KwkJCQlGRTQ4QkQ0NDIzMjQ1RTkzMDBGMTM2RDAgLyogSlNDQ29uZmlnLmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQzExNjdEQTBFMTlCQ0M5MDA4MDY2REQgLyogSlNDZWxsLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjk3NDk3MTE2ODdBREU0MDBBNEZGNkEgLyogSlNDZWxsSW5saW5lcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEYxREQ4NEExOEE5NDVCRTAwMjZGM0ZBIC8qIEpTQ0lubGluZXMuaCBp
biBIZWFkZXJzICovLApAQCAtOTYzOSw2ICs5NjQzLDcgQEAKIAkJCQkwRjJCNjZGMDE3QjZCNUFC
MDBBN0FFM0YgLyogSlNGbG9hdDY0QXJyYXkuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDFG
MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU0Z1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzIw
MjhCQTE3OTc2MDNEMDA5ODAyOEMgLyogSlNGdW5jdGlvbklubGluZXMuaCBpbiBIZWFkZXJzICov
LAorCQkJCUUzNEY5MzBFMjMyMkQ4ODIwMDJCOERCNCAvKiBKU0dlbmVyYXRvci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNzBCNzkxOUMxQzAyNEE0OTAwMjQ4MUUyIC8qIEpTR2VuZXJhdG9yRnVuY3Rp
b24uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NkYxMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0dl
bmVyaWNUeXBlZEFycmF5Vmlldy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2RjIxN0I2QjVB
QjAwQTdBRTNGIC8qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3IuaCBpbiBIZWFk
ZXJzICovLApAQCAtOTg4NSw3ICs5ODkwLDkgQEAKIAkJCQkwRjJCREMyQzE1MUZERTkxMDBDRDg5
MTAgLyogT3BlcmFuZHMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3MDQ0N0VBMTdBMEJENDYwMEY1
ODk4RSAvKiBPcGVyYW5kc0lubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDQ4MEUx
NkY1Q0QwMEIzNDQ2MCAvKiBPcGVyYXRpb25zLmggaW4gSGVhZGVycyAqLywKKwkJCQlGRTM4NDIz
MjIzMjRENTFCMDA5REQ0NDUgLyogT3B0aW9uRW50cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
RTIyOEVEMTQzNkFCMjcwMDE5NkM0OCAvKiBPcHRpb25zLmggaW4gSGVhZGVycyAqLywKKwkJCQlG
RTM4NDIzMzIzMjRENTFCMDA5REQ0NDUgLyogT3B0aW9uc0xpc3QuaCBpbiBIZWFkZXJzICovLAog
CQkJCUUzNTY5ODcyMjI4NDExODcwMDhDRENDQiAvKiBQYWNrZWRDZWxsUHRyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRjlEQUEwQTFGRDFDM0QzMDA3OUM1QjIgLyogUGFyYWxsZWxTb3VyY2VBZGFw
dGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzRFNjU3NTIwNjY4RUFBMDBGQjgxQUMgLyogUGFy
c2VIYXNoLmggaW4gSGVhZGVycyAqLywKQEAgLTk5OTIsNyArOTk5OSw2IEBACiAJCQkJMEZFMDUw
MjgxQUE5MDk1NjAwRDMzQjMzIC8qIFNjb3BlZEFyZ3VtZW50cy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEZFMDUwMjkxQUE5MDk1NjAwRDMzQjMzIC8qIFNjb3BlZEFyZ3VtZW50c1RhYmxlLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRkUwNTAyQjFBQTkwOTU2MDBEMzNCMzMgLyogU2NvcGVPZmZzZXQu
aCBpbiBIZWFkZXJzICovLAotCQkJCUZFMzg0MjMzMjMyNEQ1MUIwMDlERDQ0NSAvKiBPcHRpb25z
TGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyNEU1NTIxN0VFMjc0OTAwQUJCMjE3IC8qIFNj
cmF0Y2hSZWdpc3RlckFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTVGRDAwNjgxODlB
RkU5QzAwNjMzMjMxIC8qIFNjcmlwdEFyZ3VtZW50cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTUw
M0ZBMjExODhFRkY2ODAwMTEwRjE0IC8qIFNjcmlwdEJyZWFrcG9pbnQuaCBpbiBIZWFkZXJzICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0IGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CmluZGV4IDZhMzMxZDFkZTA5NjNmYzZhNmIyOGYz
YTBlMzg2YmE5ZWM2YmVlNTQuLjQzZWE1MzBjMjUxMzQ4NWU3NDdkNTQxNTM1MjcyODc4N2M4Mjg1
YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKQEAgLTgyNCw2ICs4MjQsNyBAQCBydW50
aW1lL0pTRGF0ZU1hdGguY3BwCiBydW50aW1lL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxU
eXBlLmNwcAogcnVudGltZS9KU0ZpeGVkQXJyYXkuY3BwCiBydW50aW1lL0pTRnVuY3Rpb24uY3Bw
CitydW50aW1lL0pTR2VuZXJhdG9yLmNwcAogcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmNw
cAogcnVudGltZS9KU0dsb2JhbExleGljYWxFbnZpcm9ubWVudC5jcHAKIHJ1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMv
QXN5bmNGdW5jdGlvblByb3RvdHlwZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlu
cy9Bc3luY0Z1bmN0aW9uUHJvdG90eXBlLmpzCmluZGV4IDUyMTRiZDZmM2ExYjRlMmU1ZjFlOTVh
YTFjOTkxMTg5OWI4OTUwMGYuLjk2OGNmMWU3MzQ2MTkyZjFkNDU4YzM3OThlYzM3YzhkMWJjOTFk
MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Bc3luY0Z1bmN0
aW9uUHJvdG90eXBlLmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Bc3lu
Y0Z1bmN0aW9uUHJvdG90eXBlLmpzCkBAIC0zMSwyMiArMzEsMjIgQEAgZnVuY3Rpb24gYXN5bmNG
dW5jdGlvblJlc3VtZShnZW5lcmF0b3IsIHByb21pc2UsIHNlbnRWYWx1ZSwgcmVzdW1lTW9kZSkK
IAogICAgIEBhc3NlcnQoQGlzUHJvbWlzZShwcm9taXNlKSk7CiAKLSAgICB2YXIgc3RhdGUgPSBA
Z2V0QnlJZERpcmVjdFByaXZhdGUoZ2VuZXJhdG9yLCAiZ2VuZXJhdG9yU3RhdGUiKTsKKyAgICB2
YXIgc3RhdGUgPSBAZ2V0R2VuZXJhdG9ySW50ZXJuYWxGaWVsZChnZW5lcmF0b3IsIEBnZW5lcmF0
b3JGaWVsZFN0YXRlKTsKICAgICB2YXIgdmFsdWUgPSBAdW5kZWZpbmVkOwogCiAgICAgaWYgKHN0
YXRlID09PSBAR2VuZXJhdG9yU3RhdGVDb21wbGV0ZWQgfHwgKHJlc3VtZU1vZGUgIT09IEBHZW5l
cmF0b3JSZXN1bWVNb2RlTm9ybWFsICYmIHJlc3VtZU1vZGUgIT09IEBHZW5lcmF0b3JSZXN1bWVN
b2RlVGhyb3cpKQogICAgICAgICBAdGhyb3dUeXBlRXJyb3IoIkFzeW5jIGZ1bmN0aW9uIGlsbGVn
YWxseSByZXN1bWVkIik7CiAKICAgICB0cnkgewotICAgICAgICBAcHV0QnlJZERpcmVjdFByaXZh
dGUoZ2VuZXJhdG9yLCAiZ2VuZXJhdG9yU3RhdGUiLCBAR2VuZXJhdG9yU3RhdGVFeGVjdXRpbmcp
OwotICAgICAgICB2YWx1ZSA9IEBnZXRCeUlkRGlyZWN0UHJpdmF0ZShnZW5lcmF0b3IsICJnZW5l
cmF0b3JOZXh0IikuQGNhbGwoQGdldEJ5SWREaXJlY3RQcml2YXRlKGdlbmVyYXRvciwgImdlbmVy
YXRvclRoaXMiKSwgZ2VuZXJhdG9yLCBzdGF0ZSwgc2VudFZhbHVlLCByZXN1bWVNb2RlLCBAZ2V0
QnlJZERpcmVjdFByaXZhdGUoZ2VuZXJhdG9yLCAiZ2VuZXJhdG9yRnJhbWUiKSk7Ci0gICAgICAg
IGlmIChAZ2V0QnlJZERpcmVjdFByaXZhdGUoZ2VuZXJhdG9yLCAiZ2VuZXJhdG9yU3RhdGUiKSA9
PT0gQEdlbmVyYXRvclN0YXRlRXhlY3V0aW5nKSB7Ci0gICAgICAgICAgICBAcHV0QnlJZERpcmVj
dFByaXZhdGUoZ2VuZXJhdG9yLCAiZ2VuZXJhdG9yU3RhdGUiLCBAR2VuZXJhdG9yU3RhdGVDb21w
bGV0ZWQpOworICAgICAgICBAcHV0R2VuZXJhdG9ySW50ZXJuYWxGaWVsZChnZW5lcmF0b3IsIEBn
ZW5lcmF0b3JGaWVsZFN0YXRlLCBAR2VuZXJhdG9yU3RhdGVFeGVjdXRpbmcpOworICAgICAgICB2
YWx1ZSA9IEBnZXRHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKGdlbmVyYXRvciwgQGdlbmVyYXRvckZp
ZWxkTmV4dCkuQGNhbGwoQGdldEdlbmVyYXRvckludGVybmFsRmllbGQoZ2VuZXJhdG9yLCBAZ2Vu
ZXJhdG9yRmllbGRUaGlzKSwgZ2VuZXJhdG9yLCBzdGF0ZSwgc2VudFZhbHVlLCByZXN1bWVNb2Rl
LCBAZ2V0R2VuZXJhdG9ySW50ZXJuYWxGaWVsZChnZW5lcmF0b3IsIEBnZW5lcmF0b3JGaWVsZEZy
YW1lKSk7CisgICAgICAgIGlmIChAZ2V0R2VuZXJhdG9ySW50ZXJuYWxGaWVsZChnZW5lcmF0b3Is
IEBnZW5lcmF0b3JGaWVsZFN0YXRlKSA9PT0gQEdlbmVyYXRvclN0YXRlRXhlY3V0aW5nKSB7Cisg
ICAgICAgICAgICBAcHV0R2VuZXJhdG9ySW50ZXJuYWxGaWVsZChnZW5lcmF0b3IsIEBnZW5lcmF0
b3JGaWVsZFN0YXRlLCBAR2VuZXJhdG9yU3RhdGVDb21wbGV0ZWQpOwogICAgICAgICAgICAgQHJl
c29sdmVQcm9taXNlV2l0aEZpcnN0UmVzb2x2aW5nRnVuY3Rpb25DYWxsQ2hlY2socHJvbWlzZSwg
dmFsdWUpOwogICAgICAgICAgICAgcmV0dXJuIHByb21pc2U7CiAgICAgICAgIH0KICAgICB9IGNh
dGNoIChlcnJvcikgewotICAgICAgICBAcHV0QnlJZERpcmVjdFByaXZhdGUoZ2VuZXJhdG9yLCAi
Z2VuZXJhdG9yU3RhdGUiLCBAR2VuZXJhdG9yU3RhdGVDb21wbGV0ZWQpOworICAgICAgICBAcHV0
R2VuZXJhdG9ySW50ZXJuYWxGaWVsZChnZW5lcmF0b3IsIEBnZW5lcmF0b3JGaWVsZFN0YXRlLCBA
R2VuZXJhdG9yU3RhdGVDb21wbGV0ZWQpOwogICAgICAgICBAcmVqZWN0UHJvbWlzZVdpdGhGaXJz
dFJlc29sdmluZ0Z1bmN0aW9uQ2FsbENoZWNrKHByb21pc2UsIGVycm9yKTsKICAgICAgICAgcmV0
dXJuIHByb21pc2U7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1
aWx0aW5zL0dlbmVyYXRvclByb3RvdHlwZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWls
dGlucy9HZW5lcmF0b3JQcm90b3R5cGUuanMKaW5kZXggYjI4MDFkZjg4MmI4YThiYzZlMTVlNmUx
NGE5ZjI5NmNkMWM2OTI1ZC4uODM5M2VhMjhhZTg5OTc2OTJjZmViNmVlMjU0YmFmNzk1MjcxYzA4
ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0dlbmVyYXRvclBy
b3RvdHlwZS5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvR2VuZXJhdG9y
UHJvdG90eXBlLmpzCkBAIC0zNCwxNCArMzQsMTQgQEAgZnVuY3Rpb24gZ2VuZXJhdG9yUmVzdW1l
KGdlbmVyYXRvciwgc3RhdGUsIGdlbmVyYXRvclRoaXMsIHNlbnRWYWx1ZSwgdmFsdWUsIHJlc3UK
ICAgICB2YXIgZG9uZSA9IHN0YXRlID09PSBAR2VuZXJhdG9yU3RhdGVDb21wbGV0ZWQ7CiAgICAg
aWYgKCFkb25lKSB7CiAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBAcHV0QnlJZERpcmVjdFBy
aXZhdGUoZ2VuZXJhdG9yLCAiZ2VuZXJhdG9yU3RhdGUiLCBAR2VuZXJhdG9yU3RhdGVFeGVjdXRp
bmcpOwotICAgICAgICAgICAgdmFsdWUgPSBAZ2V0QnlJZERpcmVjdFByaXZhdGUoZ2VuZXJhdG9y
LCAiZ2VuZXJhdG9yTmV4dCIpLkBjYWxsKGdlbmVyYXRvclRoaXMsIGdlbmVyYXRvciwgc3RhdGUs
IHNlbnRWYWx1ZSwgcmVzdW1lTW9kZSwgQGdldEJ5SWREaXJlY3RQcml2YXRlKGdlbmVyYXRvciwg
ImdlbmVyYXRvckZyYW1lIikpOwotICAgICAgICAgICAgaWYgKEBnZXRCeUlkRGlyZWN0UHJpdmF0
ZShnZW5lcmF0b3IsICJnZW5lcmF0b3JTdGF0ZSIpID09PSBAR2VuZXJhdG9yU3RhdGVFeGVjdXRp
bmcpIHsKLSAgICAgICAgICAgICAgICBAcHV0QnlJZERpcmVjdFByaXZhdGUoZ2VuZXJhdG9yLCAi
Z2VuZXJhdG9yU3RhdGUiLCBAR2VuZXJhdG9yU3RhdGVDb21wbGV0ZWQpOworICAgICAgICAgICAg
QHB1dEdlbmVyYXRvckludGVybmFsRmllbGQoZ2VuZXJhdG9yLCBAZ2VuZXJhdG9yRmllbGRTdGF0
ZSwgQEdlbmVyYXRvclN0YXRlRXhlY3V0aW5nKTsKKyAgICAgICAgICAgIHZhbHVlID0gQGdldEdl
bmVyYXRvckludGVybmFsRmllbGQoZ2VuZXJhdG9yLCBAZ2VuZXJhdG9yRmllbGROZXh0KS5AY2Fs
bChnZW5lcmF0b3JUaGlzLCBnZW5lcmF0b3IsIHN0YXRlLCBzZW50VmFsdWUsIHJlc3VtZU1vZGUs
IEBnZXRHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKGdlbmVyYXRvciwgQGdlbmVyYXRvckZpZWxkRnJh
bWUpKTsKKyAgICAgICAgICAgIGlmIChAZ2V0R2VuZXJhdG9ySW50ZXJuYWxGaWVsZChnZW5lcmF0
b3IsIEBnZW5lcmF0b3JGaWVsZFN0YXRlKSA9PT0gQEdlbmVyYXRvclN0YXRlRXhlY3V0aW5nKSB7
CisgICAgICAgICAgICAgICAgQHB1dEdlbmVyYXRvckludGVybmFsRmllbGQoZ2VuZXJhdG9yLCBA
Z2VuZXJhdG9yRmllbGRTdGF0ZSwgQEdlbmVyYXRvclN0YXRlQ29tcGxldGVkKTsKICAgICAgICAg
ICAgICAgICBkb25lID0gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBjYXRjaCAoZXJy
b3IpIHsKLSAgICAgICAgICAgIEBwdXRCeUlkRGlyZWN0UHJpdmF0ZShnZW5lcmF0b3IsICJnZW5l
cmF0b3JTdGF0ZSIsIEBHZW5lcmF0b3JTdGF0ZUNvbXBsZXRlZCk7CisgICAgICAgICAgICBAcHV0
R2VuZXJhdG9ySW50ZXJuYWxGaWVsZChnZW5lcmF0b3IsIEBnZW5lcmF0b3JGaWVsZFN0YXRlLCBA
R2VuZXJhdG9yU3RhdGVDb21wbGV0ZWQpOwogICAgICAgICAgICAgdGhyb3cgZXJyb3I7CiAgICAg
ICAgIH0KICAgICB9CkBAIC01Miw0MyArNTIsNDMgQEAgZnVuY3Rpb24gbmV4dCh2YWx1ZSkKIHsK
ICAgICAidXNlIHN0cmljdCI7CiAKLSAgICB2YXIgc3RhdGUgPSBAZ2V0QnlJZERpcmVjdFByaXZh
dGUodGhpcywgImdlbmVyYXRvclN0YXRlIik7Ci0gICAgaWYgKHR5cGVvZiBzdGF0ZSAhPT0gIm51
bWJlciIpCisgICAgaWYgKCFAaXNHZW5lcmF0b3IodGhpcykpCiAgICAgICAgIEB0aHJvd1R5cGVF
cnJvcigifHRoaXN8IHNob3VsZCBiZSBhIGdlbmVyYXRvciIpOwogCisgICAgdmFyIHN0YXRlID0g
QGdldEdlbmVyYXRvckludGVybmFsRmllbGQodGhpcywgQGdlbmVyYXRvckZpZWxkU3RhdGUpOwog
ICAgIGlmIChzdGF0ZSA9PT0gQEdlbmVyYXRvclN0YXRlRXhlY3V0aW5nKQogICAgICAgICBAdGhy
b3dUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBleGVjdXRpbmciKTsKIAotICAgIHJldHVybiBAZ2Vu
ZXJhdG9yUmVzdW1lKHRoaXMsIHN0YXRlLCBAZ2V0QnlJZERpcmVjdFByaXZhdGUodGhpcywgImdl
bmVyYXRvclRoaXMiKSwgdmFsdWUsIEB1bmRlZmluZWQsIEBHZW5lcmF0b3JSZXN1bWVNb2RlTm9y
bWFsKTsKKyAgICByZXR1cm4gQGdlbmVyYXRvclJlc3VtZSh0aGlzLCBzdGF0ZSwgQGdldEdlbmVy
YXRvckludGVybmFsRmllbGQodGhpcywgQGdlbmVyYXRvckZpZWxkVGhpcyksIHZhbHVlLCBAdW5k
ZWZpbmVkLCBAR2VuZXJhdG9yUmVzdW1lTW9kZU5vcm1hbCk7CiB9CiAKIGZ1bmN0aW9uIHJldHVy
bih2YWx1ZSkKIHsKICAgICAidXNlIHN0cmljdCI7CiAKLSAgICB2YXIgc3RhdGUgPSBAZ2V0QnlJ
ZERpcmVjdFByaXZhdGUodGhpcywgImdlbmVyYXRvclN0YXRlIik7Ci0gICAgaWYgKHR5cGVvZiBz
dGF0ZSAhPT0gIm51bWJlciIpCisgICAgaWYgKCFAaXNHZW5lcmF0b3IodGhpcykpCiAgICAgICAg
IEB0aHJvd1R5cGVFcnJvcigifHRoaXN8IHNob3VsZCBiZSBhIGdlbmVyYXRvciIpOwogCisgICAg
dmFyIHN0YXRlID0gQGdldEdlbmVyYXRvckludGVybmFsRmllbGQodGhpcywgQGdlbmVyYXRvckZp
ZWxkU3RhdGUpOwogICAgIGlmIChzdGF0ZSA9PT0gQEdlbmVyYXRvclN0YXRlRXhlY3V0aW5nKQog
ICAgICAgICBAdGhyb3dUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBleGVjdXRpbmciKTsKIAotICAg
IHJldHVybiBAZ2VuZXJhdG9yUmVzdW1lKHRoaXMsIHN0YXRlLCBAZ2V0QnlJZERpcmVjdFByaXZh
dGUodGhpcywgImdlbmVyYXRvclRoaXMiKSwgdmFsdWUsIHZhbHVlLCBAR2VuZXJhdG9yUmVzdW1l
TW9kZVJldHVybik7CisgICAgcmV0dXJuIEBnZW5lcmF0b3JSZXN1bWUodGhpcywgc3RhdGUsIEBn
ZXRHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKHRoaXMsIEBnZW5lcmF0b3JGaWVsZFRoaXMpLCB2YWx1
ZSwgdmFsdWUsIEBHZW5lcmF0b3JSZXN1bWVNb2RlUmV0dXJuKTsKIH0KIAogZnVuY3Rpb24gdGhy
b3coZXhjZXB0aW9uKQogewogICAgICJ1c2Ugc3RyaWN0IjsKIAotICAgIHZhciBzdGF0ZSA9IEBn
ZXRCeUlkRGlyZWN0UHJpdmF0ZSh0aGlzLCAiZ2VuZXJhdG9yU3RhdGUiKTsKLSAgICBpZiAodHlw
ZW9mIHN0YXRlICE9PSAibnVtYmVyIikKKyAgICBpZiAoIUBpc0dlbmVyYXRvcih0aGlzKSkKICAg
ICAgICAgQHRocm93VHlwZUVycm9yKCJ8dGhpc3wgc2hvdWxkIGJlIGEgZ2VuZXJhdG9yIik7CiAK
KyAgICB2YXIgc3RhdGUgPSBAZ2V0R2VuZXJhdG9ySW50ZXJuYWxGaWVsZCh0aGlzLCBAZ2VuZXJh
dG9yRmllbGRTdGF0ZSk7CiAgICAgaWYgKHN0YXRlID09PSBAR2VuZXJhdG9yU3RhdGVFeGVjdXRp
bmcpCiAgICAgICAgIEB0aHJvd1R5cGVFcnJvcigiR2VuZXJhdG9yIGlzIGV4ZWN1dGluZyIpOwog
CiAgICAgaWYgKHN0YXRlID09PSBAR2VuZXJhdG9yU3RhdGVDb21wbGV0ZWQpCiAgICAgICAgIHRo
cm93IGV4Y2VwdGlvbjsKIAotICAgIHJldHVybiBAZ2VuZXJhdG9yUmVzdW1lKHRoaXMsIHN0YXRl
LCBAZ2V0QnlJZERpcmVjdFByaXZhdGUodGhpcywgImdlbmVyYXRvclRoaXMiKSwgZXhjZXB0aW9u
LCBAdW5kZWZpbmVkLCBAR2VuZXJhdG9yUmVzdW1lTW9kZVRocm93KTsKKyAgICByZXR1cm4gQGdl
bmVyYXRvclJlc3VtZSh0aGlzLCBzdGF0ZSwgQGdldEdlbmVyYXRvckludGVybmFsRmllbGQodGhp
cywgQGdlbmVyYXRvckZpZWxkVGhpcyksIGV4Y2VwdGlvbiwgQHVuZGVmaW5lZCwgQEdlbmVyYXRv
clJlc3VtZU1vZGVUaHJvdyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcAppbmRleCA5NTQ0
YmNiNGM4ODY5YjM0NTg2ZjE2NmM4NzRjYmIwODE1MDNlZmRmLi4yODYwNTFjYzk1ZWE0ZDhmZGE2
NmZiMDk5N2JiNTkzZWRlN2UzMmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAKQEAgLTM2
LDcgKzM2LDcgQEAKICNpbmNsdWRlICJJbnRlcnByZXRlcklubGluZXMuaCIKICNpbmNsdWRlICJK
U0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKLSNpbmNsdWRlICJK
U0dlbmVyYXRvckZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNHZW5lcmF0b3IuaCIKICNpbmNsdWRl
ICJMYWJlbC5oIgogI2luY2x1ZGUgIlN0cm9uZ0lubGluZXMuaCIKICNpbmNsdWRlICJVbmxpbmtl
ZENvZGVCbG9jay5oIgpAQCAtMjIzLDcgKzIyMyw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3Jp
ZmljYXRpb246OnJ1bigpCiAgICAgewogICAgICAgICBhdXRvIG5leHRUb0VudGVyUG9pbnQgPSBl
bnRlclBvaW50KCkubmV4dCgpOwogICAgICAgICB1bnNpZ25lZCBzd2l0Y2hUYWJsZUluZGV4ID0g
bV9jb2RlQmxvY2stPm51bWJlck9mU3dpdGNoSnVtcFRhYmxlcygpOwotICAgICAgICBWaXJ0dWFs
UmVnaXN0ZXIgc3RhdGUgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChzdGF0aWNfY2FzdDxp
bnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JBcmd1bWVudDo6U3RhdGUpKTsK
KyAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHN0YXRlID0gdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1l
bnQoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6OkdlbmVyYXRvckFyZ3VtZW50OjpT
dGF0ZSkpOwogICAgICAgICBhdXRvJiBqdW1wVGFibGUgPSBtX2NvZGVCbG9jay0+YWRkU3dpdGNo
SnVtcFRhYmxlKCk7CiAgICAgICAgIGp1bXBUYWJsZS5taW4gPSAwOwogICAgICAgICBqdW1wVGFi
bGUuYnJhbmNoT2Zmc2V0cy5yZXNpemUobV95aWVsZHMuc2l6ZSgpICsgMSk7CkBAIC0yMzgsNyAr
MjM4LDcgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjo6cnVuKCkKICAgICB9CiAK
ICAgICBmb3IgKGNvbnN0IFlpZWxkRGF0YSYgZGF0YSA6IG1feWllbGRzKSB7Ci0gICAgICAgIFZp
cnR1YWxSZWdpc3RlciBzY29wZSA9IHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KHN0YXRpY19j
YXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvckFyZ3VtZW50OjpGcmFt
ZSkpOworICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgc2NvcGUgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JB
cmd1bWVudChzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9yQXJndW1l
bnQ6OkZyYW1lKSk7CiAKICAgICAgICAgYXV0byBpbnN0cnVjdGlvbiA9IG1faW5zdHJ1Y3Rpb25z
LmF0KGRhdGEucG9pbnQpOwogICAgICAgICAvLyBFbWl0IHNhdmUgc2VxdWVuY2UuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdp
c3RyeS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5z
aWNSZWdpc3RyeS5jcHAKaW5kZXggMTk4NDQzZDUzMWZjNmM3OWU3ZWExNTUzOGIyMzAxZmViZmY0
NWY2ZC4uM2FkMmJhZDQ1MzVmMjIwZmRlNGMzY2FhNzRmM2IwODM1ZjM5YTAwMyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0
cnkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJp
bnNpY1JlZ2lzdHJ5LmNwcApAQCAtMzMsNyArMzMsNyBAQAogI2luY2x1ZGUgIkl0ZXJhdGlvbktp
bmQuaCIKICNpbmNsdWRlICJKU0FzeW5jR2VuZXJhdG9yRnVuY3Rpb24uaCIKICNpbmNsdWRlICJK
U0NJbmxpbmVzLmgiCi0jaW5jbHVkZSAiSlNHZW5lcmF0b3JGdW5jdGlvbi5oIgorI2luY2x1ZGUg
IkpTR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJK
U01vZHVsZUxvYWRlci5oIgogI2luY2x1ZGUgIkpTUHJvbWlzZS5oIgpAQCAtNzQsMTEgKzc0LDE1
IEBAIEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6OkJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnko
Vk0mIHZtKQogICAgIG1fcHJvbWlzZUZsYWdzSXNGaXJzdFJlc29sdmluZ0Z1bmN0aW9uQ2FsbGVk
LnNldChtX3ZtLCBqc051bWJlcihKU1Byb21pc2U6OmlzRmlyc3RSZXNvbHZpbmdGdW5jdGlvbkNh
bGxlZEZsYWcpKTsKICAgICBtX3Byb21pc2VGaWVsZEZsYWdzLnNldChtX3ZtLCBqc051bWJlcihz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNQcm9taXNlOjpGaWVsZDo6RmxhZ3MpKSk7CiAgICAgbV9w
cm9taXNlRmllbGRSZWFjdGlvbnNPclJlc3VsdC5zZXQobV92bSwganNOdW1iZXIoc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTUHJvbWlzZTo6RmllbGQ6OlJlYWN0aW9uc09yUmVzdWx0KSkpOwotICAg
IG1fR2VuZXJhdG9yUmVzdW1lTW9kZU5vcm1hbC5zZXQobV92bSwganNOdW1iZXIoc3RhdGljX2Nh
c3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yUmVzdW1lTW9kZTo6Tm9y
bWFsTW9kZSkpKTsKLSAgICBtX0dlbmVyYXRvclJlc3VtZU1vZGVUaHJvdy5zZXQobV92bSwganNO
dW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9y
UmVzdW1lTW9kZTo6VGhyb3dNb2RlKSkpOwotICAgIG1fR2VuZXJhdG9yUmVzdW1lTW9kZVJldHVy
bi5zZXQobV92bSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5j
dGlvbjo6R2VuZXJhdG9yUmVzdW1lTW9kZTo6UmV0dXJuTW9kZSkpKTsKLSAgICBtX0dlbmVyYXRv
clN0YXRlQ29tcGxldGVkLnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihK
U0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JTdGF0ZTo6Q29tcGxldGVkKSkpOwotICAgIG1f
R2VuZXJhdG9yU3RhdGVFeGVjdXRpbmcuc2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRpY19jYXN0PGlu
dDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvclN0YXRlOjpFeGVjdXRpbmcpKSk7
CisgICAgbV9nZW5lcmF0b3JGaWVsZFN0YXRlLnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNHZW5lcmF0b3I6OkZpZWxkOjpTdGF0ZSkpKTsKKyAgICBtX2dlbmVyYXRv
ckZpZWxkTmV4dC5zZXQobV92bSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTR2Vu
ZXJhdG9yOjpGaWVsZDo6TmV4dCkpKTsKKyAgICBtX2dlbmVyYXRvckZpZWxkVGhpcy5zZXQobV92
bSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTR2VuZXJhdG9yOjpGaWVsZDo6VGhp
cykpKTsKKyAgICBtX2dlbmVyYXRvckZpZWxkRnJhbWUuc2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0dlbmVyYXRvcjo6RmllbGQ6OkZyYW1lKSkpOworICAgIG1fR2Vu
ZXJhdG9yUmVzdW1lTW9kZU5vcm1hbC5zZXQobV92bSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50
MzJfdD4oSlNHZW5lcmF0b3I6OkdlbmVyYXRvclJlc3VtZU1vZGU6Ok5vcm1hbE1vZGUpKSk7Cisg
ICAgbV9HZW5lcmF0b3JSZXN1bWVNb2RlVGhyb3cuc2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRpY19j
YXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpHZW5lcmF0b3JSZXN1bWVNb2RlOjpUaHJvd01vZGUp
KSk7CisgICAgbV9HZW5lcmF0b3JSZXN1bWVNb2RlUmV0dXJuLnNldChtX3ZtLCBqc051bWJlcihz
dGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9yUmVzdW1lTW9kZTo6UmV0
dXJuTW9kZSkpKTsKKyAgICBtX0dlbmVyYXRvclN0YXRlQ29tcGxldGVkLnNldChtX3ZtLCBqc051
bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9yU3RhdGU6OkNv
bXBsZXRlZCkpKTsKKyAgICBtX0dlbmVyYXRvclN0YXRlRXhlY3V0aW5nLnNldChtX3ZtLCBqc051
bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9yU3RhdGU6OkV4
ZWN1dGluZykpKTsKICAgICBtX0FzeW5jR2VuZXJhdG9yU3RhdGVDb21wbGV0ZWQuc2V0KG1fdm0s
IGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbjo6
QXN5bmNHZW5lcmF0b3JTdGF0ZTo6Q29tcGxldGVkKSkpOwogICAgIG1fQXN5bmNHZW5lcmF0b3JT
dGF0ZUV4ZWN1dGluZy5zZXQobV92bSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNB
c3luY0dlbmVyYXRvckZ1bmN0aW9uOjpBc3luY0dlbmVyYXRvclN0YXRlOjpFeGVjdXRpbmcpKSk7
CiAgICAgbV9Bc3luY0dlbmVyYXRvclN0YXRlU3VzcGVuZGVkU3RhcnQuc2V0KG1fdm0sIGpzTnVt
YmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbjo6QXN5bmNH
ZW5lcmF0b3JTdGF0ZTo6U3VzcGVuZGVkU3RhcnQpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuaAppbmRl
eCBkNWY2YzNiMDVlZWI4OTY1OWFjZDk4N2IxNmYyMGM5NDM2YmJhNzUwLi4yODBiN2Y5MDZkNjVl
NTBmZmI3Njc1ZTExZWEyZTI5M2I3ZDU3ZWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmgKQEAgLTQy
LDExICs0MiwxMyBAQCBjbGFzcyBSZWdpc3RlcklEOwogICAgIG1hY3JvKGdldEJ5SWREaXJlY3Qp
IFwKICAgICBtYWNybyhnZXRCeUlkRGlyZWN0UHJpdmF0ZSkgXAogICAgIG1hY3JvKGdldFByb21p
c2VJbnRlcm5hbEZpZWxkKSBcCisgICAgbWFjcm8oZ2V0R2VuZXJhdG9ySW50ZXJuYWxGaWVsZCkg
XAogICAgIG1hY3JvKGlkV2l0aFByb2ZpbGUpIFwKICAgICBtYWNybyhpc09iamVjdCkgXAogICAg
IG1hY3JvKGlzSlNBcnJheSkgXAogICAgIG1hY3JvKGlzUHJveHlPYmplY3QpIFwKICAgICBtYWNy
byhpc0Rlcml2ZWRBcnJheSkgXAorICAgIG1hY3JvKGlzR2VuZXJhdG9yKSBcCiAgICAgbWFjcm8o
aXNQcm9taXNlKSBcCiAgICAgbWFjcm8oaXNSZWdFeHBPYmplY3QpIFwKICAgICBtYWNybyhpc01h
cCkgXApAQCAtNjEsNiArNjMsNyBAQCBjbGFzcyBSZWdpc3RlcklEOwogICAgIG1hY3JvKHB1dEJ5
SWREaXJlY3RQcml2YXRlKSBcCiAgICAgbWFjcm8ocHV0QnlWYWxEaXJlY3QpIFwKICAgICBtYWNy
byhwdXRQcm9taXNlSW50ZXJuYWxGaWVsZCkgXAorICAgIG1hY3JvKHB1dEdlbmVyYXRvckludGVy
bmFsRmllbGQpIFwKICAgICBtYWNybyh0b051bWJlcikgXAogICAgIG1hY3JvKHRvU3RyaW5nKSBc
CiAgICAgbWFjcm8odG9PYmplY3QpIFwKQEAgLTk4LDYgKzEwMSwxMCBAQCBjbGFzcyBSZWdpc3Rl
cklEOwogICAgIG1hY3JvKHByb21pc2VGbGFnc0lzRmlyc3RSZXNvbHZpbmdGdW5jdGlvbkNhbGxl
ZCkgXAogICAgIG1hY3JvKHByb21pc2VGaWVsZEZsYWdzKSBcCiAgICAgbWFjcm8ocHJvbWlzZUZp
ZWxkUmVhY3Rpb25zT3JSZXN1bHQpIFwKKyAgICBtYWNybyhnZW5lcmF0b3JGaWVsZFN0YXRlKSBc
CisgICAgbWFjcm8oZ2VuZXJhdG9yRmllbGROZXh0KSBcCisgICAgbWFjcm8oZ2VuZXJhdG9yRmll
bGRUaGlzKSBcCisgICAgbWFjcm8oZ2VuZXJhdG9yRmllbGRGcmFtZSkgXAogICAgIG1hY3JvKEdl
bmVyYXRvclJlc3VtZU1vZGVOb3JtYWwpIFwKICAgICBtYWNybyhHZW5lcmF0b3JSZXN1bWVNb2Rl
VGhyb3cpIFwKICAgICBtYWNybyhHZW5lcmF0b3JSZXN1bWVNb2RlUmV0dXJuKSBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgppbmRleCAzYjM5OThh
YjUwY2Q2MjAzMDliYWM2ZDY3ZmQ2OTE4ZmY0YTAxYTc1Li4xYmE0MWYxMDZiN2ExMTUxMjU1NzEy
ZjZhM2Q5MzM3NzBmMmQ3M2YxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUxpc3QucmIKQEAgLTEzNCw2ICsxMzQsMjAgQEAKICAgICAgICAgaXNJbnRlcm5h
bFByb21pc2U6IGJvb2wsCiAgICAgfQogCitvcCA6Y3JlYXRlX2dlbmVyYXRvciwKKyAgICBhcmdz
OiB7CisgICAgICAgIGRzdDogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBjYWxsZWU6IFZpcnR1
YWxSZWdpc3RlciwKKyAgICB9LAorICAgIG1ldGFkYXRhOiB7CisgICAgICAgIGNhY2hlZENhbGxl
ZTogV3JpdGVCYXJyaWVyW0pTQ2VsbF0KKyAgICB9CisKK29wIDpuZXdfZ2VuZXJhdG9yLAorICAg
IGFyZ3M6IHsKKyAgICAgICAgZHN0OiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgfQorCiBvcCA6Z2V0
X2FyZ3VtZW50LAogICAgIGFyZ3M6IHsKICAgICAgICAgZHN0OiBWaXJ0dWFsUmVnaXN0ZXIsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCmluZGV4
IGJlMDg1OTY0MGZiMTA3ZGU4Yjc4MmJjZmE1MDgxYmM3ZDFjNzliYzIuLjQwNzkyNDk5NjVkNTYx
OGU5M2Y5ODY3MjQ3MjRlY2MzNzMyMDE1YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCkBAIC04MCw2ICs4MCw3IEBAIHZvaWQgY29tcHV0
ZVVzZXNGb3JCeXRlY29kZU9mZnNldChCbG9jayogY29kZUJsb2NrLCBPcGNvZGVJRCBvcGNvZGVJ
RCwgY29uc3QgSW5zCiAgICAgY2FzZSBvcF9qbXA6CiAgICAgY2FzZSBvcF9uZXdfb2JqZWN0Ogog
ICAgIGNhc2Ugb3BfbmV3X3Byb21pc2U6CisgICAgY2FzZSBvcF9uZXdfZ2VuZXJhdG9yOgogICAg
IGNhc2Ugb3BfZW50ZXI6CiAgICAgY2FzZSBvcF9hcmd1bWVudF9jb3VudDoKICAgICBjYXNlIG9w
X2NhdGNoOgpAQCAtMTk0LDYgKzE5NSw3IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9m
ZnNldChCbG9jayogY29kZUJsb2NrLCBPcGNvZGVJRCBvcGNvZGVJRCwgY29uc3QgSW5zCiAgICAg
VVNFUyhPcE5ld0FycmF5V2l0aFNpemUsIGxlbmd0aCkKICAgICBVU0VTKE9wQ3JlYXRlVGhpcywg
Y2FsbGVlKQogICAgIFVTRVMoT3BDcmVhdGVQcm9taXNlLCBjYWxsZWUpCisgICAgVVNFUyhPcENy
ZWF0ZUdlbmVyYXRvciwgY2FsbGVlKQogICAgIFVTRVMoT3BEZWxCeUlkLCBiYXNlKQogICAgIFVT
RVMoT3BOZXdGdW5jLCBzY29wZSkKICAgICBVU0VTKE9wTmV3QXN5bmNHZW5lcmF0b3JGdW5jLCBz
Y29wZSkKQEAgLTM4NSw2ICszODcsNyBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZz
ZXQoQmxvY2sqIGNvZGVCbG9jaywgT3Bjb2RlSUQgb3Bjb2RlSUQsIGNvbnN0IElucwogICAgIERF
RlMoT3BUb1ByaW1pdGl2ZSwgZHN0KQogICAgIERFRlMoT3BDcmVhdGVUaGlzLCBkc3QpCiAgICAg
REVGUyhPcENyZWF0ZVByb21pc2UsIGRzdCkKKyAgICBERUZTKE9wQ3JlYXRlR2VuZXJhdG9yLCBk
c3QpCiAgICAgREVGUyhPcE5ld0FycmF5LCBkc3QpCiAgICAgREVGUyhPcE5ld0FycmF5V2l0aFNw
cmVhZCwgZHN0KQogICAgIERFRlMoT3BTcHJlYWQsIGRzdCkKQEAgLTQ2NSw2ICs0NjgsNyBAQCB2
b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqIGNvZGVCbG9jaywgT3Bjb2Rl
SUQgb3Bjb2RlSUQsIGNvbnN0IElucwogICAgIERFRlMoT3BNb3YsIGRzdCkKICAgICBERUZTKE9w
TmV3T2JqZWN0LCBkc3QpCiAgICAgREVGUyhPcE5ld1Byb21pc2UsIGRzdCkKKyAgICBERUZTKE9w
TmV3R2VuZXJhdG9yLCBkc3QpCiAgICAgREVGUyhPcFRvVGhpcywgc3JjRHN0KQogICAgIERFRlMo
T3BHZXRTY29wZSwgZHN0KQogICAgIERFRlMoT3BDcmVhdGVEaXJlY3RBcmd1bWVudHMsIGRzdCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXggMTM4
MmY2OWNiNTg2ZTcwZDQ3MTk2OTBmZGMzYzk1NzJhZTkxNDhlMi4uNWI0YWIxNTFkNmU5MmRiM2Ji
NmIxMDY0Yjk4MmQ2MDliMzBkOGMyZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5jcHAKQEAgLTU2OCw2ICs1NjgsNyBAQCBib29sIENvZGVCbG9jazo6Zmlu
aXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVu
bGluawogICAgICAgICBMSU5LKE9wUHV0QnlJZCkKICAgICAgICAgTElOSyhPcENyZWF0ZVRoaXMp
CiAgICAgICAgIExJTksoT3BDcmVhdGVQcm9taXNlKQorICAgICAgICBMSU5LKE9wQ3JlYXRlR2Vu
ZXJhdG9yKQogCiAgICAgICAgIExJTksoT3BBZGQpCiAgICAgICAgIExJTksoT3BNdWwpCkBAIC0x
Mjc0LDYgKzEyNzUsOSBAQCB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVMTEludElubGluZUNhY2hl
cygpCiAgICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8T3BDcmVhdGVQcm9taXNlPihbJl0gKGF1
dG8mIG1ldGFkYXRhKSB7CiAgICAgICAgICAgICBoYW5kbGVDcmVhdGVCeXRlY29kZShtZXRhZGF0
YSwgIm9wX2NyZWF0ZV9wcm9taXNlIl9zKTsKICAgICAgICAgfSk7CisgICAgICAgIG1fbWV0YWRh
dGEtPmZvckVhY2g8T3BDcmVhdGVHZW5lcmF0b3I+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsKKyAg
ICAgICAgICAgIGhhbmRsZUNyZWF0ZUJ5dGVjb2RlKG1ldGFkYXRhLCAib3BfY3JlYXRlX2dlbmVy
YXRvciJfcyk7CisgICAgICAgIH0pOwogCiAgICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8T3BS
ZXNvbHZlU2NvcGU+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsKICAgICAgICAgICAgIC8vIFJpZ2h0
IG5vdyB0aGlzIGlzbid0IHN0cmljdGx5IG5lY2Vzc2FyeS4gQW55IHN5bWJvbCB0YWJsZXMgdGhh
dCB0aGlzIHdpbGwgcmVmZXIgdG8KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9TcGVjdWxhdGVkVHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvU3BlY3VsYXRlZFR5cGUuY3BwCmluZGV4IDQyYjYyNmMwNWVlMWY1MTg0NjA2ZWE2ZGE5NDBm
ZjE5YWEyMzAyNzguLjZkNGUyMjAzMmIxZGRlMDRlYmMyZmI2YmI1ZDkwMWViYTllMzA5ZWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNw
cApAQCAtNTc5LDcgKzU3OSw3IEBAIFR5cGVkQXJyYXlUeXBlIHR5cGVkQXJyYXlUeXBlRnJvbVNw
ZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHR5cGUpCiAgICAgcmV0dXJuIE5vdFR5cGVkQXJyYXk7
CiB9CiAKLVNwZWN1bGF0ZWRUeXBlIHNwZWN1bGF0aW9uRnJvbUpTVHlwZShKU1R5cGUgdHlwZSkK
K09wdGlvbmFsPFNwZWN1bGF0ZWRUeXBlPiBzcGVjdWxhdGlvbkZyb21KU1R5cGUoSlNUeXBlIHR5
cGUpCiB7CiAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgY2FzZSBTdHJpbmdUeXBlOgpAQCAtNjA5
LDkgKzYwOSw4IEBAIFNwZWN1bGF0ZWRUeXBlIHNwZWN1bGF0aW9uRnJvbUpTVHlwZShKU1R5cGUg
dHlwZSkKICAgICBjYXNlIERhdGFWaWV3VHlwZToKICAgICAgICAgcmV0dXJuIFNwZWNEYXRhVmll
d09iamVjdDsKICAgICBkZWZhdWx0OgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICB9Ci0gICAgcmV0dXJuIFNwZWNOb25lOwog
fQogCiBTcGVjdWxhdGVkVHlwZSBsZWFzdFVwcGVyQm91bmRPZlN0cmljdGx5RXF1aXZhbGVudFNw
ZWN1bGF0aW9ucyhTcGVjdWxhdGVkVHlwZSB0eXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaAppbmRleCBlZTVlNDI2MjM2MDFlOTIyYWEyYjYy
NGMxMTdjYjRkNjFkNWE2NTcxLi5hNTE2OGI3NzdlOWQ5Y2JhOTQzNDQ2NGExYTA4MDZkMmIwMmE4
NzhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRl
ZFR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5
cGUuaApAQCAtNDk3LDcgKzQ5Nyw3IEBAIEpTX0VYUE9SVF9QUklWQVRFIFNwZWN1bGF0ZWRUeXBl
IHNwZWN1bGF0aW9uRnJvbVZhbHVlKEpTVmFsdWUpOwogLy8gSWYgaXQncyBhbiBhbnlJbnQoKSwg
aXQnbGwgcmV0dXJuIHNwZWN1bGF0ZWQgdHlwZXMgZnJvbSB0aGUgSW50NTIgbGF0dGljZS4KIC8v
IE90aGVyd2lzZSwgaXQnbGwgcmV0dXJuIHR5cGVzIGZyb20gdGhlIEpTVmFsdWUgbGF0dGljZS4K
IEpTX0VYUE9SVF9QUklWQVRFIFNwZWN1bGF0ZWRUeXBlIGludDUyQXdhcmVTcGVjdWxhdGlvbkZy
b21WYWx1ZShKU1ZhbHVlKTsKLVNwZWN1bGF0ZWRUeXBlIHNwZWN1bGF0aW9uRnJvbUpTVHlwZShK
U1R5cGUpOworT3B0aW9uYWw8U3BlY3VsYXRlZFR5cGU+IHNwZWN1bGF0aW9uRnJvbUpTVHlwZShK
U1R5cGUpOwogCiBTcGVjdWxhdGVkVHlwZSBzcGVjdWxhdGlvbkZyb21UeXBlZEFycmF5VHlwZShU
eXBlZEFycmF5VHlwZSk7IC8vIG9ubHkgdmFsaWQgZm9yIHR5cGVkIHZpZXdzLgogVHlwZWRBcnJh
eVR5cGUgdHlwZWRBcnJheVR5cGVGcm9tU3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmNwcAppbmRleCA2ODgzNTQ1NjMwZTNlYmVjZmM1MjAwNGM1MDBmYjJiNzI0Y2E0MmMx
Li5mYjQ3YjVlM2JhNmQ3OTY4OGZmYjYxZDNmNWQyY2FhNWQwNWEyODU2IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmNwcApAQCAtNjgzLDcgKzY4MywxNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5l
cmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogCiAgICAg
c3dpdGNoIChwYXJzZU1vZGUpIHsKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9y
V3JhcHBlckZ1bmN0aW9uTW9kZToKLSAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9y
V3JhcHBlck1ldGhvZE1vZGU6CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvcldy
YXBwZXJNZXRob2RNb2RlOiB7CisgICAgICAgIG1fZ2VuZXJhdG9yUmVnaXN0ZXIgPSBhZGRWYXIo
KTsKKworICAgICAgICAvLyBGSVhNRTogRW1pdCB0b190aGlzIG9ubHkgd2hlbiBHZW5lcmF0b3Ig
dXNlcyBpdC4KKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1MTU4NgorICAgICAgICBlbWl0VG9UaGlzKCk7CisKKyAgICAgICAgZW1pdENyZWF0ZUdl
bmVyYXRvcihtX2dlbmVyYXRvclJlZ2lzdGVyLCAmbV9jYWxsZWVSZWdpc3Rlcik7CisgICAgICAg
IGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpBc3luY0dlbmVyYXRv
cldyYXBwZXJNZXRob2RNb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpBc3luY0dlbmVy
YXRvcldyYXBwZXJGdW5jdGlvbk1vZGU6IHsKICAgICAgICAgbV9nZW5lcmF0b3JSZWdpc3RlciA9
IGFkZFZhcigpOwpAQCAtNzExLDcgKzcyMSw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29k
ZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAg
ICAgICAgICAgICBlbWl0VG9UaGlzKCk7CiAgICAgICAgIH0KIAotICAgICAgICBlbWl0TmV3T2Jq
ZWN0KG1fZ2VuZXJhdG9yUmVnaXN0ZXIpOworICAgICAgICBlbWl0TmV3R2VuZXJhdG9yKG1fZ2Vu
ZXJhdG9yUmVnaXN0ZXIpOwogICAgICAgICBlbWl0TmV3UHJvbWlzZShwcm9taXNlUmVnaXN0ZXIo
KSwgbV9pc0J1aWx0aW5GdW5jdGlvbik7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTg2Niw3
ICs4NzYsMTAgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwg
RnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVubGlua2UKICAgICAgICAgICAgIC8vIEdlbmVy
YXRvcmlmaWNhdGlvbiBpbnNlcnRzIGxleGljYWwgZW52aXJvbm1lbnQgY3JlYXRpb24gaWYgbmVj
ZXNzYXJ5LiBPdGhlcndpc2UsIHdlIGNvbnZlcnQgaXQgdG8gb3BfbW92IGZyYW1lLCBgdW5kZWZp
bmVkYC4KICAgICAgICAgICAgIE9wQ3JlYXRlR2VuZXJhdG9yRnJhbWVFbnZpcm9ubWVudDo6ZW1p
dCh0aGlzLCBnZW5lcmF0b3JGcmFtZVJlZ2lzdGVyKCksIHNjb3BlUmVnaXN0ZXIoKSwgVmlydHVh
bFJlZ2lzdGVyIHsgc3ltYm9sVGFibGVDb25zdGFudEluZGV4IH0sIGFkZENvbnN0YW50VmFsdWUo
anNVbmRlZmluZWQoKSkpOwogICAgICAgICB9Ci0gICAgICAgIGVtaXRQdXRCeUlkKGdlbmVyYXRv
clJlZ2lzdGVyKCksIHByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JGcmFt
ZVByaXZhdGVOYW1lKCksIGdlbmVyYXRvckZyYW1lUmVnaXN0ZXIoKSk7CisgICAgICAgIGlmIChw
YXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpBc3luY0dlbmVyYXRvckJvZHlNb2RlKQorICAg
ICAgICAgICAgZW1pdFB1dEJ5SWQoZ2VuZXJhdG9yUmVnaXN0ZXIoKSwgcHJvcGVydHlOYW1lcygp
LmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvckZyYW1lUHJpdmF0ZU5hbWUoKSwgZ2VuZXJhdG9yRnJh
bWVSZWdpc3RlcigpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZW1pdFB1dEludGVybmFs
RmllbGQoZ2VuZXJhdG9yUmVnaXN0ZXIoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTR2VuZXJh
dG9yOjpGaWVsZDo6RnJhbWUpLCBnZW5lcmF0b3JGcmFtZVJlZ2lzdGVyKCkpOwogICAgIH0KIAog
ICAgIGJvb2wgc2hvdWxkSW5pdGlhbGl6ZUJsb2NrU2NvcGVkRnVuY3Rpb25zID0gZmFsc2U7IC8v
IFdlIGdlbmVyYXRlIHRvcC1sZXZlbCBmdW5jdGlvbiBkZWNsYXJhdGlvbnMgaW4gOjpnZW5lcmF0
ZSgpLgpAQCAtMjY5OCwyMCArMjcxMSwxMiBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
UHV0U2V0dGVyQnlWYWwoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydAogCiB2
b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0R2VuZXJhdG9yRmllbGRzKFJlZ2lzdGVySUQq
IG5leHRGdW5jdGlvbikKIHsKLSAgICAvLyBGSVhNRTogQ3VycmVudGx5LCB3ZSBqdXN0IGNyZWF0
ZSBhbiBvYmplY3QgYW5kIHN0b3JlIGdlbmVyYXRvciByZWxhdGVkIGZpZWxkcyBhcyBpdHMgcHJv
cGVydGllcyBmb3IgZWFzZS4KLSAgICAvLyBCdXQgdG8gbWFrZSBpdCBlZmZpY2llbnQsIHdlIHdp
bGwgaW50cm9kdWNlIEpTR2VuZXJhdG9yIGNsYXNzLCBhZGQgb3Bjb2RlIG5ld19nZW5lcmF0b3Ig
YW5kIHVzZSBpdHMgQysrIGZpZWxkcyBpbnN0ZWFkIG9mIHRoZXNlIHByaXZhdGUgcHJvcGVydGll
cy4KLSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTQ1
Ci0KLSAgICBlbWl0RGlyZWN0UHV0QnlJZChtX2dlbmVyYXRvclJlZ2lzdGVyLCBwcm9wZXJ0eU5h
bWVzKCkuYnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yTmV4dFByaXZhdGVOYW1lKCksIG5leHRGdW5j
dGlvbiwgUHJvcGVydHlOb2RlOjpLbm93bkRpcmVjdCk7CisgICAgZW1pdFB1dEludGVybmFsRmll
bGQobV9nZW5lcmF0b3JSZWdpc3Rlciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTR2VuZXJhdG9y
OjpGaWVsZDo6TmV4dCksIG5leHRGdW5jdGlvbik7CiAKICAgICAvLyBXZSBkbyBub3Qgc3RvcmUg
J3RoaXMnIGluIGFycm93IGZ1bmN0aW9uIHdpdGhpbiBjb25zdHJ1Y3RvciwKICAgICAvLyBiZWNh
dXNlIGl0IG1pZ2h0IGJlIG5vdCBpbml0aWFsaXplZCwgaWYgc3VwZXIgaXMgY2FsbGVkIGxhdGVy
LgogICAgIGlmICghKGlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCgpICYmIG1fY29kZUJsb2Nr
LT5wYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jQXJyb3dGdW5jdGlvbk1vZGUp
KQotICAgICAgICBlbWl0RGlyZWN0UHV0QnlJZChtX2dlbmVyYXRvclJlZ2lzdGVyLCBwcm9wZXJ0
eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yVGhpc1ByaXZhdGVOYW1lKCksICZtX3Ro
aXNSZWdpc3RlciwgUHJvcGVydHlOb2RlOjpLbm93bkRpcmVjdCk7Ci0KLSAgICBlbWl0RGlyZWN0
UHV0QnlJZChtX2dlbmVyYXRvclJlZ2lzdGVyLCBwcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVz
KCkuZ2VuZXJhdG9yU3RhdGVQcml2YXRlTmFtZSgpLCBlbWl0TG9hZChudWxscHRyLCBqc051bWJl
cigwKSksIFByb3BlcnR5Tm9kZTo6S25vd25EaXJlY3QpOwotCi0gICAgZW1pdERpcmVjdFB1dEJ5
SWQobV9nZW5lcmF0b3JSZWdpc3RlciwgcHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmdl
bmVyYXRvckZyYW1lUHJpdmF0ZU5hbWUoKSwgZW1pdExvYWQobnVsbHB0ciwganNOdWxsKCkpLCBQ
cm9wZXJ0eU5vZGU6Oktub3duRGlyZWN0KTsKKyAgICAgICAgZW1pdFB1dEludGVybmFsRmllbGQo
bV9nZW5lcmF0b3JSZWdpc3Rlciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTR2VuZXJhdG9yOjpG
aWVsZDo6VGhpcyksICZtX3RoaXNSZWdpc3Rlcik7CiB9CiAKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXRQdXRBc3luY0dlbmVyYXRvckZpZWxkcyhSZWdpc3RlcklEKiBuZXh0RnVuY3Rpb24p
CkBAIC0yODU4LDYgKzI4NjMsMTggQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXROZXdQcm9taXNlKFJlZ2lzdGVySUQqIGRzdCwgYm9vbCBpc0ludGVybmFsUHIKICAgICByZXR1
cm4gZHN0OwogfQogCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENyZWF0ZUdl
bmVyYXRvcihSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIG5ld1RhcmdldCkKK3sKKyAgICBP
cENyZWF0ZUdlbmVyYXRvcjo6ZW1pdCh0aGlzLCBkc3QsIG5ld1RhcmdldCk7CisgICAgcmV0dXJu
IGRzdDsKK30KKworUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdHZW5lcmF0
b3IoUmVnaXN0ZXJJRCogZHN0KQoreworICAgIE9wTmV3R2VuZXJhdG9yOjplbWl0KHRoaXMsIGRz
dCk7CisgICAgcmV0dXJuIGRzdDsKK30KKwogdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFRE
WkNoZWNrKFJlZ2lzdGVySUQqIHRhcmdldCkKIHsKICAgICBPcENoZWNrVGR6OjplbWl0KHRoaXMs
IHRhcmdldCk7CkBAIC00NTQ0LDExICs0NTYxLDExIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0WWllbGQoUmVnaXN0ZXJJRCogYXJndW1lbnQsIEpTQXN5bmNHZW5lcmF0b3JG
CiAKICAgICBSZWY8TGFiZWw+IG5vcm1hbExhYmVsID0gbmV3TGFiZWwoKTsKICAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gY29uZGl0aW9uID0gbmV3VGVtcG9yYXJ5KCk7Ci0gICAgZW1pdEVxdWFsaXR5
T3A8T3BTdHJpY3RlcT4oY29uZGl0aW9uLmdldCgpLCBnZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0
ZXIoKSwgZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNH
ZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yUmVzdW1lTW9kZTo6Tm9ybWFsTW9kZSkpKSk7Cisg
ICAgZW1pdEVxdWFsaXR5T3A8T3BTdHJpY3RlcT4oY29uZGl0aW9uLmdldCgpLCBnZW5lcmF0b3JS
ZXN1bWVNb2RlUmVnaXN0ZXIoKSwgZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoc3RhdGljX2Nh
c3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6OkdlbmVyYXRvclJlc3VtZU1vZGU6Ok5vcm1hbE1vZGUp
KSkpOwogICAgIGVtaXRKdW1wSWZUcnVlKGNvbmRpdGlvbi5nZXQoKSwgbm9ybWFsTGFiZWwuZ2V0
KCkpOwogCiAgICAgUmVmPExhYmVsPiB0aHJvd0xhYmVsID0gbmV3TGFiZWwoKTsKLSAgICBlbWl0
RXF1YWxpdHlPcDxPcFN0cmljdGVxPihjb25kaXRpb24uZ2V0KCksIGdlbmVyYXRvclJlc3VtZU1v
ZGVSZWdpc3RlcigpLCBlbWl0TG9hZChudWxscHRyLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQz
Ml90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JSZXN1bWVNb2RlOjpUaHJvd01vZGUp
KSkpOworICAgIGVtaXRFcXVhbGl0eU9wPE9wU3RyaWN0ZXE+KGNvbmRpdGlvbi5nZXQoKSwgZ2Vu
ZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCksIGVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0
YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpHZW5lcmF0b3JSZXN1bWVNb2RlOjpUaHJv
d01vZGUpKSkpOwogICAgIGVtaXRKdW1wSWZUcnVlKGNvbmRpdGlvbi5nZXQoKSwgdGhyb3dMYWJl
bC5nZXQoKSk7CiAgICAgLy8gUmV0dXJuLgogICAgIHsKQEAgLTQ2NTYsMTAgKzQ2NzMsMTAgQEAg
UmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWxlZ2F0ZVlpZWxkKFJlZ2lzdGVy
SUQqIGFyZ3VtZW50LCBUaHJvd2FibGUKICAgICAgICAgICAgICAgICBSZWY8TGFiZWw+IHJldHVy
bkxhYmVsID0gbmV3TGFiZWwoKTsKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAg
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiBjb25kaXRpb24gPSBuZXdUZW1wb3JhcnkoKTsKLSAgICAg
ICAgICAgICAgICAgICAgZW1pdEVxdWFsaXR5T3A8T3BTdHJpY3RlcT4oY29uZGl0aW9uLmdldCgp
LCBnZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSwgZW1pdExvYWQobnVsbHB0ciwganNOdW1i
ZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yUmVz
dW1lTW9kZTo6Tm9ybWFsTW9kZSkpKSk7CisgICAgICAgICAgICAgICAgICAgIGVtaXRFcXVhbGl0
eU9wPE9wU3RyaWN0ZXE+KGNvbmRpdGlvbi5nZXQoKSwgZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lz
dGVyKCksIGVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpT
R2VuZXJhdG9yOjpHZW5lcmF0b3JSZXN1bWVNb2RlOjpOb3JtYWxNb2RlKSkpKTsKICAgICAgICAg
ICAgICAgICAgICAgZW1pdEp1bXBJZlRydWUoY29uZGl0aW9uLmdldCgpLCBub3JtYWxMYWJlbC5n
ZXQoKSk7CiAKLSAgICAgICAgICAgICAgICAgICAgZW1pdEVxdWFsaXR5T3A8T3BTdHJpY3RlcT4o
Y29uZGl0aW9uLmdldCgpLCBnZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSwgZW1pdExvYWQo
bnVsbHB0ciwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlv
bjo6R2VuZXJhdG9yUmVzdW1lTW9kZTo6UmV0dXJuTW9kZSkpKSk7CisgICAgICAgICAgICAgICAg
ICAgIGVtaXRFcXVhbGl0eU9wPE9wU3RyaWN0ZXE+KGNvbmRpdGlvbi5nZXQoKSwgZ2VuZXJhdG9y
UmVzdW1lTW9kZVJlZ2lzdGVyKCksIGVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0YXRpY19j
YXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpHZW5lcmF0b3JSZXN1bWVNb2RlOjpSZXR1cm5Nb2Rl
KSkpKTsKICAgICAgICAgICAgICAgICAgICAgZW1pdEp1bXBJZlRydWUoY29uZGl0aW9uLmdldCgp
LCByZXR1cm5MYWJlbC5nZXQoKSk7CiAKICAgICAgICAgICAgICAgICAgICAgLy8gRmFsbHRocm91
Z2ggdG8gVGhyb3dNb2RlLgpAQCAtNDc2MSw3ICs0Nzc4LDEwIEBAIFJlZ2lzdGVySUQqIEJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0RGVsZWdhdGVZaWVsZChSZWdpc3RlcklEKiBhcmd1bWVudCwgVGhy
b3dhYmxlCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2VuZXJhdG9yU3RhdGVDaGFuZ2Uo
aW50MzJfdCBzdGF0ZSkKIHsKICAgICBSZWdpc3RlcklEKiBjb21wbGV0ZWRTdGF0ZSA9IGVtaXRM
b2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0YXRlKSk7Ci0gICAgZW1pdFB1dEJ5SWQoZ2VuZXJhdG9y
UmVnaXN0ZXIoKSwgcHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclN0YXRl
UHJpdmF0ZU5hbWUoKSwgY29tcGxldGVkU3RhdGUpOworICAgIGlmIChtX2NvZGVCbG9jay0+cGFy
c2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpBc3luY0dlbmVyYXRvckJvZHlNb2RlKQorICAg
ICAgICBlbWl0UHV0QnlJZChnZW5lcmF0b3JSZWdpc3RlcigpLCBwcm9wZXJ0eU5hbWVzKCkuYnVp
bHRpbk5hbWVzKCkuZ2VuZXJhdG9yU3RhdGVQcml2YXRlTmFtZSgpLCBjb21wbGV0ZWRTdGF0ZSk7
CisgICAgZWxzZQorICAgICAgICBlbWl0UHV0SW50ZXJuYWxGaWVsZChnZW5lcmF0b3JSZWdpc3Rl
cigpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNHZW5lcmF0b3I6OkZpZWxkOjpTdGF0ZSksIGNv
bXBsZXRlZFN0YXRlKTsKIH0KIAogYm9vbCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEp1bXBWaWFG
aW5hbGx5SWZOZWVkZWQoaW50IHRhcmdldExhYmVsU2NvcGVEZXB0aCwgTGFiZWwmIGp1bXBUYXJn
ZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmgKaW5kZXggOTRlZWIxMzI2MTA2ZmY2ZGRjZDc0OTMxZGVhMGFiMjkxOTRk
ZGNjNy4uN2E1ZjFkNGRlOGUxZmMxMjg5N2IzN2YzNDY3ZmQ1M2QzZDM3ZGI4YyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuaApAQCAtMzUsNyArMzUsNyBAQAogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVk
ZSAiSlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNCaWdJbnQuaCIKLSNp
bmNsdWRlICJKU0dlbmVyYXRvckZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNHZW5lcmF0b3IuaCIK
ICNpbmNsdWRlICJKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oIgogI2luY2x1ZGUgIkxhYmVs
LmgiCiAjaW5jbHVkZSAiTGFiZWxTY29wZS5oIgpAQCAtNzI0LDEyICs3MjQsMTQgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdENyZWF0ZVRoaXMoUmVnaXN0ZXJJ
RCogZHN0KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdENyZWF0ZVByb21pc2UoUmVnaXN0ZXJJ
RCogZHN0LCBSZWdpc3RlcklEKiBuZXdUYXJnZXQsIGJvb2wgaXNJbnRlcm5hbFByb21pc2UpOwor
ICAgICAgICBSZWdpc3RlcklEKiBlbWl0Q3JlYXRlR2VuZXJhdG9yKFJlZ2lzdGVySUQqIGRzdCwg
UmVnaXN0ZXJJRCogbmV3VGFyZ2V0KTsKICAgICAgICAgdm9pZCBlbWl0VERaQ2hlY2soUmVnaXN0
ZXJJRCogdGFyZ2V0KTsKICAgICAgICAgYm9vbCBuZWVkc1REWkNoZWNrKGNvbnN0IFZhcmlhYmxl
Jik7CiAgICAgICAgIHZvaWQgZW1pdFREWkNoZWNrSWZOZWNlc3NhcnkoY29uc3QgVmFyaWFibGUm
LCBSZWdpc3RlcklEKiB0YXJnZXQsIFJlZ2lzdGVySUQqIHNjb3BlKTsKICAgICAgICAgdm9pZCBs
aWZ0VERaQ2hlY2tJZlBvc3NpYmxlKGNvbnN0IFZhcmlhYmxlJik7CiAgICAgICAgIFJlZ2lzdGVy
SUQqIGVtaXROZXdPYmplY3QoUmVnaXN0ZXJJRCogZHN0KTsKICAgICAgICAgUmVnaXN0ZXJJRCog
ZW1pdE5ld1Byb21pc2UoUmVnaXN0ZXJJRCogZHN0LCBib29sIGlzSW50ZXJuYWxQcm9taXNlKTsK
KyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld0dlbmVyYXRvcihSZWdpc3RlcklEKiBkc3QpOwog
ICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3QXJyYXkoUmVnaXN0ZXJJRCogZHN0LCBFbGVtZW50
Tm9kZSosIHVuc2lnbmVkIGxlbmd0aCwgSW5kZXhpbmdUeXBlIHJlY29tbWVuZGVkSW5kZXhpbmdU
eXBlKTsgLy8gc3RvcHMgYXQgZmlyc3QgZWxpc2lvbgogICAgICAgICBSZWdpc3RlcklEKiBlbWl0
TmV3QXJyYXlCdWZmZXIoUmVnaXN0ZXJJRCogZHN0LCBKU0ltbXV0YWJsZUJ1dHRlcmZseSosIElu
ZGV4aW5nVHlwZSByZWNvbW1lbmRlZEluZGV4aW5nVHlwZSk7CiAgICAgICAgIC8vIEZJWE1FOiBu
ZXdfYXJyYXlfd2l0aF9zcHJlYWQgc2hvdWxkIHVzZSBhbiBhcnJheSBhbGxvY2F0aW9uIHByb2Zp
bGUgYW5kIHRha2UgYSByZWNvbW1lbmRlZEluZGV4aW5nVHlwZQpAQCAtODY2LDYgKzg2OCw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZWdpc3RlcklEKiBlbWl0VG9JbmRleFN0cmluZyhS
ZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGluZGV4KTsKIAogICAgICAgICBSZWdpc3RlcklE
KiBlbWl0SXNDZWxsV2l0aFR5cGUoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMsIEpT
VHlwZSk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJc0dlbmVyYXRvcihSZWdpc3RlcklEKiBk
c3QsIFJlZ2lzdGVySUQqIHNyYykgeyByZXR1cm4gZW1pdElzQ2VsbFdpdGhUeXBlKGRzdCwgc3Jj
LCBKU0dlbmVyYXRvclR5cGUpOyB9CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJc0pTQXJyYXko
UmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMpIHsgcmV0dXJuIGVtaXRJc0NlbGxXaXRo
VHlwZShkc3QsIHNyYywgQXJyYXlUeXBlKTsgfQogICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXNQ
cm9taXNlKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjKSB7IHJldHVybiBlbWl0SXND
ZWxsV2l0aFR5cGUoZHN0LCBzcmMsIEpTUHJvbWlzZVR5cGUpOyB9CiAgICAgICAgIFJlZ2lzdGVy
SUQqIGVtaXRJc1Byb3h5T2JqZWN0KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjKSB7
IHJldHVybiBlbWl0SXNDZWxsV2l0aFR5cGUoZHN0LCBzcmMsIFByb3h5T2JqZWN0VHlwZSk7IH0K
QEAgLTk4OCwxMCArOTkxLDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRH
ZW5lcmF0b3JTdGF0ZUNoYW5nZShpbnQzMl90IHN0YXRlKTsKICAgICAgICAgUmVnaXN0ZXJJRCog
ZW1pdFlpZWxkKFJlZ2lzdGVySUQqIGFyZ3VtZW50LCBKU0FzeW5jR2VuZXJhdG9yRnVuY3Rpb246
OkFzeW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNvbiA9IEpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbjo6
QXN5bmNHZW5lcmF0b3JTdXNwZW5kUmVhc29uOjpZaWVsZCk7CiAgICAgICAgIFJlZ2lzdGVySUQq
IGVtaXREZWxlZ2F0ZVlpZWxkKFJlZ2lzdGVySUQqIGFyZ3VtZW50LCBUaHJvd2FibGVFeHByZXNz
aW9uRGF0YSopOwotICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JTdGF0ZVJlZ2lzdGVyKCkg
eyByZXR1cm4gJm1fcGFyYW1ldGVyc1tzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1
bmN0aW9uOjpHZW5lcmF0b3JBcmd1bWVudDo6U3RhdGUpXTsgfQotICAgICAgICBSZWdpc3RlcklE
KiBnZW5lcmF0b3JWYWx1ZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1fcGFyYW1ldGVyc1tzdGF0aWNf
Y2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JBcmd1bWVudDo6VmFs
dWUpXTsgfQotICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIo
KSB7IHJldHVybiAmbV9wYXJhbWV0ZXJzW3N0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9y
RnVuY3Rpb246OkdlbmVyYXRvckFyZ3VtZW50OjpSZXN1bWVNb2RlKV07IH0KLSAgICAgICAgUmVn
aXN0ZXJJRCogZ2VuZXJhdG9yRnJhbWVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNb
c3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yQXJndW1l
bnQ6OkZyYW1lKV07IH0KKyAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yU3RhdGVSZWdpc3Rl
cigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0
b3I6OkdlbmVyYXRvckFyZ3VtZW50OjpTdGF0ZSldOyB9CisgICAgICAgIFJlZ2lzdGVySUQqIGdl
bmVyYXRvclZhbHVlUmVnaXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJzW3N0YXRpY19jYXN0
PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpHZW5lcmF0b3JBcmd1bWVudDo6VmFsdWUpXTsgfQorICAg
ICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSB7IHJldHVybiAm
bV9wYXJhbWV0ZXJzW3N0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpHZW5lcmF0b3JB
cmd1bWVudDo6UmVzdW1lTW9kZSldOyB9CisgICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRvckZy
YW1lUmVnaXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJzW3N0YXRpY19jYXN0PGludDMyX3Q+
KEpTR2VuZXJhdG9yOjpHZW5lcmF0b3JBcmd1bWVudDo6RnJhbWUpXTsgfQogCiAgICAgICAgIENv
ZGVUeXBlIGNvZGVUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlVHlwZTsgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5k
ZXggNDg5MDllZjliMDRkMTVhZGM0YTAyZDI2Yzc1ZjhjYzVjOWMxNTNiMS4uODc3OGZiNjY0Njk1
OTljZTI1YjBiNjg5ZDBkMzkwZWEzMDlhNmRjMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtMzQsNyArMzQsNyBAQAog
I2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU0Z1
bmN0aW9uLmgiCi0jaW5jbHVkZSAiSlNHZW5lcmF0b3JGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpT
R2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU0lt
bXV0YWJsZUJ1dHRlcmZseS5oIgogI2luY2x1ZGUgIkxhYmVsU2NvcGUuaCIKQEAgLTEwMjAsNiAr
MTAyMCwyMCBAQCBzdGF0aWMgSlNQcm9taXNlOjpGaWVsZCBwcm9taXNlSW50ZXJuYWxGaWVsZElu
ZGV4KEJ5dGVjb2RlSW50cmluc2ljTm9kZSogbm9kZSkKICAgICByZXR1cm4gSlNQcm9taXNlOjpG
aWVsZDo6RmxhZ3M7CiB9CiAKK3N0YXRpYyBKU0dlbmVyYXRvcjo6RmllbGQgZ2VuZXJhdG9ySW50
ZXJuYWxGaWVsZEluZGV4KEJ5dGVjb2RlSW50cmluc2ljTm9kZSogbm9kZSkKK3sKKyAgICBpZiAo
bm9kZS0+ZW1pdHRlcigpID09ICZCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2lj
X2dlbmVyYXRvckZpZWxkU3RhdGUpCisgICAgICAgIHJldHVybiBKU0dlbmVyYXRvcjo6RmllbGQ6
OlN0YXRlOworICAgIGlmIChub2RlLT5lbWl0dGVyKCkgPT0gJkJ5dGVjb2RlSW50cmluc2ljTm9k
ZTo6ZW1pdF9pbnRyaW5zaWNfZ2VuZXJhdG9yRmllbGROZXh0KQorICAgICAgICByZXR1cm4gSlNH
ZW5lcmF0b3I6OkZpZWxkOjpOZXh0OworICAgIGlmIChub2RlLT5lbWl0dGVyKCkgPT0gJkJ5dGVj
b2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfZ2VuZXJhdG9yRmllbGRUaGlzKQorICAg
ICAgICByZXR1cm4gSlNHZW5lcmF0b3I6OkZpZWxkOjpUaGlzOworICAgIGlmIChub2RlLT5lbWl0
dGVyKCkgPT0gJkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfZ2VuZXJhdG9y
RmllbGRGcmFtZSkKKyAgICAgICAgcmV0dXJuIEpTR2VuZXJhdG9yOjpGaWVsZDo6RnJhbWU7Cisg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gSlNHZW5lcmF0b3I6
OkZpZWxkOjpTdGF0ZTsKK30KKwogUmVnaXN0ZXJJRCogQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjpl
bWl0X2ludHJpbnNpY19nZXRQcm9taXNlSW50ZXJuYWxGaWVsZChCeXRlY29kZUdlbmVyYXRvciYg
Z2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7CiAgICAgQXJndW1lbnRMaXN0Tm9kZSogbm9k
ZSA9IG1fYXJncy0+bV9saXN0Tm9kZTsKQEAgLTEwMzMsNiArMTA0NywxOSBAQCBSZWdpc3RlcklE
KiBCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dldFByb21pc2VJbnRlcm5h
bEZpZWxkKEJ5dGVjbwogICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdEdldEludGVybmFsRmllbGQo
Z2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSwgaW5kZXgpOwogfQog
CitSZWdpc3RlcklEKiBCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dldEdl
bmVyYXRvckludGVybmFsRmllbGQoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0
ZXJJRCogZHN0KQoreworICAgIEFyZ3VtZW50TGlzdE5vZGUqIG5vZGUgPSBtX2FyZ3MtPm1fbGlz
dE5vZGU7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGJhc2UgPSBnZW5lcmF0b3IuZW1pdE5vZGUo
bm9kZSk7CisgICAgbm9kZSA9IG5vZGUtPm1fbmV4dDsKKyAgICBSRUxFQVNFX0FTU0VSVChub2Rl
LT5tX2V4cHItPmlzQnl0ZWNvZGVJbnRyaW5zaWNOb2RlKCkpOworICAgIHVuc2lnbmVkIGluZGV4
ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGdlbmVyYXRvckludGVybmFsRmllbGRJbmRleChzdGF0
aWNfY2FzdDxCeXRlY29kZUludHJpbnNpY05vZGUqPihub2RlLT5tX2V4cHIpKSk7CisgICAgQVNT
RVJUKGluZGV4IDwgSlNHZW5lcmF0b3I6Om51bWJlck9mSW50ZXJuYWxGaWVsZHMpOworICAgIEFT
U0VSVCghbm9kZS0+bV9uZXh0KTsKKworICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdEdldEludGVy
bmFsRmllbGQoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSwgaW5k
ZXgpOworfQorCiBSZWdpc3RlcklEKiBCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmlu
c2ljX2FyZ3VtZW50KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRz
dCkKIHsKICAgICBBcmd1bWVudExpc3ROb2RlKiBub2RlID0gbV9hcmdzLT5tX2xpc3ROb2RlOwpA
QCAtMTExOCw2ICsxMTQ1LDIyIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6
ZW1pdF9pbnRyaW5zaWNfcHV0UHJvbWlzZUludGVybmFsRmllbGQoQnl0ZWNvCiAgICAgcmV0dXJu
IGdlbmVyYXRvci5tb3ZlKGRzdCwgZ2VuZXJhdG9yLmVtaXRQdXRJbnRlcm5hbEZpZWxkKGJhc2Uu
Z2V0KCksIGluZGV4LCB2YWx1ZS5nZXQoKSkpOwogfQogCitSZWdpc3RlcklEKiBCeXRlY29kZUlu
dHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX3B1dEdlbmVyYXRvckludGVybmFsRmllbGQoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQoreworICAgIEFyZ3Vt
ZW50TGlzdE5vZGUqIG5vZGUgPSBtX2FyZ3MtPm1fbGlzdE5vZGU7CisgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IGJhc2UgPSBnZW5lcmF0b3IuZW1pdE5vZGUobm9kZSk7CisgICAgbm9kZSA9IG5vZGUt
Pm1fbmV4dDsKKyAgICBSRUxFQVNFX0FTU0VSVChub2RlLT5tX2V4cHItPmlzQnl0ZWNvZGVJbnRy
aW5zaWNOb2RlKCkpOworICAgIHVuc2lnbmVkIGluZGV4ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KGdlbmVyYXRvckludGVybmFsRmllbGRJbmRleChzdGF0aWNfY2FzdDxCeXRlY29kZUludHJpbnNp
Y05vZGUqPihub2RlLT5tX2V4cHIpKSk7CisgICAgQVNTRVJUKGluZGV4IDwgSlNHZW5lcmF0b3I6
Om51bWJlck9mSW50ZXJuYWxGaWVsZHMpOworICAgIG5vZGUgPSBub2RlLT5tX25leHQ7CisgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXROb2RlKG5vZGUpOworCisg
ICAgQVNTRVJUKCFub2RlLT5tX25leHQpOworCisgICAgcmV0dXJuIGdlbmVyYXRvci5tb3ZlKGRz
dCwgZ2VuZXJhdG9yLmVtaXRQdXRJbnRlcm5hbEZpZWxkKGJhc2UuZ2V0KCksIGluZGV4LCB2YWx1
ZS5nZXQoKSkpOworfQorCiBSZWdpc3RlcklEKiBCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRf
aW50cmluc2ljX3RhaWxDYWxsRm9yd2FyZEFyZ3VtZW50cyhCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7CiAgICAgQXJndW1lbnRMaXN0Tm9kZSogbm9kZSA9
IG1fYXJncy0+bV9saXN0Tm9kZTsKQEAgLTEyMzEsNiArMTI3NCwxNSBAQCBSZWdpc3RlcklEKiBC
eXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2lkV2l0aFByb2ZpbGUoQnl0ZWNv
ZGVHZW5lcmF0bwogCiAgICAgcmV0dXJuIGdlbmVyYXRvci5tb3ZlKGRzdCwgZ2VuZXJhdG9yLmVt
aXRJZFdpdGhQcm9maWxlKGlkVmFsdWUuZ2V0KCksIHNwZWN1bGF0aW9uKSk7CiB9CisKK1JlZ2lz
dGVySUQqIEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfaXNHZW5lcmF0b3Io
SlNDOjpCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBKU0M6OlJlZ2lzdGVySUQqIGRzdCkK
K3sKKyAgICBBcmd1bWVudExpc3ROb2RlKiBub2RlID0gbV9hcmdzLT5tX2xpc3ROb2RlOworICAg
IFJlZlB0cjxSZWdpc3RlcklEPiBzcmMgPSBnZW5lcmF0b3IuZW1pdE5vZGUobm9kZSk7CisgICAg
QVNTRVJUKCFub2RlLT5tX25leHQpOworCisgICAgcmV0dXJuIGdlbmVyYXRvci5tb3ZlKGRzdCwg
Z2VuZXJhdG9yLmVtaXRJc0dlbmVyYXRvcihnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCks
IHNyYy5nZXQoKSkpOworfQogICAgIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVJbnRyaW5zaWNOb2Rl
OjplbWl0X2ludHJpbnNpY19pc0pTQXJyYXkoSlNDOjpCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLCBKU0M6OlJlZ2lzdGVySUQqIGRzdCkKIHsKQEAgLTM5OTMsNyArNDA0NSw3IEBAIHZvaWQg
RnVuY3Rpb25Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwg
UmVnaXN0ZXJJRCopCiAgICAgICAgIGdlbmVyYXRvci5tb3ZlKGFyZ3MuYXJndW1lbnRSZWdpc3Rl
cihhcmd1bWVudENvdW50KyspLCBnZW5lcmF0b3IuZ2VuZXJhdG9yUmVnaXN0ZXIoKSk7CiAgICAg
ICAgIGdlbmVyYXRvci5tb3ZlKGFyZ3MuYXJndW1lbnRSZWdpc3Rlcihhcmd1bWVudENvdW50Kysp
LCBnZW5lcmF0b3IucHJvbWlzZVJlZ2lzdGVyKCkpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdExv
YWQoYXJncy5hcmd1bWVudFJlZ2lzdGVyKGFyZ3VtZW50Q291bnQrKyksIGpzVW5kZWZpbmVkKCkp
OwotICAgICAgICBnZW5lcmF0b3IuZW1pdExvYWQoYXJncy5hcmd1bWVudFJlZ2lzdGVyKGFyZ3Vt
ZW50Q291bnQrKyksIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVu
Y3Rpb246OkdlbmVyYXRvclJlc3VtZU1vZGU6Ok5vcm1hbE1vZGUpKSk7CisgICAgICAgIGdlbmVy
YXRvci5lbWl0TG9hZChhcmdzLmFyZ3VtZW50UmVnaXN0ZXIoYXJndW1lbnRDb3VudCsrKSwganNO
dW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6OkdlbmVyYXRvclJlc3VtZU1v
ZGU6Ok5vcm1hbE1vZGUpKSk7CiAgICAgICAgIC8vIEpTVGV4dFBvc2l0aW9uKGludCBfbGluZSwg
aW50IF9vZmZzZXQsIGludCBfbGluZVN0YXJ0T2Zmc2V0KQogICAgICAgICBKU1RleHRQb3NpdGlv
biBkaXZvdChmaXJzdExpbmUoKSwgc3RhcnRPZmZzZXQoKSwgbGluZVN0YXJ0T2Zmc2V0KCkpOwog
CkBAIC00MDEwLDExICs0MDYyLDExIEBAIHZvaWQgRnVuY3Rpb25Ob2RlOjplbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCiAgICAgICAgIFJlZjxM
YWJlbD4gZ2VuZXJhdG9yQm9keUxhYmVsID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CiAgICAgICAg
IHsKICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBjb25kaXRpb24gPSBnZW5lcmF0b3Iu
bmV3VGVtcG9yYXJ5KCk7Ci0gICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEVxdWFsaXR5T3A8T3BT
dHJpY3RlcT4oY29uZGl0aW9uLmdldCgpLCBnZW5lcmF0b3IuZ2VuZXJhdG9yUmVzdW1lTW9kZVJl
Z2lzdGVyKCksIGdlbmVyYXRvci5lbWl0TG9hZChudWxscHRyLCBqc051bWJlcihzdGF0aWNfY2Fz
dDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JSZXN1bWVNb2RlOjpOb3Jt
YWxNb2RlKSkpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0RXF1YWxpdHlPcDxPcFN0cmlj
dGVxPihjb25kaXRpb24uZ2V0KCksIGdlbmVyYXRvci5nZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0
ZXIoKSwgZ2VuZXJhdG9yLmVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGlu
dDMyX3Q+KEpTR2VuZXJhdG9yOjpHZW5lcmF0b3JSZXN1bWVNb2RlOjpOb3JtYWxNb2RlKSkpKTsK
ICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcElmVHJ1ZShjb25kaXRpb24uZ2V0KCksIGdl
bmVyYXRvckJvZHlMYWJlbC5nZXQoKSk7CiAKICAgICAgICAgICAgIFJlZjxMYWJlbD4gdGhyb3dM
YWJlbCA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOwotICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRF
cXVhbGl0eU9wPE9wU3RyaWN0ZXE+KGNvbmRpdGlvbi5nZXQoKSwgZ2VuZXJhdG9yLmdlbmVyYXRv
clJlc3VtZU1vZGVSZWdpc3RlcigpLCBnZW5lcmF0b3IuZW1pdExvYWQobnVsbHB0ciwganNOdW1i
ZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yUmVz
dW1lTW9kZTo6VGhyb3dNb2RlKSkpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0RXF1YWxp
dHlPcDxPcFN0cmljdGVxPihjb25kaXRpb24uZ2V0KCksIGdlbmVyYXRvci5nZW5lcmF0b3JSZXN1
bWVNb2RlUmVnaXN0ZXIoKSwgZ2VuZXJhdG9yLmVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0
YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpHZW5lcmF0b3JSZXN1bWVNb2RlOjpUaHJv
d01vZGUpKSkpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZUcnVlKGNvbmRpdGlv
bi5nZXQoKSwgdGhyb3dMYWJlbC5nZXQoKSk7CiAKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0
UmV0dXJuKGdlbmVyYXRvci5nZW5lcmF0b3JWYWx1ZVJlZ2lzdGVyKCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5l
cy5oCmluZGV4IGMyZmUzYWJhOTU5YjA1MDJmNDhmNTVhMjU1MTVkZjI5NGQ3ZTllMGIuLjliNjM3
ZmQ3ZGVmNTFhNjE4NTM4YWIwNDY4MmIwNDVkMjZhMWVmN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgK
QEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJI
YXNoTWFwSW1wbC5oIgogI2luY2x1ZGUgIkpJVE9wZXJhdGlvbnMuaCIKKyNpbmNsdWRlICJKU0dl
bmVyYXRvci5oIgogI2luY2x1ZGUgIkpTSW1tdXRhYmxlQnV0dGVyZmx5LmgiCiAjaW5jbHVkZSAi
SlNJbnRlcm5hbFByb21pc2UuaCIKICNpbmNsdWRlICJKU0ludGVybmFsUHJvbWlzZUNvbnN0cnVj
dG9yLmgiCkBAIC0xNTY0LDE4ICsxNTY1LDI3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxB
YnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICBjYXNlIElzQ2VsbFdp
dGhUeXBlOgotICAgICAgICAgICAgaWYgKCEoY2hpbGQubV90eXBlICYgfm5vZGUtPnNwZWN1bGF0
ZWRUeXBlRm9yUXVlcnkoKSkpIHsKKyAgICAgICAgY2FzZSBJc0NlbGxXaXRoVHlwZTogeworICAg
ICAgICAgICAgT3B0aW9uYWw8U3BlY3VsYXRlZFR5cGU+IGZpbHRlciA9IG5vZGUtPnNwZWN1bGF0
ZWRUeXBlRm9yUXVlcnkoKTsKKyAgICAgICAgICAgIGlmICghZmlsdGVyKSB7CisgICAgICAgICAg
ICAgICAgaWYgKCEoY2hpbGQubV90eXBlICYgU3BlY0NlbGwpKSB7CisgICAgICAgICAgICAgICAg
ICAgIHNldENvbnN0YW50KG5vZGUsIGpzQm9vbGVhbihmYWxzZSkpOworICAgICAgICAgICAgICAg
ICAgICBjb25zdGFudFdhc1NldCA9IHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCEoY2hpbGQubV90
eXBlICYgfmZpbHRlci52YWx1ZSgpKSkgewogICAgICAgICAgICAgICAgIHNldENvbnN0YW50KG5v
ZGUsIGpzQm9vbGVhbih0cnVlKSk7CiAgICAgICAgICAgICAgICAgY29uc3RhbnRXYXNTZXQgPSB0
cnVlOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAg
aWYgKCEoY2hpbGQubV90eXBlICYgbm9kZS0+c3BlY3VsYXRlZFR5cGVGb3JRdWVyeSgpKSkgewor
ICAgICAgICAgICAgaWYgKCEoY2hpbGQubV90eXBlICYgZmlsdGVyLnZhbHVlKCkpKSB7CiAgICAg
ICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNCb29sZWFuKGZhbHNlKSk7CiAgICAgICAg
ICAgICAgICAgY29uc3RhbnRXYXNTZXQgPSB0cnVlOwogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KIAogICAgICAgICBj
YXNlIElzVHlwZWRBcnJheVZpZXc6CiAgICAgICAgICAgICBpZiAoIShjaGlsZC5tX3R5cGUgJiB+
U3BlY1R5cGVkQXJyYXlWaWV3KSkgewpAQCAtMjY3NiwxMCArMjY4Niw0MiBAQCBib29sIEFic3Ry
YWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25l
ZCBjbG9iYmVyTGltaQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIENyZWF0ZUdl
bmVyYXRvcjogeworICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgaWYgKEpT
VmFsdWUgYmFzZSA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdmFsdWUpIHsKKyAgICAgICAg
ICAgIGlmIChhdXRvKiBmdW5jdGlvbiA9IGpzRHluYW1pY0Nhc3Q8SlNGdW5jdGlvbio+KG1fZ3Jh
cGgubV92bSwgYmFzZSkpIHsKKyAgICAgICAgICAgICAgICBpZiAoRnVuY3Rpb25SYXJlRGF0YSog
cmFyZURhdGEgPSBmdW5jdGlvbi0+cmFyZURhdGEoKSkgeworICAgICAgICAgICAgICAgICAgICBp
ZiAocmFyZURhdGEtPmFsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludFNldCgpLmlzU3RpbGxWYWxp
ZCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHJh
cmVEYXRhLT5pbnRlcm5hbEZ1bmN0aW9uQWxsb2NhdGlvblN0cnVjdHVyZSgpOworICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKHN0cnVjdHVyZQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICYmIHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCkgPT0gSlNHZW5lcmF0b3I6OmluZm8oKQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICYmIHN0cnVjdHVyZS0+Z2xvYmFsT2JqZWN0KCkgPT0gZ2xv
YmFsT2JqZWN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgcmFyZURhdGEtPmFsbG9j
YXRpb25Qcm9maWxlV2F0Y2hwb2ludFNldCgpLmlzU3RpbGxWYWxpZCgpKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbV9ncmFwaC5mcmVlemUocmFyZURhdGEpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1fZ3JhcGgud2F0Y2hwb2ludHMoKS5hZGRMYXppbHkocmFyZURhdGEt
PmFsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludFNldCgpKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtX3N0YXRlLnNldEZvdW5kQ29uc3RhbnRzKHRydWUpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGRpZEZvbGRDbG9iYmVyV29ybGQoKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZXRGb3JOb2RlKG5vZGUsIHN0cnVjdHVyZSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICAgICAgY2xvYmJlcldvcmxkKCk7CisgICAgICAgIHNldFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNP
YmplY3RPdGhlcik7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgTmV3UHJvbWlz
ZToKICAgICAgICAgQVNTRVJUKCEhbm9kZS0+c3RydWN0dXJlKCkuZ2V0KCkpOwogICAgICAgICBz
ZXRGb3JOb2RlKG5vZGUsIG5vZGUtPnN0cnVjdHVyZSgpKTsKICAgICAgICAgYnJlYWs7CisKKyAg
ICBjYXNlIE5ld0dlbmVyYXRvcjoKKyAgICAgICAgQVNTRVJUKCEhbm9kZS0+c3RydWN0dXJlKCku
Z2V0KCkpOworICAgICAgICBzZXRGb3JOb2RlKG5vZGUsIG5vZGUtPnN0cnVjdHVyZSgpKTsKKyAg
ICAgICAgYnJlYWs7CiAgICAgICAgIAogICAgIGNhc2UgTmV3T2JqZWN0OgogICAgICAgICBBU1NF
UlQoISFub2RlLT5zdHJ1Y3R1cmUoKS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IGFkNjNkMzFiZjMxYjVjMjEyMmJiYWQx
ODI3ZGYyYzgxZDc0NjFkY2IuLjhhYWQyNWFiNzBkMTU4ZTkwYWI0YmVkMzVkNDFhYzY2MjZkMmUz
OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIu
Y3BwCkBAIC00OTUyLDYgKzQ5NTIsNTIgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9j
ayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2NyZWF0ZV9wcm9t
aXNlKTsKICAgICAgICAgfQogCisgICAgICAgIGNhc2Ugb3BfY3JlYXRlX2dlbmVyYXRvcjogewor
ICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKGN1cnJlbnROb2RlT3JpZ2luKCkuc2VtYW50aWMpOworICAgICAgICAgICAgYXV0
byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BDcmVhdGVHZW5lcmF0b3I+KCk7
CisgICAgICAgICAgICBOb2RlKiBjYWxsZWUgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2Rl
Lm1fY2FsbGVlKSk7CisKKyAgICAgICAgICAgIGJvb2wgYWxyZWFkeUVtaXR0ZWQgPSBmYWxzZTsK
KworICAgICAgICAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBjYWxsZWUtPmR5bmFtaWNDYXN0
Q29uc3RhbnQ8SlNGdW5jdGlvbio+KCptX3ZtKTsKKyAgICAgICAgICAgIGlmICghZnVuY3Rpb24p
IHsKKyAgICAgICAgICAgICAgICBKU0NlbGwqIGNhY2hlZEZ1bmN0aW9uID0gYnl0ZWNvZGUubWV0
YWRhdGEoY29kZUJsb2NrKS5tX2NhY2hlZENhbGxlZS51bnZhbGlkYXRlZEdldCgpOworICAgICAg
ICAgICAgICAgIGlmIChjYWNoZWRGdW5jdGlvbgorICAgICAgICAgICAgICAgICAgICAmJiBjYWNo
ZWRGdW5jdGlvbiAhPSBKU0NlbGw6OnNlZW5NdWx0aXBsZUNhbGxlZU9iamVjdHMoKQorICAgICAg
ICAgICAgICAgICAgICAmJiAhbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0
U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkQ2VsbCkpIHsKKyAgICAgICAgICAgICAgICAgICAgQVNT
RVJUKGNhY2hlZEZ1bmN0aW9uLT5pbmhlcml0czxKU0Z1bmN0aW9uPigqbV92bSkpOworCisgICAg
ICAgICAgICAgICAgICAgIEZyb3plblZhbHVlKiBmcm96ZW4gPSBtX2dyYXBoLmZyZWV6ZShjYWNo
ZWRGdW5jdGlvbik7CisgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tDZWxsLCBP
cEluZm8oZnJvemVuKSwgY2FsbGVlKTsKKworICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiA9
IHN0YXRpY19jYXN0PEpTRnVuY3Rpb24qPihjYWNoZWRGdW5jdGlvbik7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoZnVuY3Rpb24pIHsKKyAgICAg
ICAgICAgICAgICBpZiAoRnVuY3Rpb25SYXJlRGF0YSogcmFyZURhdGEgPSBmdW5jdGlvbi0+cmFy
ZURhdGEoKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAocmFyZURhdGEtPmFsbG9jYXRpb25Q
cm9maWxlV2F0Y2hwb2ludFNldCgpLmlzU3RpbGxWYWxpZCgpKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHJhcmVEYXRhLT5pbnRlcm5hbEZ1bmN0aW9u
QWxsb2NhdGlvblN0cnVjdHVyZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0cnVj
dHVyZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIHN0cnVjdHVyZS0+Y2xhc3NJbmZv
KCkgPT0gSlNHZW5lcmF0b3I6OmluZm8oKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICYm
IHN0cnVjdHVyZS0+Z2xvYmFsT2JqZWN0KCkgPT0gZ2xvYmFsT2JqZWN0CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJiYgcmFyZURhdGEtPmFsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludFNl
dCgpLmlzU3RpbGxWYWxpZCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFw
aC5mcmVlemUocmFyZURhdGEpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgu
d2F0Y2hwb2ludHMoKS5hZGRMYXppbHkocmFyZURhdGEtPmFsbG9jYXRpb25Qcm9maWxlV2F0Y2hw
b2ludFNldCgpKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBjYWxsZWUg
aXMgc3RpbGwgbGl2ZSB1cCB0byB0aGlzIHBvaW50LgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGFkZFRvR3JhcGgoUGhhbnRvbSwgY2FsbGVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fZHN0KSwgYWRkVG9HcmFwaChOZXdH
ZW5lcmF0b3IsIE9wSW5mbyhtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHN0cnVjdHVyZSkpKSk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxyZWFkeUVtaXR0ZWQgPSB0cnVlOworICAg
ICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCFhbHJlYWR5RW1pdHRlZCkK
KyAgICAgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fZHN0KSwgYWRk
VG9HcmFwaChDcmVhdGVHZW5lcmF0b3IsIGNhbGxlZSkpOworICAgICAgICAgICAgTkVYVF9PUENP
REUob3BfY3JlYXRlX2dlbmVyYXRvcik7CisgICAgICAgIH0KKwogICAgICAgICBjYXNlIG9wX25l
d19vYmplY3Q6IHsKICAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rp
b24tPmFzPE9wTmV3T2JqZWN0PigpOwogICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLm1fZHN0LApA
QCAtNDk2Niw2ICs1MDEyLDEzIEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5z
aWduZWQgbGltaXQpCiAgICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV9kc3QsIGFkZFRvR3JhcGgo
TmV3UHJvbWlzZSwgT3BJbmZvKG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUoYnl0ZWNvZGUubV9p
c0ludGVybmFsUHJvbWlzZSA/IGdsb2JhbE9iamVjdC0+aW50ZXJuYWxQcm9taXNlU3RydWN0dXJl
KCkgOiBnbG9iYWxPYmplY3QtPnByb21pc2VTdHJ1Y3R1cmUoKSkpLCBPcEluZm8oYnl0ZWNvZGUu
bV9pc0ludGVybmFsUHJvbWlzZSkpKTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX25ld19w
cm9taXNlKTsKICAgICAgICAgfQorCisgICAgICAgIGNhc2Ugb3BfbmV3X2dlbmVyYXRvcjogewor
ICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BOZXdH
ZW5lcmF0b3I+KCk7CisgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY3VycmVudE5vZGVPcmlnaW4oKS5zZW1hbnRpYyk7Cisg
ICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV9kc3QsIGFkZFRvR3JhcGgoTmV3R2VuZXJhdG9yLCBP
cEluZm8obV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPmdlbmVyYXRvclN0
cnVjdHVyZSgpKSkpKTsKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX25ld19nZW5lcmF0b3Ip
OworICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBvcF9uZXdfYXJyYXk6IHsK
ICAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wTmV3
QXJyYXk+KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFi
aWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5j
cHAKaW5kZXggYzBlZTk4YWVhODM4ZDcyNTZlNmI3NTRiNTQ1NzRiYjhkNmU5ZjlmYS4uNzFlYzdm
MTYyODQ5NWViMmM4NDA0NTk1MTc4NTcxMDJmMWQ4ZTQwYSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcApAQCAtMTE3LDYgKzExNyw3IEBAIENhcGFi
aWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwoT3Bjb2RlSUQgb3Bjb2RlSUQsIENvZGVCbG9jayog
Y29kZUJsb2NrLCBjb25zdCBJCiAgICAgY2FzZSBvcF9jaGVja190ZHo6CiAgICAgY2FzZSBvcF9j
cmVhdGVfdGhpczoKICAgICBjYXNlIG9wX2NyZWF0ZV9wcm9taXNlOgorICAgIGNhc2Ugb3BfY3Jl
YXRlX2dlbmVyYXRvcjoKICAgICBjYXNlIG9wX2JpdG5vdDoKICAgICBjYXNlIG9wX2JpdGFuZDoK
ICAgICBjYXNlIG9wX2JpdG9yOgpAQCAtMjEyLDYgKzIxMyw3IEBAIENhcGFiaWxpdHlMZXZlbCBj
YXBhYmlsaXR5TGV2ZWwoT3Bjb2RlSUQgb3Bjb2RlSUQsIENvZGVCbG9jayogY29kZUJsb2NrLCBj
b25zdCBJCiAgICAgY2FzZSBvcF9lbmQ6CiAgICAgY2FzZSBvcF9uZXdfb2JqZWN0OgogICAgIGNh
c2Ugb3BfbmV3X3Byb21pc2U6CisgICAgY2FzZSBvcF9uZXdfZ2VuZXJhdG9yOgogICAgIGNhc2Ug
b3BfbmV3X2FycmF5OgogICAgIGNhc2Ugb3BfbmV3X2FycmF5X3dpdGhfc2l6ZToKICAgICBjYXNl
IG9wX25ld19hcnJheV9idWZmZXI6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Nsb2JiZXJpemUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJl
cml6ZS5oCmluZGV4IDMwM2Y0NzkzZTNiNjQ1ZTg0OGJjMzZkZDI2OWJkOGYwY2I2NTRkYjQuLjlh
OGFkMDdiMzFhODhiZWE2ZjliNGQ3YTlhOTJlMWRkYmY4ZWQ1NDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCkBAIC02NjgsNiArNjY4LDcgQEAgdm9pZCBjbG9i
YmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQs
IGNvbnN0IFdyaXRlRnUKICAgICBjYXNlIE51bWJlclRvU3RyaW5nV2l0aFJhZGl4OgogICAgIGNh
c2UgQ3JlYXRlVGhpczoKICAgICBjYXNlIENyZWF0ZVByb21pc2U6CisgICAgY2FzZSBDcmVhdGVH
ZW5lcmF0b3I6CiAgICAgY2FzZSBJbnN0YW5jZU9mOgogICAgIGNhc2UgU3RyaW5nVmFsdWVPZjoK
ICAgICBjYXNlIE9iamVjdEtleXM6CkBAIC0xNTY2LDYgKzE1NjcsNyBAQCB2b2lkIGNsb2JiZXJp
emUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29u
c3QgV3JpdGVGdQogCiAgICAgY2FzZSBOZXdPYmplY3Q6CiAgICAgY2FzZSBOZXdQcm9taXNlOgor
ICAgIGNhc2UgTmV3R2VuZXJhdG9yOgogICAgIGNhc2UgTmV3UmVnZXhwOgogICAgIGNhc2UgTmV3
U3ltYm9sOgogICAgIGNhc2UgTmV3U3RyaW5nT2JqZWN0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcAppbmRleCAzNzBmZDFkYzJjNWMx
NDc2YzdiNWE1M2NmZGMyZGI3YzFmNGUwMWM0Li5kMmY3YmE0NzhkOGVjODM0Y2QyNTA4ZDUzYmQ5
ZmExNGQyODAwOTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Ns
b2JiZXJzRXhpdFN0YXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Ns
b2JiZXJzRXhpdFN0YXRlLmNwcApAQCAtNTgsNiArNTgsNyBAQCBib29sIGNsb2JiZXJzRXhpdFN0
YXRlKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIEFycmF5aWZ5OgogICAgIGNh
c2UgTmV3T2JqZWN0OgogICAgIGNhc2UgTmV3UHJvbWlzZToKKyAgICBjYXNlIE5ld0dlbmVyYXRv
cjoKICAgICBjYXNlIE5ld1JlZ2V4cDoKICAgICBjYXNlIE5ld1N5bWJvbDoKICAgICBjYXNlIE5l
d1N0cmluZ09iamVjdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
b25zdGFudEZvbGRpbmdQaGFzZS5jcHAKaW5kZXggOTlkODc1ZTY2YTZiNzBmYmU1Mjg4MWUwMDEx
N2E3MDhiZWE0M2JkMC4uZjNmNWNiNjBkODhhYzVjNjQ1MmRkZjE1YmU0YzQ1ZGZlMTA4ZDlhNyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQ
aGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRp
bmdQaGFzZS5jcHAKQEAgLTc3OCw2ICs3NzgsMzAgQEAgY2xhc3MgQ29uc3RhbnRGb2xkaW5nUGhh
c2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
fQogCisgICAgICAgICAgICBjYXNlIENyZWF0ZUdlbmVyYXRvcjogeworICAgICAgICAgICAgICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICAgICAgICAgIGlmIChKU1ZhbHVlIGJhc2Ug
PSBtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdmFsdWUpIHsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKGF1dG8qIGZ1bmN0aW9uID0ganNEeW5hbWljQ2FzdDxKU0Z1bmN0aW9uKj4o
bV9ncmFwaC5tX3ZtLCBiYXNlKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEZ1bmN0
aW9uUmFyZURhdGEqIHJhcmVEYXRhID0gZnVuY3Rpb24tPnJhcmVEYXRhKCkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAocmFyZURhdGEtPmFsbG9jYXRpb25Qcm9maWxlV2F0Y2hw
b2ludFNldCgpLmlzU3RpbGxWYWxpZCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gcmFyZURhdGEtPmludGVybmFsRnVuY3Rpb25BbGxv
Y2F0aW9uU3RydWN0dXJlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChz
dHJ1Y3R1cmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIHN0cnVjdHVy
ZS0+Y2xhc3NJbmZvKCkgPT0gSlNHZW5lcmF0b3I6OmluZm8oKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJiYgc3RydWN0dXJlLT5nbG9iYWxPYmplY3QoKSA9PSBnbG9iYWxP
YmplY3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIHJhcmVEYXRhLT5h
bGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnRTZXQoKS5pc1N0aWxsVmFsaWQoKSkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5mcmVlemUocmFyZURhdGEpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC53YXRjaHBvaW50cygp
LmFkZExhemlseShyYXJlRGF0YS0+YWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50U2V0KCkpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvTmV3R2Vu
ZXJhdG9yKG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUoc3RydWN0dXJlKSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBjYXNlIE9iamVj
dENyZWF0ZTogewogICAgICAgICAgICAgICAgIGlmIChKU1ZhbHVlIGJhc2UgPSBtX3N0YXRlLmZv
ck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdmFsdWUpIHsKICAgICAgICAgICAgICAgICAgICAgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0RvZXNHQy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAK
aW5kZXggNDA3MmY5MTdlNDVmNGEwNTkxYThhYWM2ODMwZjBkODA0YTY1NDc2Ni4uYzk3MzNkMDA5
NmQ2MmVmMmQ1ZGVjMTc4M2VjNzY5YmVmMjAyNzU2NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRG9lc0dDLmNwcApAQCAtMzMzLDYgKzMzMyw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBn
cmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIFRyeUdldEJ5SWQ6CiAgICAgY2FzZSBDcmVhdGVU
aGlzOgogICAgIGNhc2UgQ3JlYXRlUHJvbWlzZToKKyAgICBjYXNlIENyZWF0ZUdlbmVyYXRvcjoK
ICAgICBjYXNlIE9iamVjdENyZWF0ZToKICAgICBjYXNlIE9iamVjdEtleXM6CiAgICAgY2FzZSBB
bGxvY2F0ZVByb3BlcnR5U3RvcmFnZToKQEAgLTM0MSw2ICszNDIsNyBAQCBib29sIGRvZXNHQyhH
cmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBBcnJheWlmeVRvU3RydWN0dXJlOgog
ICAgIGNhc2UgTmV3T2JqZWN0OgogICAgIGNhc2UgTmV3UHJvbWlzZToKKyAgICBjYXNlIE5ld0dl
bmVyYXRvcjoKICAgICBjYXNlIE5ld0FycmF5OgogICAgIGNhc2UgTmV3QXJyYXlXaXRoU3ByZWFk
OgogICAgIGNhc2UgU3ByZWFkOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQ
aGFzZS5jcHAKaW5kZXggZWMwNDBhZjhkZDY3M2RhMGE0MDc0N2IxYWU5OWQ2MjNjNjdlYzQxMi4u
ZDA2NDMyMjVhY2JmYjQ0ZDZmMDFmMWY0N2ZmMWFjNTk3ODkzZTVlNSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCkBAIC0xNjQ3LDYgKzE2NDcsNyBAQCBj
bGFzcyBGaXh1cFBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgY2FzZSBDaGVja0NlbGw6
CiAgICAgICAgIGNhc2UgQ3JlYXRlVGhpczoKICAgICAgICAgY2FzZSBDcmVhdGVQcm9taXNlOgor
ICAgICAgICBjYXNlIENyZWF0ZUdlbmVyYXRvcjoKICAgICAgICAgY2FzZSBHZXRCdXR0ZXJmbHk6
IHsKICAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAg
ICAgICAgYnJlYWs7CkBAIC0yNDA0LDYgKzI0MDUsNyBAQCBjbGFzcyBGaXh1cFBoYXNlIDogcHVi
bGljIFBoYXNlIHsKICAgICAgICAgY2FzZSBQcm9maWxlQ29udHJvbEZsb3c6CiAgICAgICAgIGNh
c2UgTmV3T2JqZWN0OgogICAgICAgICBjYXNlIE5ld1Byb21pc2U6CisgICAgICAgIGNhc2UgTmV3
R2VuZXJhdG9yOgogICAgICAgICBjYXNlIE5ld1JlZ2V4cDoKICAgICAgICAgY2FzZSBEZWxldGVC
eUlkOgogICAgICAgICBjYXNlIERlbGV0ZUJ5VmFsOgpAQCAtMjU3NCw2MSArMjU3Niw2NCBAQCBj
bGFzcyBGaXh1cFBoYXNlIDogcHVibGljIFBoYXNlIHsKIAogICAgIHZvaWQgZml4dXBJc0NlbGxX
aXRoVHlwZShOb2RlKiBub2RlKQogICAgIHsKLSAgICAgICAgc3dpdGNoIChub2RlLT5zcGVjdWxh
dGVkVHlwZUZvclF1ZXJ5KCkpIHsKLSAgICAgICAgY2FzZSBTcGVjU3RyaW5nOgotICAgICAgICAg
ICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVTdHJpbmcoKSkgewotICAgICAg
ICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0gICAgICAgICAgICAgICAgICAg
IG1faW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgQ2hlY2ssIG5vZGUtPm9yaWdpbiwKLSAgICAgICAg
ICAgICAgICAgICAgRWRnZShub2RlLT5jaGlsZDEoKS5ub2RlKCksIFN0cmluZ1VzZSkpOwotICAg
ICAgICAgICAgICAgIG1fZ3JhcGguY29udmVydFRvQ29uc3RhbnQobm9kZSwganNCb29sZWFuKHRy
dWUpKTsKLSAgICAgICAgICAgICAgICBvYnNlcnZlVXNlS2luZE9uTm9kZTxTdHJpbmdVc2U+KG5v
ZGUpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBPcHRpb25hbDxTcGVjdWxhdGVkVHlwZT4gZmlsdGVyID0gbm9kZS0+
c3BlY3VsYXRlZFR5cGVGb3JRdWVyeSgpOworICAgICAgICBpZiAoZmlsdGVyKSB7CisgICAgICAg
ICAgICBzd2l0Y2ggKGZpbHRlci52YWx1ZSgpKSB7CisgICAgICAgICAgICBjYXNlIFNwZWNTdHJp
bmc6CisgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVT
dHJpbmcoKSkgeworICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2Rl
KAorICAgICAgICAgICAgICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNOb25lLCBDaGVj
aywgbm9kZS0+b3JpZ2luLAorICAgICAgICAgICAgICAgICAgICAgICAgRWRnZShub2RlLT5jaGls
ZDEoKS5ub2RlKCksIFN0cmluZ1VzZSkpOworICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLmNv
bnZlcnRUb0NvbnN0YW50KG5vZGUsIGpzQm9vbGVhbih0cnVlKSk7CisgICAgICAgICAgICAgICAg
ICAgIG9ic2VydmVVc2VLaW5kT25Ob2RlPFN0cmluZ1VzZT4obm9kZSk7CisgICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7
CiAKLSAgICAgICAgY2FzZSBTcGVjUHJveHlPYmplY3Q6Ci0gICAgICAgICAgICBpZiAobm9kZS0+
Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZVByb3h5T2JqZWN0KCkpIHsKLSAgICAgICAgICAgICAg
ICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAgICAgICAgICBtX2luZGV4
SW5CbG9jaywgU3BlY05vbmUsIENoZWNrLCBub2RlLT5vcmlnaW4sCi0gICAgICAgICAgICAgICAg
ICAgIEVkZ2Uobm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBQcm94eU9iamVjdFVzZSkpOwotICAgICAg
ICAgICAgICAgIG1fZ3JhcGguY29udmVydFRvQ29uc3RhbnQobm9kZSwganNCb29sZWFuKHRydWUp
KTsKLSAgICAgICAgICAgICAgICBvYnNlcnZlVXNlS2luZE9uTm9kZTxQcm94eU9iamVjdFVzZT4o
bm9kZSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFNwZWNQcm94eU9iamVjdDoKKyAgICAgICAgICAg
ICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZVByb3h5T2JqZWN0KCkpIHsK
KyAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAg
ICAgICAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgQ2hlY2ssIG5vZGUtPm9y
aWdpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgIEVkZ2Uobm9kZS0+Y2hpbGQxKCkubm9kZSgp
LCBQcm94eU9iamVjdFVzZSkpOworICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLmNvbnZlcnRU
b0NvbnN0YW50KG5vZGUsIGpzQm9vbGVhbih0cnVlKSk7CisgICAgICAgICAgICAgICAgICAgIG9i
c2VydmVVc2VLaW5kT25Ob2RlPFByb3h5T2JqZWN0VXNlPihub2RlKTsKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsK
IAotICAgICAgICBjYXNlIFNwZWNSZWdFeHBPYmplY3Q6Ci0gICAgICAgICAgICBpZiAobm9kZS0+
Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZVJlZ0V4cE9iamVjdCgpKSB7Ci0gICAgICAgICAgICAg
ICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgICAgICAgICAgbV9pbmRl
eEluQmxvY2ssIFNwZWNOb25lLCBDaGVjaywgbm9kZS0+b3JpZ2luLAotICAgICAgICAgICAgICAg
ICAgICBFZGdlKG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgUmVnRXhwT2JqZWN0VXNlKSk7Ci0gICAg
ICAgICAgICAgICAgbV9ncmFwaC5jb252ZXJ0VG9Db25zdGFudChub2RlLCBqc0Jvb2xlYW4odHJ1
ZSkpOwotICAgICAgICAgICAgICAgIG9ic2VydmVVc2VLaW5kT25Ob2RlPFJlZ0V4cE9iamVjdFVz
ZT4obm9kZSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFNwZWNSZWdFeHBPYmplY3Q6CisgICAgICAg
ICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVSZWdFeHBPYmplY3Qo
KSkgeworICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAg
ICAgICAgICAgICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNOb25lLCBDaGVjaywgbm9k
ZS0+b3JpZ2luLAorICAgICAgICAgICAgICAgICAgICAgICAgRWRnZShub2RlLT5jaGlsZDEoKS5u
b2RlKCksIFJlZ0V4cE9iamVjdFVzZSkpOworICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLmNv
bnZlcnRUb0NvbnN0YW50KG5vZGUsIGpzQm9vbGVhbih0cnVlKSk7CisgICAgICAgICAgICAgICAg
ICAgIG9ic2VydmVVc2VLaW5kT25Ob2RlPFJlZ0V4cE9iamVjdFVzZT4obm9kZSk7CisgICAgICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
YnJlYWs7CiAKLSAgICAgICAgY2FzZSBTcGVjQXJyYXk6Ci0gICAgICAgICAgICBpZiAobm9kZS0+
Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUFycmF5KCkpIHsKLSAgICAgICAgICAgICAgICBtX2lu
c2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAgICAgICAgICBtX2luZGV4SW5CbG9j
aywgU3BlY05vbmUsIENoZWNrLCBub2RlLT5vcmlnaW4sCi0gICAgICAgICAgICAgICAgICAgIEVk
Z2Uobm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBBcnJheVVzZSkpOwotICAgICAgICAgICAgICAgIG1f
Z3JhcGguY29udmVydFRvQ29uc3RhbnQobm9kZSwganNCb29sZWFuKHRydWUpKTsKLSAgICAgICAg
ICAgICAgICBvYnNlcnZlVXNlS2luZE9uTm9kZTxBcnJheVVzZT4obm9kZSk7Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICBjYXNlIFNwZWNBcnJheToKKyAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkt
PnNob3VsZFNwZWN1bGF0ZUFycmF5KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRp
b25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIG1faW5kZXhJbkJsb2Nr
LCBTcGVjTm9uZSwgQ2hlY2ssIG5vZGUtPm9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgICAg
IEVkZ2Uobm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBBcnJheVVzZSkpOworICAgICAgICAgICAgICAg
ICAgICBtX2dyYXBoLmNvbnZlcnRUb0NvbnN0YW50KG5vZGUsIGpzQm9vbGVhbih0cnVlKSk7Cisg
ICAgICAgICAgICAgICAgICAgIG9ic2VydmVVc2VLaW5kT25Ob2RlPEFycmF5VXNlPihub2RlKTsK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICBicmVhazsKIAotICAgICAgICBjYXNlIFNwZWNEZXJpdmVkQXJyYXk6Ci0gICAgICAg
ICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZURlcml2ZWRBcnJheSgpKSB7
Ci0gICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAg
ICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNOb25lLCBDaGVjaywgbm9kZS0+b3JpZ2luLAot
ICAgICAgICAgICAgICAgICAgICBFZGdlKG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgRGVyaXZlZEFy
cmF5VXNlKSk7Ci0gICAgICAgICAgICAgICAgbV9ncmFwaC5jb252ZXJ0VG9Db25zdGFudChub2Rl
LCBqc0Jvb2xlYW4odHJ1ZSkpOwotICAgICAgICAgICAgICAgIG9ic2VydmVVc2VLaW5kT25Ob2Rl
PERlcml2ZWRBcnJheVVzZT4obm9kZSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgY2FzZSBTcGVjRGVyaXZlZEFycmF5OgorICAgICAgICAgICAgICAgIGlmIChub2RlLT5j
aGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlRGVyaXZlZEFycmF5KCkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAgICAgICAgICAg
IG1faW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgQ2hlY2ssIG5vZGUtPm9yaWdpbiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIEVkZ2Uobm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBEZXJpdmVkQXJyYXlV
c2UpKTsKKyAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5jb252ZXJ0VG9Db25zdGFudChub2Rl
LCBqc0Jvb2xlYW4odHJ1ZSkpOworICAgICAgICAgICAgICAgICAgICBvYnNlcnZlVXNlS2luZE9u
Tm9kZTxEZXJpdmVkQXJyYXlVc2U+KG5vZGUpOworICAgICAgICAgICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
fQotICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAobm9kZS0+Y2hp
bGQxKCktPnNob3VsZFNwZWN1bGF0ZUNlbGwoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0dyYXBoLmNwcAppbmRleCAyYjUzMWIyNjg5YzcyZjg1NjZhMzU3YzI5NmQzMGU0MjkxYzA2MzQ2
Li43NGYwNWM0NmY0MjZlNzg5NmUwYzY0MGU5NThkYTE5NDk4MjVhOWUyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcApAQCAtMjgxLDggKzI4MSw4IEBAIHZvaWQgR3JhcGg6
OmR1bXAoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgY2hhciogcHJlZml4U3RyLCBOb2RlKiBub2Rl
LCBEdW1wQ29udGV4CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9Ci0gICAgaWYgKG5v
ZGUtPmhhc1NwZWN1bGF0ZWRUeXBlRm9yUXVlcnkoKSkKLSAgICAgICAgb3V0LnByaW50KGNvbW1h
LCBTcGVjdWxhdGlvbkR1bXAobm9kZS0+c3BlY3VsYXRlZFR5cGVGb3JRdWVyeSgpKSk7CisgICAg
aWYgKG5vZGUtPmhhc1F1ZXJpZWRUeXBlKCkpCisgICAgICAgIG91dC5wcmludChjb21tYSwgbm9k
ZS0+cXVlcmllZFR5cGUoKSk7CiAgICAgaWYgKG5vZGUtPmhhc1N0b3JhZ2VBY2Nlc3NEYXRhKCkp
IHsKICAgICAgICAgU3RvcmFnZUFjY2Vzc0RhdGEmIHN0b3JhZ2VBY2Nlc3NEYXRhID0gbm9kZS0+
c3RvcmFnZUFjY2Vzc0RhdGEoKTsKICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiaWQiLCBzdG9y
YWdlQWNjZXNzRGF0YS5pZGVudGlmaWVyTnVtYmVyLCAieyIsIGlkZW50aWZpZXJzKClbc3RvcmFn
ZUFjY2Vzc0RhdGEuaWRlbnRpZmllck51bWJlcl0sICJ9Iik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZS5oCmluZGV4IDY3NmRmNjM2NWIxNTA1YTU5ZTc4ZGQ0NmJjMjQ3YWE2NWNhMjc2Yjku
LjJkNTUyNGE2YmM5OGIwMjQ4M2ZjYWFlZmY2YmY5NTA1Y2FkNTVhNWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTm9kZS5oCkBAIC03NjcsNiArNzY3LDE1IEBAIHN0cnVjdCBOb2RlIHsKICAg
ICAgICAgbV9vcEluZm8yID0gaW50ZXJuYWw7CiAgICAgfQogCisgICAgdm9pZCBjb252ZXJ0VG9O
ZXdHZW5lcmF0b3IoUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUpCisgICAgeworICAgICAg
ICBBU1NFUlQobV9vcCA9PSBDcmVhdGVHZW5lcmF0b3IpOworICAgICAgICBzZXRPcEFuZERlZmF1
bHRGbGFncyhOZXdHZW5lcmF0b3IpOworICAgICAgICBjaGlsZHJlbi5yZXNldCgpOworICAgICAg
ICBtX29wSW5mbyA9IHN0cnVjdHVyZTsKKyAgICAgICAgbV9vcEluZm8yID0gT3BJbmZvV3JhcHBl
cigpOworICAgIH0KKwogICAgIHZvaWQgY29udmVydFRvTmV3QXJyYXlCdWZmZXIoRnJvemVuVmFs
dWUqIGltbXV0YWJsZUJ1dHRlcmZseSk7CiAgICAgCiAgICAgdm9pZCBjb252ZXJ0VG9EaXJlY3RD
YWxsKEZyb3plblZhbHVlKik7CkBAIC0xMzcyLDcgKzEzODEsNyBAQCBzdHJ1Y3QgTm9kZSB7CiAg
ICAgICAgIHJldHVybiBvcCgpID09IElzQ2VsbFdpdGhUeXBlOwogICAgIH0KIAotICAgIFNwZWN1
bGF0ZWRUeXBlIHNwZWN1bGF0ZWRUeXBlRm9yUXVlcnkoKQorICAgIE9wdGlvbmFsPFNwZWN1bGF0
ZWRUeXBlPiBzcGVjdWxhdGVkVHlwZUZvclF1ZXJ5KCkKICAgICB7CiAgICAgICAgIHJldHVybiBz
cGVjdWxhdGlvbkZyb21KU1R5cGUocXVlcmllZFR5cGUoKSk7CiAgICAgfQpAQCAtMTkwOSw2ICsx
OTE4LDcgQEAgc3RydWN0IE5vZGUgewogICAgICAgICBjYXNlIEFycmF5aWZ5VG9TdHJ1Y3R1cmU6
CiAgICAgICAgIGNhc2UgTmV3T2JqZWN0OgogICAgICAgICBjYXNlIE5ld1Byb21pc2U6CisgICAg
ICAgIGNhc2UgTmV3R2VuZXJhdG9yOgogICAgICAgICBjYXNlIE5ld1N0cmluZ09iamVjdDoKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdOb2RlVHlwZS5oCmluZGV4IDY4NTYyOGJmNGYwNjVlNmU3Y2ZmN2E1NzIyODkw
MGNmYmZkMjUzZDMuLjAyYjdkN2UxZjgyYzc5NTU5N2UyNmM5YzczZDBhYWU2ZGJhOWQ2MjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKQEAgLTU0LDYgKzU0LDcgQEAg
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKFRvVGhpcywgTm9kZVJl
c3VsdEpTKSBcCiAgICAgbWFjcm8oQ3JlYXRlVGhpcywgTm9kZVJlc3VsdEpTKSAvKiBOb3RlIHRo
aXMgaXMgbm90IE11c3RHZW5lcmF0ZSBzaW5jZSB3ZSdyZSByZXR1cm5pbmcgaXQgYW55d2F5LiAq
LyBcCiAgICAgbWFjcm8oQ3JlYXRlUHJvbWlzZSwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5l
cmF0ZSkgXAorICAgIG1hY3JvKENyZWF0ZUdlbmVyYXRvciwgTm9kZVJlc3VsdEpTIHwgTm9kZU11
c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEdldENhbGxlZSwgTm9kZVJlc3VsdEpTKSBcCiAgICAg
bWFjcm8oU2V0Q2FsbGVlLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oR2V0QXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMsIE5vZGVSZXN1bHRJbnQzMikgXApAQCAtMzQxLDYgKzM0Miw3
IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICAvKiBBbGxvY2F0aW9ucy4g
Ki9cCiAgICAgbWFjcm8oTmV3T2JqZWN0LCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhOZXdQ
cm9taXNlLCBOb2RlUmVzdWx0SlMpIFwKKyAgICBtYWNybyhOZXdHZW5lcmF0b3IsIE5vZGVSZXN1
bHRKUykgXAogICAgIG1hY3JvKE5ld0FycmF5LCBOb2RlUmVzdWx0SlMgfCBOb2RlSGFzVmFyQXJn
cykgXAogICAgIG1hY3JvKE5ld0FycmF5V2l0aFNwcmVhZCwgTm9kZVJlc3VsdEpTIHwgTm9kZUhh
c1ZhckFyZ3MpIFwKICAgICBtYWNybyhOZXdBcnJheVdpdGhTaXplLCBOb2RlUmVzdWx0SlMgfCBO
b2RlTXVzdEdlbmVyYXRlKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRp
b25zLmNwcAppbmRleCBhZmEyODIyMGRjZjMwMjQ0MTQ0MTU5M2UzNTczZDg5ZTNhZDUwMzNkLi5j
MzE1YzI2NTI3Yzc2MmIxM2MwZTZlMzNjMzQ5YzJiY2I2NDQ0OWFiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKQEAgLTM5OCw2ICszOTgsMTYgQEAgSlND
ZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZUludGVybmFsUHJvbWlzZShFeGVjU3Rh
dGUqIGV4ZWMsIEpTT2JqZWN0KgogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNJbnRl
cm5hbFByb21pc2U6OmNyZWF0ZSh2bSwgc3RydWN0dXJlKSk7CiB9CiAKK0pTQ2VsbCogSklUX09Q
RVJBVElPTiBvcGVyYXRpb25DcmVhdGVHZW5lcmF0b3IoRXhlY1N0YXRlKiBleGVjLCBKU09iamVj
dCogY29uc3RydWN0b3IsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBl
eGVjKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVj
dHVyZShleGVjLCBudWxscHRyLCBjb25zdHJ1Y3RvciwgZ2xvYmFsT2JqZWN0LT5nZW5lcmF0b3JT
dHJ1Y3R1cmUoKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7Cisg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU0dlbmVyYXRvcjo6Y3JlYXRlKHZtLCBzdHJ1
Y3R1cmUpKTsKK30KKwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNhbGxPYmplY3RD
b25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRUYXJnZXQpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKaW5kZXggYjk4ZTYy
MTc1YzY2ZjM2ZTM2NGQ1OGU5ZGM4MDZhZDA1MmRjNjUyYi4uNzQ0YTUwZGJmZWY4Mjc1ZTI5YWY3
Mjk2OWM2ODY0YTM2NjJjNTcwMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVy
YXRpb25zLmgKQEAgLTUwLDYgKzUwLDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bk9iamVjdENyZWF0ZU9iamVjdChFeGVjU3RhdGUqLCBKU09iamVjdCopIFdURl9JTlQKIEpTQ2Vs
bCogSklUX09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVUaGlzKEV4ZWNTdGF0ZSosIEpTT2JqZWN0
KiBjb25zdHJ1Y3RvciwgdWludDMyX3QgaW5saW5lQ2FwYWNpdHkpIFdURl9JTlRFUk5BTDsKIEpT
Q2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVQcm9taXNlKEV4ZWNTdGF0ZSosIEpT
T2JqZWN0KiBjb25zdHJ1Y3RvciwgSlNHbG9iYWxPYmplY3QqKSBXVEZfSU5URVJOQUw7CiBKU0Nl
bGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlSW50ZXJuYWxQcm9taXNlKEV4ZWNTdGF0
ZSosIEpTT2JqZWN0KiBjb25zdHJ1Y3RvciwgSlNHbG9iYWxPYmplY3QqKSBXVEZfSU5URVJOQUw7
CitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlR2VuZXJhdG9yKEV4ZWNTdGF0
ZSosIEpTT2JqZWN0KiBjb25zdHJ1Y3RvciwgSlNHbG9iYWxPYmplY3QqKSBXVEZfSU5URVJOQUw7
CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRvVGhpcyhFeGVjU3RhdGUq
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRvVGhpc1N0cmljdChFeGVjU3RhdGUqLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkT3AxKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblZhbHVlTW9kKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIpIFdURl9JTlRFUk5BTDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhh
c2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRp
b25QaGFzZS5jcHAKaW5kZXggMDBhYzU1YzZlNjY5YmU0MjE3Y2RkMGE3MDUwMzg3ZDBlNDMwNTg0
MS4uYzNkOTIxY2Q3MWE1ODM2NDc5MGExY2NlYTk5NDQ4Y2VmMjRmN2Y0NyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRp
b25QaGFzZS5jcHAKQEAgLTEwMTUsNiArMTAxNSwxMSBAQCBjbGFzcyBQcmVkaWN0aW9uUHJvcGFn
YXRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgIGNhc2UgTmV3UHJvbWlzZToKICAg
ICAgICAgICAgIHNldFByZWRpY3Rpb24oU3BlY1Byb21pc2VPYmplY3QpOwogICAgICAgICAgICAg
YnJlYWs7CisKKyAgICAgICAgY2FzZSBDcmVhdGVHZW5lcmF0b3I6CisgICAgICAgIGNhc2UgTmV3
R2VuZXJhdG9yOgorICAgICAgICAgICAgc2V0UHJlZGljdGlvbihTcGVjT2JqZWN0T3RoZXIpOwor
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBBcnJheVNsaWNl
OgogICAgICAgICBjYXNlIE5ld0FycmF5V2l0aFNwcmVhZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKaW5kZXggNjgzN2UyMzViMzA2MjU1NzcxOGY1ZjEz
MmMwNDY4MmNkOGNlYzkzYi4uN2Q4ZWVlODRkZmE3N2NjNDdmZWIxOTUwYWVlMWQ2M2JkYTc4NWMx
NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKQEAg
LTE3OSw2ICsxNzksNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0
YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGJvb2wgaWdubwogICAgIGNhc2UgVG9UaGlz
OgogICAgIGNhc2UgQ3JlYXRlVGhpczoKICAgICBjYXNlIENyZWF0ZVByb21pc2U6CisgICAgY2Fz
ZSBDcmVhdGVHZW5lcmF0b3I6CiAgICAgY2FzZSBPYmplY3RDcmVhdGU6CiAgICAgY2FzZSBPYmpl
Y3RLZXlzOgogICAgIGNhc2UgR2V0Q2FsbGVlOgpAQCAtMzIxLDYgKzMyMiw3IEBAIGJvb2wgc2Fm
ZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwgTm9kZSog
bm9kZSwgYm9vbCBpZ25vCiAgICAgY2FzZSBDb25zdHJ1Y3RGb3J3YXJkVmFyYXJnczoKICAgICBj
YXNlIE5ld09iamVjdDoKICAgICBjYXNlIE5ld1Byb21pc2U6CisgICAgY2FzZSBOZXdHZW5lcmF0
b3I6CiAgICAgY2FzZSBOZXdBcnJheToKICAgICBjYXNlIE5ld0FycmF5V2l0aFNpemU6CiAgICAg
Y2FzZSBOZXdBcnJheUJ1ZmZlcjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggNTY3YWQ5NDM4YjliYTY2ODBhNDRjZGY2YzA3NGEwMjU3
NjFhMDAxYS4uZjgxMjBhYTY4Mjc5M2NkNDUyOTJmMzRkMGZkZWMyYzUxMmFjZWE2MyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTEy
NzIyLDYgKzEyNzIyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZVByb21p
c2UoTm9kZSogbm9kZSkKICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGNh
bGxlZUdQUiwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZSYXJlRGF0YSgpKSwgcmFyZURhdGFHUFIpOwog
ICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6
WmVybywgcmFyZURhdGFHUFIpKTsKICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRy
ZXNzKHJhcmVEYXRhR1BSLCBGdW5jdGlvblJhcmVEYXRhOjpvZmZzZXRPZkludGVybmFsRnVuY3Rp
b25BbGxvY2F0aW9uUHJvZmlsZSgpICsgSW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25Qcm9maWxl
OjpvZmZzZXRPZlN0cnVjdHVyZSgpKSwgc3RydWN0dXJlR1BSKTsKKyAgICBzbG93Q2FzZXMuYXBw
ZW5kKG1faml0LmJyYW5jaFRlc3RQdHIoQ0NhbGxIZWxwZXJzOjpaZXJvLCBzdHJ1Y3R1cmVHUFIp
KTsKICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIobm9kZS0+aXNJbnRlcm5hbFByb21pc2Uo
KSA/IEpTSW50ZXJuYWxQcm9taXNlOjppbmZvKCkgOiBKU1Byb21pc2U6OmluZm8oKSksIHNjcmF0
Y2gxR1BSKTsKICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaFB0cihDQ2FsbEhlbHBl
cnM6Ok5vdEVxdWFsLCBzY3JhdGNoMUdQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0cnVjdHVy
ZUdQUiwgU3RydWN0dXJlOjpjbGFzc0luZm9PZmZzZXQoKSkpKTsKICAgICBtX2ppdC5tb3ZlKFRy
dXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1faml0LmdyYXBoKCksIGdsb2JhbE9iamVjdCksIHNj
cmF0Y2gxR1BSKTsKQEAgLTEyNzQyLDYgKzEyNzQzLDUxIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVDcmVhdGVQcm9taXNlKE5vZGUqIG5vZGUpCiAgICAgY2VsbFJlc3VsdChyZXN1bHRH
UFIsIG5vZGUpOwogfQogCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3JlYXRlR2VuZXJh
dG9yKE5vZGUqIG5vZGUpCit7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1f
aml0Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOworCisgICAgU3BlY3Vs
YXRlQ2VsbE9wZXJhbmQgY2FsbGVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICBHUFJUZW1w
b3JhcnkgcmVzdWx0KHRoaXMpOworICAgIEdQUlRlbXBvcmFyeSBzdHJ1Y3R1cmUodGhpcyk7Cisg
ICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2gxKHRoaXMpOworICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNo
Mih0aGlzKTsKKworICAgIEdQUlJlZyBjYWxsZWVHUFIgPSBjYWxsZWUuZ3ByKCk7CisgICAgR1BS
UmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAgICBHUFJSZWcgc3RydWN0dXJlR1BSID0g
c3RydWN0dXJlLmdwcigpOworICAgIEdQUlJlZyBzY3JhdGNoMUdQUiA9IHNjcmF0Y2gxLmdwcigp
OworICAgIEdQUlJlZyBzY3JhdGNoMkdQUiA9IHNjcmF0Y2gyLmdwcigpOworICAgIC8vIFJhcmUg
ZGF0YSBpcyBvbmx5IHVzZWQgdG8gYWNjZXNzIHRoZSBhbGxvY2F0b3IgJiBzdHJ1Y3R1cmUKKyAg
ICAvLyBXZSBjYW4gYXZvaWQgdXNpbmcgYW4gYWRkaXRpb25hbCBHUFIgdGhpcyB3YXkKKyAgICBH
UFJSZWcgcmFyZURhdGFHUFIgPSBzdHJ1Y3R1cmVHUFI7CisKKyAgICBNYWNyb0Fzc2VtYmxlcjo6
SnVtcExpc3Qgc2xvd0Nhc2VzOworCisgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJ
Zk5vdEZ1bmN0aW9uKGNhbGxlZUdQUikpOworICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6
OkFkZHJlc3MoY2FsbGVlR1BSLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZlJhcmVEYXRhKCkpLCByYXJl
RGF0YUdQUik7CisgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hUZXN0UHRyKE1hY3Jv
QXNzZW1ibGVyOjpaZXJvLCByYXJlRGF0YUdQUikpOworICAgIG1faml0LmxvYWRQdHIoSklUQ29t
cGlsZXI6OkFkZHJlc3MocmFyZURhdGFHUFIsIEZ1bmN0aW9uUmFyZURhdGE6Om9mZnNldE9mSW50
ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25Qcm9maWxlKCkgKyBJbnRlcm5hbEZ1bmN0aW9uQWxsb2Nh
dGlvblByb2ZpbGU6Om9mZnNldE9mU3RydWN0dXJlKCkpLCBzdHJ1Y3R1cmVHUFIpOworICAgIHNs
b3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoVGVzdFB0cihDQ2FsbEhlbHBlcnM6Olplcm8sIHN0
cnVjdHVyZUdQUikpOworICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihKU0dlbmVyYXRvcjo6
aW5mbygpKSwgc2NyYXRjaDFHUFIpOworICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNo
UHRyKENDYWxsSGVscGVyczo6Tm90RXF1YWwsIHNjcmF0Y2gxR1BSLCBDQ2FsbEhlbHBlcnM6OkFk
ZHJlc3Moc3RydWN0dXJlR1BSLCBTdHJ1Y3R1cmU6OmNsYXNzSW5mb09mZnNldCgpKSkpOworICAg
IG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9qaXQuZ3JhcGgoKSwgZ2xv
YmFsT2JqZWN0KSwgc2NyYXRjaDFHUFIpOworICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJh
bmNoUHRyKENDYWxsSGVscGVyczo6Tm90RXF1YWwsIHNjcmF0Y2gxR1BSLCBDQ2FsbEhlbHBlcnM6
OkFkZHJlc3Moc3RydWN0dXJlR1BSLCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSkp
OworCisgICAgYXV0byBidXR0ZXJmbHkgPSBUcnVzdGVkSW1tUHRyKG51bGxwdHIpOworICAgIGVt
aXRBbGxvY2F0ZUpTT2JqZWN0V2l0aEtub3duU2l6ZTxKU0dlbmVyYXRvcj4ocmVzdWx0R1BSLCBz
dHJ1Y3R1cmVHUFIsIGJ1dHRlcmZseSwgc2NyYXRjaDFHUFIsIHNjcmF0Y2gyR1BSLCBzbG93Q2Fz
ZXMsIHNpemVvZihKU0dlbmVyYXRvcikpOworICAgIG1faml0LnN0b3JlVHJ1c3RlZFZhbHVlKGpz
TnVsbCgpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0ludGVybmFsRmllbGRP
YmplY3RJbXBsPD46Om9mZnNldE9mSW50ZXJuYWxGaWVsZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNHZW5lcmF0b3I6OkZpZWxkOjpQb2x5UHJvdG8pKSkpOworICAgIG1faml0LnN0b3JlVHJ1c3Rl
ZFZhbHVlKGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpHZW5lcmF0
b3JTdGF0ZTo6SW5pdCkpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0ludGVy
bmFsRmllbGRPYmplY3RJbXBsPD46Om9mZnNldE9mSW50ZXJuYWxGaWVsZChzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNHZW5lcmF0b3I6OkZpZWxkOjpTdGF0ZSkpKSk7CisgICAgbV9qaXQuc3RvcmVU
cnVzdGVkVmFsdWUoanNVbmRlZmluZWQoKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHJlc3VsdEdQ
UiwgSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbDw+OjpvZmZzZXRPZkludGVybmFsRmllbGQoc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTR2VuZXJhdG9yOjpGaWVsZDo6TmV4dCkpKSk7CisgICAgbV9q
aXQuc3RvcmVUcnVzdGVkVmFsdWUoanNVbmRlZmluZWQoKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNz
KHJlc3VsdEdQUiwgSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbDw+OjpvZmZzZXRPZkludGVybmFs
RmllbGQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTR2VuZXJhdG9yOjpGaWVsZDo6VGhpcykpKSk7
CisgICAgbV9qaXQuc3RvcmVUcnVzdGVkVmFsdWUoanNVbmRlZmluZWQoKSwgQ0NhbGxIZWxwZXJz
OjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbDw+OjpvZmZzZXRP
ZkludGVybmFsRmllbGQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTR2VuZXJhdG9yOjpGaWVsZDo6
RnJhbWUpKSkpOworICAgIG1faml0Lm11dGF0b3JGZW5jZShtX2ppdC52bSgpKTsKKworICAgIGFk
ZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlv
bkNyZWF0ZUdlbmVyYXRvciwgcmVzdWx0R1BSLCBjYWxsZWVHUFIsIFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1faml0LmdyYXBoKCksIGdsb2JhbE9iamVjdCkpKTsKKworICAgIGNlbGxSZXN1
bHQocmVzdWx0R1BSLCBub2RlKTsKK30KKwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5l
d09iamVjdChOb2RlKiBub2RlKQogewogICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CkBA
IC0xMjc5OCw2ICsxMjg0NCwzMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3UHJv
bWlzZShOb2RlKiBub2RlKQogICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIH0KIAor
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0dlbmVyYXRvcihOb2RlKiBub2RlKQorewor
ICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CisgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2gx
KHRoaXMpOworICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoMih0aGlzKTsKKworICAgIEdQUlJlZyBy
ZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisgICAgR1BSUmVnIHNjcmF0Y2gxR1BSID0gc2NyYXRj
aDEuZ3ByKCk7CisgICAgR1BSUmVnIHNjcmF0Y2gyR1BSID0gc2NyYXRjaDIuZ3ByKCk7CisKKyAg
ICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOworCisgICAgRnJvemVuVmFsdWUq
IHN0cnVjdHVyZSA9IG1fZ3JhcGguZnJlZXplU3Ryb25nKG5vZGUtPnN0cnVjdHVyZSgpLmdldCgp
KTsKKyAgICBhdXRvIGJ1dHRlcmZseSA9IFRydXN0ZWRJbW1QdHIobnVsbHB0cik7CisgICAgZW1p
dEFsbG9jYXRlSlNPYmplY3RXaXRoS25vd25TaXplPEpTR2VuZXJhdG9yPihyZXN1bHRHUFIsIFRy
dXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgYnV0dGVyZmx5LCBzY3JhdGNoMUdQUiwgc2NyYXRjaDJH
UFIsIHNsb3dDYXNlcywgc2l6ZW9mKEpTR2VuZXJhdG9yKSk7CisgICAgbV9qaXQuc3RvcmVUcnVz
dGVkVmFsdWUoanNOdWxsKCksIENDYWxsSGVscGVyczo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTSW50
ZXJuYWxGaWVsZE9iamVjdEltcGw8Pjo6b2Zmc2V0T2ZJbnRlcm5hbEZpZWxkKHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0dlbmVyYXRvcjo6RmllbGQ6OlBvbHlQcm90bykpKSk7CisgICAgbV9qaXQu
c3RvcmVUcnVzdGVkVmFsdWUoanNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0
b3I6OkdlbmVyYXRvclN0YXRlOjpJbml0KSksIENDYWxsSGVscGVyczo6QWRkcmVzcyhyZXN1bHRH
UFIsIEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGw8Pjo6b2Zmc2V0T2ZJbnRlcm5hbEZpZWxkKHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0dlbmVyYXRvcjo6RmllbGQ6OlN0YXRlKSkpKTsKKyAgICBt
X2ppdC5zdG9yZVRydXN0ZWRWYWx1ZShqc1VuZGVmaW5lZCgpLCBDQ2FsbEhlbHBlcnM6OkFkZHJl
c3MocmVzdWx0R1BSLCBKU0ludGVybmFsRmllbGRPYmplY3RJbXBsPD46Om9mZnNldE9mSW50ZXJu
YWxGaWVsZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNHZW5lcmF0b3I6OkZpZWxkOjpOZXh0KSkp
KTsKKyAgICBtX2ppdC5zdG9yZVRydXN0ZWRWYWx1ZShqc1VuZGVmaW5lZCgpLCBDQ2FsbEhlbHBl
cnM6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0ludGVybmFsRmllbGRPYmplY3RJbXBsPD46Om9mZnNl
dE9mSW50ZXJuYWxGaWVsZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNHZW5lcmF0b3I6OkZpZWxk
OjpUaGlzKSkpKTsKKyAgICBtX2ppdC5zdG9yZVRydXN0ZWRWYWx1ZShqc1VuZGVmaW5lZCgpLCBD
Q2FsbEhlbHBlcnM6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0ludGVybmFsRmllbGRPYmplY3RJbXBs
PD46Om9mZnNldE9mSW50ZXJuYWxGaWVsZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNHZW5lcmF0
b3I6OkZpZWxkOjpGcmFtZSkpKSk7CisgICAgbV9qaXQubXV0YXRvckZlbmNlKG1faml0LnZtKCkp
OworCisgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dDYXNlcywgdGhp
cywgb3BlcmF0aW9uTmV3R2VuZXJhdG9yLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHIoc3RydWN0
dXJlKSkpOworCisgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOworfQorCiB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlVG9QcmltaXRpdmUoTm9kZSogbm9kZSkKIHsKICAgICBERkdf
QVNTRVJUKG1faml0LmdyYXBoKCksIG5vZGUsIG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBV
bnR5cGVkVXNlLCBub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCmluZGV4IGM4MzU0YTEyMjUzNDVmMTlhNGY5
YmI4ZmNkMWNiMTY2MjU2MWU4MjMuLjJkMzIyZDRlMTQxZDFjOWUwZGMzMTNiNGYxYWQxOWIyMjgy
YzUyNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmgKQEAgLTE0NzQsOCArMTQ3NCwxMCBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVCB7CiAgICAgdm9p
ZCBjb21waWxlT2JqZWN0Q3JlYXRlKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVDcmVhdGVUaGlz
KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVDcmVhdGVQcm9taXNlKE5vZGUqKTsKKyAgICB2b2lk
IGNvbXBpbGVDcmVhdGVHZW5lcmF0b3IoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZU5ld09iamVj
dChOb2RlKik7CiAgICAgdm9pZCBjb21waWxlTmV3UHJvbWlzZShOb2RlKik7CisgICAgdm9pZCBj
b21waWxlTmV3R2VuZXJhdG9yKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVUb1ByaW1pdGl2ZShO
b2RlKik7CiAgICAgdm9pZCBjb21waWxlTG9nU2hhZG93Q2hpY2tlblByb2xvZ3VlKE5vZGUqKTsK
ICAgICB2b2lkIGNvbXBpbGVMb2dTaGFkb3dDaGlja2VuVGFpbChOb2RlKik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRl
eCBlOWU5MjkxMmRhMzIxZGQ3NjIzYzQ3ZGM0NDM4OWUzYjdhZTY5ZDlkLi5hNmQ0NmE1NDU2ODE3
MDhhOWI0ZDg2ZDA5OTM3MzY5M2IxOTQxYTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTMxNTcsNiArMzE1Nywx
MSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJy
ZWFrOwogICAgIH0KIAorICAgIGNhc2UgQ3JlYXRlR2VuZXJhdG9yOiB7CisgICAgICAgIGNvbXBp
bGVDcmVhdGVHZW5lcmF0b3Iobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNh
c2UgTmV3T2JqZWN0OiB7CiAgICAgICAgIGNvbXBpbGVOZXdPYmplY3Qobm9kZSk7CiAgICAgICAg
IGJyZWFrOwpAQCAtMzE2Nyw2ICszMTcyLDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBOZXdHZW5l
cmF0b3I6IHsKKyAgICAgICAgY29tcGlsZU5ld0dlbmVyYXRvcihub2RlKTsKKyAgICAgICAgYnJl
YWs7CisgICAgfQorCiAgICAgY2FzZSBHZXRDYWxsZWU6IHsKICAgICAgICAgY29tcGlsZUdldENh
bGxlZShub2RlKTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAppbmRleCBlZWMyMTBlNzk2NWIyZDYwODg3MzFm
YTJlYWU2ZDgwNTE4MzgyNjcxLi4zNzMzODQzYjNjOWNhZmNjMDI1MTJhMGU1ZTg2N2IxNWQ0YjM3
MmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQ2NC5jcHAKQEAgLTM0ODMsNiArMzQ4MywxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGNvbXBpbGVDcmVhdGVQcm9taXNlKG5vZGUpOwogICAg
ICAgICBicmVhazsKICAgICB9CisKKyAgICBjYXNlIENyZWF0ZUdlbmVyYXRvcjogeworICAgICAg
ICBjb21waWxlQ3JlYXRlR2VuZXJhdG9yKG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CiAg
ICAgICAgIAogICAgIGNhc2UgTmV3T2JqZWN0OiB7CiAgICAgICAgIGNvbXBpbGVOZXdPYmplY3Qo
bm9kZSk7CkBAIC0zNDk0LDYgKzM0OTksMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIE5ld0dlbmVy
YXRvcjogeworICAgICAgICBjb21waWxlTmV3R2VuZXJhdG9yKG5vZGUpOworICAgICAgICBicmVh
azsKKyAgICB9CisKICAgICBjYXNlIEdldENhbGxlZTogewogICAgICAgICBjb21waWxlR2V0Q2Fs
bGVlKG5vZGUpOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAKaW5kZXggMjRi
NTVlNzg4ZDlkZTliNTA2OTk2NzU1NzUzNzczOGIzMzJiZTM1Ny4uMGQ1OTAxODZkODNiZGI0NzQ1
ZWY3YzdjMTU2NzQxMDI0NTIzOWVjNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAKQEAgLTMyMiw2
ICszMjIsNyBAQCBjbGFzcyBTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZSA6IHB1YmxpYyBQaGFz
ZSB7CiAgICAgICAgICAgICBzd2l0Y2ggKG1fbm9kZS0+b3AoKSkgewogICAgICAgICAgICAgY2Fz
ZSBOZXdPYmplY3Q6CiAgICAgICAgICAgICBjYXNlIE5ld1Byb21pc2U6CisgICAgICAgICAgICBj
YXNlIE5ld0dlbmVyYXRvcjoKICAgICAgICAgICAgIGNhc2UgTmV3QXJyYXk6CiAgICAgICAgICAg
ICBjYXNlIE5ld0FycmF5V2l0aFNpemU6CiAgICAgICAgICAgICBjYXNlIE5ld0FycmF5QnVmZmVy
OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCmluZGV4
IDE5ODk0Nzg3MzA3OTQ5M2Y4OWE1ZTQzNTNiOGNlNWU0Yjg3Y2JiOGUuLmVhZDI1OWEwMTQ3NTJl
MmMzNjkyNmQ4ZDE2YzM1OGFmMTY0ZjBiMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKQEAgLTc1LDYgKzc1LDcgQEAgaW5saW5lIENhcGFiaWxp
dHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBHZXRCdXR0ZXJmbHk6CiAg
ICAgY2FzZSBOZXdPYmplY3Q6CiAgICAgY2FzZSBOZXdQcm9taXNlOgorICAgIGNhc2UgTmV3R2Vu
ZXJhdG9yOgogICAgIGNhc2UgTmV3U3RyaW5nT2JqZWN0OgogICAgIGNhc2UgTmV3U3ltYm9sOgog
ICAgIGNhc2UgTmV3QXJyYXk6CkBAIC0zODAsNiArMzgxLDcgQEAgaW5saW5lIENhcGFiaWxpdHlM
ZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6
CiAgICAgY2FzZSBDcmVhdGVUaGlzOgogICAgIGNhc2UgQ3JlYXRlUHJvbWlzZToKKyAgICBjYXNl
IENyZWF0ZUdlbmVyYXRvcjoKICAgICBjYXNlIERhdGFWaWV3R2V0SW50OgogICAgIGNhc2UgRGF0
YVZpZXdHZXRGbG9hdDoKICAgICBjYXNlIERhdGFWaWV3U2V0OgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDRhMzVkMWIzYjBkY2YwOGZkMDI1
MTg2NWI5OTIwNDEwMzMxOTIwMWEuLjMwYzNhZWFjZjcwZGYwOTZmZjQ4YWUxYmU1MTE2MjJiYTVj
NjhjNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdU
b0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5j
cHAKQEAgLTc4LDYgKzc4LDcgQEAKICNpbmNsdWRlICJKU0FzeW5jRnVuY3Rpb24uaCIKICNpbmNs
dWRlICJKU0FzeW5jR2VuZXJhdG9yRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgi
CisjaW5jbHVkZSAiSlNHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJKU0dlbmVyYXRvckZ1bmN0aW9u
LmgiCiAjaW5jbHVkZSAiSlNJbW11dGFibGVCdXR0ZXJmbHkuaCIKICNpbmNsdWRlICJKU0xleGlj
YWxFbnZpcm9ubWVudC5oIgpAQCAtMTA0OCw2ICsxMDQ5LDkgQEAgY2xhc3MgTG93ZXJERkdUb0Iz
IHsKICAgICAgICAgY2FzZSBOZXdQcm9taXNlOgogICAgICAgICAgICAgY29tcGlsZU5ld1Byb21p
c2UoKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE5ld0dlbmVyYXRvcjoKKyAg
ICAgICAgICAgIGNvbXBpbGVOZXdHZW5lcmF0b3IoKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIE5ld1N0cmluZ09iamVjdDoKICAgICAgICAgICAgIGNvbXBpbGVOZXdTdHJpbmdP
YmplY3QoKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTA2Niw2ICsxMDcwLDkgQEAgY2xhc3Mg
TG93ZXJERkdUb0IzIHsKICAgICAgICAgY2FzZSBDcmVhdGVQcm9taXNlOgogICAgICAgICAgICAg
Y29tcGlsZUNyZWF0ZVByb21pc2UoKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IENyZWF0ZUdlbmVyYXRvcjoKKyAgICAgICAgICAgIGNvbXBpbGVDcmVhdGVHZW5lcmF0b3IoKTsK
KyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFNwcmVhZDoKICAgICAgICAgICAgIGNv
bXBpbGVTcHJlYWQoKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNTkxMiw2ICs1OTE5LDMxIEBA
IGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIHNldEpTVmFsdWUobV9vdXQucGhpKHBvaW50
ZXJUeXBlKCksIGZhc3RSZXN1bHQsIHNsb3dSZXN1bHQpKTsKICAgICB9CiAKKyAgICB2b2lkIGNv
bXBpbGVOZXdHZW5lcmF0b3IoKQorICAgIHsKKyAgICAgICAgTEJhc2ljQmxvY2sgc2xvd0Nhc2Ug
PSBtX291dC5uZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBt
X291dC5uZXdCbG9jaygpOworCisgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQu
aW5zZXJ0TmV3QmxvY2tzQmVmb3JlKHNsb3dDYXNlKTsKKworICAgICAgICBMVmFsdWUgZ2VuZXJh
dG9yID0gYWxsb2NhdGVPYmplY3Q8SlNHZW5lcmF0b3I+KG1fbm9kZS0+c3RydWN0dXJlKCksIG1f
b3V0LmludFB0clplcm8sIHNsb3dDYXNlKTsKKyAgICAgICAgbV9vdXQuc3RvcmU2NChtX291dC5j
b25zdEludDY0KEpTVmFsdWU6OmVuY29kZShqc051bGwoKSkpLCBnZW5lcmF0b3IsIG1faGVhcHMu
SlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbF9pbnRlcm5hbEZpZWxkc1tzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNHZW5lcmF0b3I6OkZpZWxkOjpQb2x5UHJvdG8pXSk7CisgICAgICAgIG1fb3V0LnN0
b3JlNjQobV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoc3RhdGljX2Nh
c3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6OkdlbmVyYXRvclN0YXRlOjpJbml0KSkpKSwgZ2VuZXJh
dG9yLCBtX2hlYXBzLkpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGxfaW50ZXJuYWxGaWVsZHNbc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTR2VuZXJhdG9yOjpGaWVsZDo6U3RhdGUpXSk7CisgICAgICAg
IG1fb3V0LnN0b3JlNjQobV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSkpLCBnZW5lcmF0b3IsIG1faGVhcHMuSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbF9pbnRl
cm5hbEZpZWxkc1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNHZW5lcmF0b3I6OkZpZWxkOjpOZXh0
KV0pOworICAgICAgICBtX291dC5zdG9yZTY0KG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpKSwgZ2VuZXJhdG9yLCBtX2hlYXBzLkpTSW50ZXJuYWxGaWVsZE9i
amVjdEltcGxfaW50ZXJuYWxGaWVsZHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTR2VuZXJhdG9y
OjpGaWVsZDo6VGhpcyldKTsKKyAgICAgICAgbV9vdXQuc3RvcmU2NChtX291dC5jb25zdEludDY0
KEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKSksIGdlbmVyYXRvciwgbV9oZWFwcy5KU0lu
dGVybmFsRmllbGRPYmplY3RJbXBsX2ludGVybmFsRmllbGRzW3N0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0dlbmVyYXRvcjo6RmllbGQ6OkZyYW1lKV0pOworICAgICAgICBtdXRhdG9yRmVuY2UoKTsK
KyAgICAgICAgVmFsdWVGcm9tQmxvY2sgZmFzdFJlc3VsdCA9IG1fb3V0LmFuY2hvcihnZW5lcmF0
b3IpOworICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgbV9vdXQu
YXBwZW5kVG8oc2xvd0Nhc2UsIGNvbnRpbnVhdGlvbik7CisgICAgICAgIFZhbHVlRnJvbUJsb2Nr
IHNsb3dSZXN1bHQgPSBtX291dC5hbmNob3Iodm1DYWxsKHBvaW50ZXJUeXBlKCksIG1fb3V0Lm9w
ZXJhdGlvbihvcGVyYXRpb25OZXdHZW5lcmF0b3IpLCBtX2NhbGxGcmFtZSwgZnJvemVuUG9pbnRl
cihtX2dyYXBoLmZyZWV6ZVN0cm9uZyhtX25vZGUtPnN0cnVjdHVyZSgpLmdldCgpKSkpKTsKKyAg
ICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRv
KGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOworICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LnBoaShw
b2ludGVyVHlwZSgpLCBmYXN0UmVzdWx0LCBzbG93UmVzdWx0KSk7CisgICAgfQorCiAgICAgdm9p
ZCBjb21waWxlTmV3U3RyaW5nT2JqZWN0KCkKICAgICB7CiAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1
Y3R1cmUgc3RydWN0dXJlID0gbV9ub2RlLT5zdHJ1Y3R1cmUoKTsKQEAgLTYyNzksNiArNjMxMSw3
IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIExCYXNpY0Jsb2NrIGRlcml2ZWRDYXNl
ID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgTEJhc2ljQmxvY2sgaXNGdW5jdGlvbkJsb2Nr
ID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgTEJhc2ljQmxvY2sgaGFzUmFyZURhdGEgPSBt
X291dC5uZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9jayBoYXNTdHJ1Y3R1cmUgPSBtX291
dC5uZXdCbG9jaygpOwogICAgICAgICBMQmFzaWNCbG9jayBjaGVja0dsb2JhbE9iamVjdENhc2Ug
PSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICBMQmFzaWNCbG9jayBmYXN0QWxsb2NhdGlvbkNh
c2UgPSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICBMQmFzaWNCbG9jayBzbG93Q2FzZSA9IG1f
b3V0Lm5ld0Jsb2NrKCk7CkBAIC02Mjk0LDggKzYzMjcsMTEgQEAgY2xhc3MgTG93ZXJERkdUb0Iz
IHsKICAgICAgICAgTFZhbHVlIHJhcmVEYXRhID0gbV9vdXQubG9hZFB0cihjYWxsZWUsIG1faGVh
cHMuSlNGdW5jdGlvbl9yYXJlRGF0YSk7CiAgICAgICAgIG1fb3V0LmJyYW5jaChtX291dC5pc1pl
cm82NChyYXJlRGF0YSksIHJhcmVseShzbG93Q2FzZSksIHVzdWFsbHkoaGFzUmFyZURhdGEpKTsK
IAotICAgICAgICBtX291dC5hcHBlbmRUbyhoYXNSYXJlRGF0YSwgZmFzdEFsbG9jYXRpb25DYXNl
KTsKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oaGFzUmFyZURhdGEsIGhhc1N0cnVjdHVyZSk7CiAg
ICAgICAgIExWYWx1ZSBzdHJ1Y3R1cmUgPSBtX291dC5sb2FkUHRyKHJhcmVEYXRhLCBtX2hlYXBz
LkZ1bmN0aW9uUmFyZURhdGFfaW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25Qcm9maWxlX3N0cnVj
dHVyZSk7CisgICAgICAgIG1fb3V0LmJyYW5jaChtX291dC5pc1plcm82NChzdHJ1Y3R1cmUpLCBy
YXJlbHkoc2xvd0Nhc2UpLCB1c3VhbGx5KGhhc1N0cnVjdHVyZSkpOworCisgICAgICAgIG1fb3V0
LmFwcGVuZFRvKGhhc1N0cnVjdHVyZSwgY2hlY2tHbG9iYWxPYmplY3RDYXNlKTsKICAgICAgICAg
bV9vdXQuYnJhbmNoKG1fb3V0LmVxdWFsKG1fb3V0LmxvYWRQdHIoc3RydWN0dXJlLCBtX2hlYXBz
LlN0cnVjdHVyZV9jbGFzc0luZm8pLCBtX291dC5jb25zdEludFB0cihtX25vZGUtPmlzSW50ZXJu
YWxQcm9taXNlKCkgPyBKU0ludGVybmFsUHJvbWlzZTo6aW5mbygpIDogSlNQcm9taXNlOjppbmZv
KCkpKSwgdXN1YWxseShjaGVja0dsb2JhbE9iamVjdENhc2UpLCByYXJlbHkoc2xvd0Nhc2UpKTsK
IAogICAgICAgICBtX291dC5hcHBlbmRUbyhjaGVja0dsb2JhbE9iamVjdENhc2UsIGZhc3RBbGxv
Y2F0aW9uQ2FzZSk7CkBAIC02MzI0LDYgKzYzNjAsNTcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsK
ICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOwogICAgIH0KIAorICAgIHZvaWQgY29tcGlsZUNy
ZWF0ZUdlbmVyYXRvcigpCisgICAgeworICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwor
CisgICAgICAgIExWYWx1ZSBjYWxsZWUgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOworCisg
ICAgICAgIExCYXNpY0Jsb2NrIGlzRnVuY3Rpb25CbG9jayA9IG1fb3V0Lm5ld0Jsb2NrKCk7Cisg
ICAgICAgIExCYXNpY0Jsb2NrIGhhc1JhcmVEYXRhID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAg
ICAgTEJhc2ljQmxvY2sgaGFzU3RydWN0dXJlID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAg
TEJhc2ljQmxvY2sgY2hlY2tHbG9iYWxPYmplY3RDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyAg
ICAgICAgTEJhc2ljQmxvY2sgZmFzdEFsbG9jYXRpb25DYXNlID0gbV9vdXQubmV3QmxvY2soKTsK
KyAgICAgICAgTEJhc2ljQmxvY2sgc2xvd0Nhc2UgPSBtX291dC5uZXdCbG9jaygpOworICAgICAg
ICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygpOworCisgICAgICAg
IG1fb3V0LmJyYW5jaChpc0Z1bmN0aW9uKGNhbGxlZSwgcHJvdmVuVHlwZShtX25vZGUtPmNoaWxk
MSgpKSksIHVzdWFsbHkoaXNGdW5jdGlvbkJsb2NrKSwgcmFyZWx5KHNsb3dDYXNlKSk7CisKKyAg
ICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhpc0Z1bmN0aW9uQmxv
Y2ssIGhhc1JhcmVEYXRhKTsKKyAgICAgICAgTFZhbHVlIHJhcmVEYXRhID0gbV9vdXQubG9hZFB0
cihjYWxsZWUsIG1faGVhcHMuSlNGdW5jdGlvbl9yYXJlRGF0YSk7CisgICAgICAgIG1fb3V0LmJy
YW5jaChtX291dC5pc1plcm82NChyYXJlRGF0YSksIHJhcmVseShzbG93Q2FzZSksIHVzdWFsbHko
aGFzUmFyZURhdGEpKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhoYXNSYXJlRGF0YSwgaGFz
U3RydWN0dXJlKTsKKyAgICAgICAgTFZhbHVlIHN0cnVjdHVyZSA9IG1fb3V0LmxvYWRQdHIocmFy
ZURhdGEsIG1faGVhcHMuRnVuY3Rpb25SYXJlRGF0YV9pbnRlcm5hbEZ1bmN0aW9uQWxsb2NhdGlv
blByb2ZpbGVfc3RydWN0dXJlKTsKKyAgICAgICAgbV9vdXQuYnJhbmNoKG1fb3V0LmlzWmVybzY0
KHN0cnVjdHVyZSksIHJhcmVseShzbG93Q2FzZSksIHVzdWFsbHkoaGFzU3RydWN0dXJlKSk7CisK
KyAgICAgICAgbV9vdXQuYXBwZW5kVG8oaGFzU3RydWN0dXJlLCBjaGVja0dsb2JhbE9iamVjdENh
c2UpOworICAgICAgICBtX291dC5icmFuY2gobV9vdXQuZXF1YWwobV9vdXQubG9hZFB0cihzdHJ1
Y3R1cmUsIG1faGVhcHMuU3RydWN0dXJlX2NsYXNzSW5mbyksIG1fb3V0LmNvbnN0SW50UHRyKEpT
R2VuZXJhdG9yOjppbmZvKCkpKSwgdXN1YWxseShjaGVja0dsb2JhbE9iamVjdENhc2UpLCByYXJl
bHkoc2xvd0Nhc2UpKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhjaGVja0dsb2JhbE9iamVj
dENhc2UsIGZhc3RBbGxvY2F0aW9uQ2FzZSk7CisgICAgICAgIG1fb3V0LmJyYW5jaChtX291dC5l
cXVhbChtX291dC5sb2FkUHRyKHN0cnVjdHVyZSwgbV9oZWFwcy5TdHJ1Y3R1cmVfZ2xvYmFsT2Jq
ZWN0KSwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSksIHVzdWFsbHkoZmFzdEFsbG9jYXRpb25D
YXNlKSwgcmFyZWx5KHNsb3dDYXNlKSk7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oZmFzdEFs
bG9jYXRpb25DYXNlLCBzbG93Q2FzZSk7CisgICAgICAgIExWYWx1ZSBnZW5lcmF0b3IgPSBhbGxv
Y2F0ZU9iamVjdDxKU0dlbmVyYXRvcj4oc3RydWN0dXJlLCBtX291dC5pbnRQdHJaZXJvLCBzbG93
Q2FzZSk7CisgICAgICAgIG1fb3V0LnN0b3JlNjQobV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjpl
bmNvZGUoanNOdWxsKCkpKSwgZ2VuZXJhdG9yLCBtX2hlYXBzLkpTSW50ZXJuYWxGaWVsZE9iamVj
dEltcGxfaW50ZXJuYWxGaWVsZHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTR2VuZXJhdG9yOjpG
aWVsZDo6UG9seVByb3RvKV0pOworICAgICAgICBtX291dC5zdG9yZTY0KG1fb3V0LmNvbnN0SW50
NjQoSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJh
dG9yOjpHZW5lcmF0b3JTdGF0ZTo6SW5pdCkpKSksIGdlbmVyYXRvciwgbV9oZWFwcy5KU0ludGVy
bmFsRmllbGRPYmplY3RJbXBsX2ludGVybmFsRmllbGRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0dlbmVyYXRvcjo6RmllbGQ6OlN0YXRlKV0pOworICAgICAgICBtX291dC5zdG9yZTY0KG1fb3V0
LmNvbnN0SW50NjQoSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpKSwgZ2VuZXJhdG9yLCBt
X2hlYXBzLkpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGxfaW50ZXJuYWxGaWVsZHNbc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTR2VuZXJhdG9yOjpGaWVsZDo6TmV4dCldKTsKKyAgICAgICAgbV9vdXQu
c3RvcmU2NChtX291dC5jb25zdEludDY0KEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKSks
IGdlbmVyYXRvciwgbV9oZWFwcy5KU0ludGVybmFsRmllbGRPYmplY3RJbXBsX2ludGVybmFsRmll
bGRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihKU0dlbmVyYXRvcjo6RmllbGQ6OlRoaXMpXSk7Cisg
ICAgICAgIG1fb3V0LnN0b3JlNjQobV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSkpLCBnZW5lcmF0b3IsIG1faGVhcHMuSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1w
bF9pbnRlcm5hbEZpZWxkc1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNHZW5lcmF0b3I6OkZpZWxk
OjpGcmFtZSldKTsKKyAgICAgICAgbXV0YXRvckZlbmNlKCk7CisgICAgICAgIFZhbHVlRnJvbUJs
b2NrIGZhc3RSZXN1bHQgPSBtX291dC5hbmNob3IoZ2VuZXJhdG9yKTsKKyAgICAgICAgbV9vdXQu
anVtcChjb250aW51YXRpb24pOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dDYXNlLCBj
b250aW51YXRpb24pOworICAgICAgICBWYWx1ZUZyb21CbG9jayBzbG93UmVzdWx0ID0gbV9vdXQu
YW5jaG9yKHZtQ2FsbChJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkNyZWF0ZUdlbmVy
YXRvciksIG1fY2FsbEZyYW1lLCBjYWxsZWUsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCkpKTsK
KyAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworCisgICAgICAgIG1fb3V0LmFwcGVu
ZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOworICAgICAgICBMVmFsdWUgcmVzdWx0ID0gbV9v
dXQucGhpKEludDY0LCBmYXN0UmVzdWx0LCBzbG93UmVzdWx0KTsKKworICAgICAgICBzZXRKU1Zh
bHVlKHJlc3VsdCk7CisgICAgfQorCiAgICAgdm9pZCBjb21waWxlU3ByZWFkKCkKICAgICB7CiAg
ICAgICAgIGlmIChtX25vZGUtPmNoaWxkMSgpLT5vcCgpID09IFBoYW50b21OZXdBcnJheUJ1ZmZl
cikgewpAQCAtMTYxMDEsMTAgKzE2MTg4LDEyIEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAg
ICAgIGpzVmFsdWVUb1N0cmljdEludDUyKGVkZ2UsIGxvd0pTVmFsdWUoZWRnZSwgTWFudWFsT3Bl
cmFuZFNwZWN1bGF0aW9uKSk7CiAgICAgfQogCi0gICAgTFZhbHVlIGlzQ2VsbFdpdGhUeXBlKExW
YWx1ZSBjZWxsLCBKU1R5cGUgcXVlcmllZFR5cGUsIFNwZWN1bGF0ZWRUeXBlIHNwZWN1bGF0ZWRU
eXBlRm9yUXVlcnksIFNwZWN1bGF0ZWRUeXBlIHR5cGUgPSBTcGVjRnVsbFRvcCkKKyAgICBMVmFs
dWUgaXNDZWxsV2l0aFR5cGUoTFZhbHVlIGNlbGwsIEpTVHlwZSBxdWVyaWVkVHlwZSwgT3B0aW9u
YWw8U3BlY3VsYXRlZFR5cGU+IHNwZWN1bGF0ZWRUeXBlRm9yUXVlcnksIFNwZWN1bGF0ZWRUeXBl
IHR5cGUgPSBTcGVjRnVsbFRvcCkKICAgICB7Ci0gICAgICAgIGlmIChMVmFsdWUgcHJvdmVuID0g
aXNQcm92ZW5WYWx1ZSh0eXBlICYgU3BlY0NlbGwsIHNwZWN1bGF0ZWRUeXBlRm9yUXVlcnkpKQot
ICAgICAgICAgICAgcmV0dXJuIHByb3ZlbjsKKyAgICAgICAgaWYgKHNwZWN1bGF0ZWRUeXBlRm9y
UXVlcnkpIHsKKyAgICAgICAgICAgIGlmIChMVmFsdWUgcHJvdmVuID0gaXNQcm92ZW5WYWx1ZSh0
eXBlICYgU3BlY0NlbGwsIHNwZWN1bGF0ZWRUeXBlRm9yUXVlcnkudmFsdWUoKSkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIHByb3ZlbjsKKyAgICAgICAgfQogICAgICAgICByZXR1cm4gbV9vdXQu
ZXF1YWwoCiAgICAgICAgICAgICBtX291dC5sb2FkOFplcm9FeHQzMihjZWxsLCBtX2hlYXBzLkpT
Q2VsbF90eXBlSW5mb1R5cGUpLAogICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQzMihxdWVyaWVk
VHlwZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IGIxNjdmMWMyNmFhZmIwM2Vk
M2ExNzhlYzE2MDU0MmI4N2ZjOTRiNmYuLmJiZmNmZTMwZmEzNjBmZGY1M2Q4MzdhN2I5N2E1NDIz
NjdlMjk1YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTMxMiw2ICszMTIsOCBA
QCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9TTE9X
X09QKGNyZWF0ZV9yZXN0KQogICAgICAgICBERUZJTkVfU0xPV19PUChjcmVhdGVfcHJvbWlzZSkK
ICAgICAgICAgREVGSU5FX1NMT1dfT1AobmV3X3Byb21pc2UpCisgICAgICAgIERFRklORV9TTE9X
X09QKGNyZWF0ZV9nZW5lcmF0b3IpCisgICAgICAgIERFRklORV9TTE9XX09QKG5ld19nZW5lcmF0
b3IpCiAgICAgICAgIERFRklORV9TTE9XX09QKHBvdykKIAogICAgICAgICBERUZJTkVfT1Aob3Bf
YWRkKQpAQCAtNTgwLDYgKzU4Miw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNl
cygpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9TTE9XX09QKGRpdikKICAgICAgICAgREVGSU5F
X1NMT1dDQVNFX1NMT1dfT1AoY3JlYXRlX3RoaXMpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9T
TE9XX09QKGNyZWF0ZV9wcm9taXNlKQorICAgICAgICBERUZJTkVfU0xPV0NBU0VfU0xPV19PUChj
cmVhdGVfZ2VuZXJhdG9yKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfU0xPV19PUCh0b190aGlz
KQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfU0xPV19PUCh0b19wcmltaXRpdmUpCiAgICAgICAg
IERFRklORV9TTE9XQ0FTRV9TTE9XX09QKHRvX251bWJlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IDdhZjRlZTMyNmNmMWU4OWU5YTUzZjlhMjc3
YmQ1YzQwNTI2MzA4MDguLmVmYTI1NGNiMmFmMDEyNTdlYWQ2MGNkMjI1ODk3YTYxYjcxMDkxNDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtMTM5
NCw2ICsxMzk0LDE0IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdJbnRlcm5h
bFByb21pc2UoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0CiAgICAgcmV0dXJuIEpTSW50
ZXJuYWxQcm9taXNlOjpjcmVhdGUodm0sIHN0cnVjdHVyZSk7CiB9CiAKK0pTQ2VsbCogSklUX09Q
RVJBVElPTiBvcGVyYXRpb25OZXdHZW5lcmF0b3IoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkKK3sKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE5hdGl2ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOworCisgICAgcmV0dXJuIEpTR2VuZXJhdG9yOjpj
cmVhdGUodm0sIHN0cnVjdHVyZSk7Cit9CisKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRp
b25OZXdSZWdleHAoRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIHJlZ2V4cFB0cikKIHsKICAgICBT
dXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCmluZGV4IDFjM2MyNzJjYmJhOGRkMzU2MmQ0ZDE1
Y2YwOTUwZTZjOTI0Mjg3NjIuLjFiNzQ5YjIzMGY4MDJkM2ZjNDJmY2ZhMTYwNDZiYTg5ZjMwYzhj
NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCkBAIC00MjEs
NiArNDIxLDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblNldEZ1bmN0aW9uTmFtZShF
eGVjU3RhdGUqLCBKU0NlbGwqLCBFbmNvZGVkSlNWYWx1ZSkKIEpTQ2VsbCogSklUX09QRVJBVElP
TiBvcGVyYXRpb25OZXdPYmplY3QoRXhlY1N0YXRlKiwgU3RydWN0dXJlKikgV1RGX0lOVEVSTkFM
OwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld1Byb21pc2UoRXhlY1N0YXRlKiwg
U3RydWN0dXJlKikgV1RGX0lOVEVSTkFMOwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bk5ld0ludGVybmFsUHJvbWlzZShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqKSBXVEZfSU5URVJOQUw7
CitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3R2VuZXJhdG9yKEV4ZWNTdGF0ZSos
IFN0cnVjdHVyZSopIFdURl9JTlRFUk5BTDsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRp
b25OZXdSZWdleHAoRXhlY1N0YXRlKiwgSlNDZWxsKikgV1RGX0lOVEVSTkFMOwogVW51c2VkUHRy
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSGFuZGxlVHJhcHMoRXhlY1N0YXRlKikgV1RGX0lOVEVS
TkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRocm93KEV4ZWNTdGF0ZSosIEVuY29k
ZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUUHJvcGVydHlBY2Nlc3MuY3BwCmluZGV4IDQwNzU4ZTdmMzBhY2M0ZDcyODJlYjg1MzVjYjRk
MzFiYzhjMGU3NDIuLjM2OWNiMTBiMjI1YzA5YTE0MmFmZTYyM2JlOTNkNWIwNGFmODBkYWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCkBA
IC0xMjQzLDcgKzEyNDMsNiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfaW50ZXJuYWxfZmllbGQo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBpbnQgZHN0ID0gYnl0
ZWNvZGUubV9kc3Qub2Zmc2V0KCk7CiAgICAgaW50IGJhc2UgPSBieXRlY29kZS5tX2Jhc2Uub2Zm
c2V0KCk7CiAgICAgdW5zaWduZWQgaW5kZXggPSBieXRlY29kZS5tX2luZGV4OwotICAgIEFTU0VS
VChpbmRleCA8IEpTUHJvbWlzZTo6bnVtYmVyT2ZJbnRlcm5hbEZpZWxkcyk7CiAKICAgICBlbWl0
R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIHJlZ1QxKTsKICAgICBsb2FkUHRyKEFkZHJlc3MocmVn
VDEsIEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGw8Pjo6b2Zmc2V0T2ZJbnRlcm5hbEZpZWxkKGlu
ZGV4KSksIHJlZ1QwKTsKQEAgLTEyNTgsNyArMTI1Nyw2IEBAIHZvaWQgSklUOjplbWl0X29wX3B1
dF9pbnRlcm5hbF9maWVsZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ICAgIGludCBiYXNlID0gYnl0ZWNvZGUubV9iYXNlLm9mZnNldCgpOwogICAgIGludCB2YWx1ZSA9
IGJ5dGVjb2RlLm1fdmFsdWUub2Zmc2V0KCk7CiAgICAgdW5zaWduZWQgaW5kZXggPSBieXRlY29k
ZS5tX2luZGV4OwotICAgIEFTU0VSVChpbmRleCA8IEpTUHJvbWlzZTo6bnVtYmVyT2ZJbnRlcm5h
bEZpZWxkcyk7CiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIHJlZ1QwKTsKICAg
ICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHZhbHVlLCByZWdUMSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggZDIwNGI0
MDdjMmRlNDhlNWRjYjJjYTEzMWE0YWIxNGUzZDg5YjFjYy4uMjU3NmVmNDllMTE4MzEyNmNmZjhm
MWUzNWVlYWVkYmZlMDQ2ZGVjZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQpAQCAtMTQ5NSw2ICsxNDk1LDcgQEAgc2xvd1Bh
dGhPcChjcmVhdGVfcmVzdCkKIHNsb3dQYXRoT3AoY3JlYXRlX3Njb3BlZF9hcmd1bWVudHMpCiBz
bG93UGF0aE9wKGNyZWF0ZV90aGlzKQogc2xvd1BhdGhPcChjcmVhdGVfcHJvbWlzZSkKK3Nsb3dQ
YXRoT3AoY3JlYXRlX2dlbmVyYXRvcikKIHNsb3dQYXRoT3AoZGVmaW5lX2FjY2Vzc29yX3Byb3Bl
cnR5KQogc2xvd1BhdGhPcChkZWZpbmVfZGF0YV9wcm9wZXJ0eSkKIHNsb3dQYXRoT3AoZW51bWVy
YXRvcl9nZW5lcmljX3BuYW1lKQpAQCAtMTUzMCw2ICsxNTMxLDcgQEAgc2xvd1BhdGhPcCh0b19p
bmRleF9zdHJpbmcpCiBzbG93UGF0aE9wKHR5cGVvZikKIHNsb3dQYXRoT3AodW5yZWFjaGFibGUp
CiBzbG93UGF0aE9wKG5ld19wcm9taXNlKQorc2xvd1BhdGhPcChuZXdfZ2VuZXJhdG9yKQogCiBt
YWNybyBsbGludFNsb3dQYXRoT3Aob3Bjb2RlTmFtZSkKICAgICBsbGludE9wKG9wXyVvcGNvZGVO
YW1lJSwgdW51c2VkLCBtYWNybyAodW51c2VkLCB1bnVzZWQsIGRpc3BhdGNoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKaW5kZXggNjU4
NjU3OTgyMzM0NDQ5OTcwMmJiYmRjNWQzNWNiMjc1NDRlM2NlZi4uMTEyM2QxNzlmNjM5MDYyMzE1
ZTU0MjQwNGExZTUyNWI0ODdlNmY1ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCkBAIC0zMDksNiArMzA5LDM2IEBAIFNMT1dfUEFU
SF9ERUNMKHNsb3dfcGF0aF9uZXdfcHJvbWlzZSkKICAgICBSRVRVUk4ocmVzdWx0KTsKIH0KIAor
U0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NyZWF0ZV9nZW5lcmF0b3IpCit7CisgICAgQkVHSU4o
KTsKKyAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wQ3JlYXRlR2VuZXJhdG9yPigpOworICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCk7CisgICAgSlNPYmplY3QqIGNvbnN0cnVjdG9yQXNPYmplY3QgPSBhc09iamVjdChHRVQoYnl0
ZWNvZGUubV9jYWxsZWUpLmpzVmFsdWUoKSk7CisKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9
IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKGV4ZWMsIG51bGxwdHIs
IGNvbnN0cnVjdG9yQXNPYmplY3QsIGdsb2JhbE9iamVjdC0+Z2VuZXJhdG9yU3RydWN0dXJlKCkp
OworICAgIENIRUNLX0VYQ0VQVElPTigpOworICAgIEpTR2VuZXJhdG9yKiByZXN1bHQgPSBKU0dl
bmVyYXRvcjo6Y3JlYXRlKHZtLCBzdHJ1Y3R1cmUpOworCisgICAgSlNGdW5jdGlvbiogY29uc3Ry
dWN0b3IgPSBqc0R5bmFtaWNDYXN0PEpTRnVuY3Rpb24qPih2bSwgY29uc3RydWN0b3JBc09iamVj
dCk7CisgICAgaWYgKGNvbnN0cnVjdG9yICYmIGNvbnN0cnVjdG9yLT5jYW5Vc2VBbGxvY2F0aW9u
UHJvZmlsZSgpKSB7CisgICAgICAgIFdyaXRlQmFycmllcjxKU0NlbGw+JiBjYWNoZWRDYWxsZWUg
PSBieXRlY29kZS5tZXRhZGF0YShleGVjKS5tX2NhY2hlZENhbGxlZTsKKyAgICAgICAgaWYgKCFj
YWNoZWRDYWxsZWUpCisgICAgICAgICAgICBjYWNoZWRDYWxsZWUuc2V0KHZtLCBleGVjLT5jb2Rl
QmxvY2soKSwgY29uc3RydWN0b3IpOworICAgICAgICBlbHNlIGlmIChjYWNoZWRDYWxsZWUudW52
YWxpZGF0ZWRHZXQoKSAhPSBKU0NlbGw6OnNlZW5NdWx0aXBsZUNhbGxlZU9iamVjdHMoKSAmJiBj
YWNoZWRDYWxsZWUuZ2V0KCkgIT0gY29uc3RydWN0b3IpCisgICAgICAgICAgICBjYWNoZWRDYWxs
ZWUuc2V0V2l0aG91dFdyaXRlQmFycmllcihKU0NlbGw6OnNlZW5NdWx0aXBsZUNhbGxlZU9iamVj
dHMoKSk7CisgICAgfQorICAgIFJFVFVSTihyZXN1bHQpOworfQorCitTTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfbmV3X2dlbmVyYXRvcikKK3sKKyAgICBCRUdJTigpOworICAgIGF1dG8gYnl0ZWNv
ZGUgPSBwYy0+YXM8T3BOZXdHZW5lcmF0b3I+KCk7CisgICAgSlNHZW5lcmF0b3IqIHJlc3VsdCA9
IEpTR2VuZXJhdG9yOjpjcmVhdGUodm0sIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+Z2Vu
ZXJhdG9yU3RydWN0dXJlKCkpOworICAgIFJFVFVSTihyZXN1bHQpOworfQorCiBTTE9XX1BBVEhf
REVDTChzbG93X3BhdGhfdG9fdGhpcykKIHsKICAgICBCRUdJTigpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAppbmRleCAyZmU3NWU2YzM2NTIz
ZWZjOWJhODJhNDYxNjU1MGRmZjc2MjNhMTg4Li43ZjkwYjE0MGI4OTc5MGZlMTRjNDMwN2YxYTIw
Zjc0ZmQ5ZDNmYmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25TbG93UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25TbG93UGF0aHMuaApAQCAtMzg0LDYgKzM4NCw3IEBAIFNMT1dfUEFUSF9ISURERU5fREVDTChz
bG93X3BhdGhfcmVzb2x2ZV9zY29wZSk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRo
X2lzX3Zhcl9zY29wZSk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3Jlc29sdmVf
c2NvcGVfZm9yX2hvaXN0aW5nX2Z1bmNfZGVjbF9pbl9ldmFsKTsKIFNMT1dfUEFUSF9ISURERU5f
REVDTChzbG93X3BhdGhfY3JlYXRlX3Byb21pc2UpOworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNs
b3dfcGF0aF9jcmVhdGVfZ2VuZXJhdG9yKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3Bh
dGhfY3JlYXRlX3Jlc3QpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9nZXRfYnlf
aWRfd2l0aF90aGlzKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZ2V0X2J5X3Zh
bF93aXRoX3RoaXMpOwpAQCAtMzkzLDYgKzM5NCw3IEBAIFNMT1dfUEFUSF9ISURERU5fREVDTChz
bG93X3BhdGhfZGVmaW5lX2RhdGFfcHJvcGVydHkpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNs
b3dfcGF0aF9kZWZpbmVfYWNjZXNzb3JfcHJvcGVydHkpOwogU0xPV19QQVRIX0hJRERFTl9ERUNM
KHNsb3dfcGF0aF90aHJvd19zdGF0aWNfZXJyb3IpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNs
b3dfcGF0aF9uZXdfcHJvbWlzZSk7CitTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25l
d19nZW5lcmF0b3IpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfYXJyYXlf
d2l0aF9zcHJlYWQpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfYXJyYXlf
YnVmZmVyKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfc3ByZWFkKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHAKaW5k
ZXggZGQ0YTIyMDgwMGYxODM0MzE3MDEyOWY5MzFiZTMxMmZmMzdmMTNkMi4uMjM4ZTU0MzMzZWFk
Y2NiZWY4NWIzZWI2MDQwM2Q1N2IwYmYzODliMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHAKQEAgLTExOSw3ICsxMTksNiBAQCBT
dHJ1Y3R1cmUqIEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlU2xvdyhF
eGVjU3RhdGUqIGV4ZWMsIEpTVmFsdQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEFTU0VSVCghbmV3VGFy
Z2V0IHx8IG5ld1RhcmdldC5pc0NvbnN0cnVjdG9yKHZtKSk7CiAKICAgICBBU1NFUlQoYmFzZUNs
YXNzLT5oYXNNb25vUHJvdG8oKSk7CiAKQEAgLTEzMyw3ICsxMzIsNyBAQCBTdHJ1Y3R1cmUqIElu
dGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlU2xvdyhFeGVjU3RhdGUqIGV4
ZWMsIEpTVmFsdQogICAgICAgICAgICAgcmV0dXJuIHN0cnVjdHVyZTsKIAogICAgICAgICAvLyBO
b3RlLCBSZWZsZWN0LmNvbnN0cnVjdCBtaWdodCBjYXVzZSB0aGUgcHJvZmlsZSB0byBjaHVybiBi
dXQgd2UgZG9uJ3QgY2FyZS4KLSAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGVWYWx1ZSA9IG5ld1Rh
cmdldC5nZXQoZXhlYywgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlKTsKKyAgICAgICAgSlNW
YWx1ZSBwcm90b3R5cGVWYWx1ZSA9IHRhcmdldEZ1bmN0aW9uLT5nZXQoZXhlYywgdm0ucHJvcGVy
dHlOYW1lcy0+cHJvdG90eXBlKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
bnVsbHB0cik7CiAgICAgICAgIGlmIChKU09iamVjdCogcHJvdG90eXBlID0ganNEeW5hbWljQ2Fz
dDxKU09iamVjdCo+KHZtLCBwcm90b3R5cGVWYWx1ZSkpCiAgICAgICAgICAgICByZXR1cm4gdGFy
Z2V0RnVuY3Rpb24tPnJhcmVEYXRhKHZtKS0+Y3JlYXRlSW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRp
b25TdHJ1Y3R1cmVGcm9tQmFzZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIGJhc2VDbGFz
cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1
bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9u
LmgKaW5kZXggOTMzNjg4OWZlZTgxNTAxOGM5Y2FjYjQzNWM2NGE3OGFjMTBhZTczYi4uMWZhNDg1
OGM3YzNlNmUyMWI1NGMwMzg3ZWI2YzQ4NDNhODAxMzFmMCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uaApAQCAtMTAyLDggKzEwMiw2IEBA
IEFMV0FZU19JTkxJTkUgU3RydWN0dXJlKiBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFz
c1N0cnVjdHVyZShFeGVjU3RhdGUqIGV4CiB7CiAgICAgLy8gV2UgYWxsb3cgbmV3VGFyZ2V0ID09
IEpTVmFsdWUoKSBiZWNhdXNlIHRoZSBBUEkgbmVlZHMgdG8gYmUgYWJsZSB0byBjcmVhdGUgY2xh
c3NlcyB3aXRob3V0IGhhdmluZyBhIHJlYWwgSlMgZnJhbWUuCiAgICAgLy8gU2luY2Ugd2UgZG9u
J3QgYWxsb3cgc3ViY2xhc3NpbmcgaW4gdGhlIEFQSSB3ZSBqdXN0IHRyZWF0IG5ld1RhcmdldCA9
PSBKU1ZhbHVlKCkgYXMgbmV3VGFyZ2V0ID09IGV4ZWMtPmpzQ2FsbGVlKCkKLSAgICBBU1NFUlQo
IW5ld1RhcmdldCB8fCBuZXdUYXJnZXQuaXNDb25zdHJ1Y3RvcihleGVjLT52bSgpKSk7Ci0KICAg
ICBpZiAobmV3VGFyZ2V0ICYmIG5ld1RhcmdldCAhPSBiYXNlQ2FsbGVlKQogICAgICAgICByZXR1
cm4gY3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmVTbG93KGV4ZWMsIG5ld1RhcmdldCwgYmFzZUNsYXNz
KTsKICAgICByZXR1cm4gYmFzZUNsYXNzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHZW5lcmF0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjViMDBhNDJmMzkxMDYyM2RjYTkwNzQzYzY4
M2U1MWQ2MTM1ZTBjOGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dlbmVyYXRvci5jcHAKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU0dlbmVyYXRvci5oIgorCisjaW5jbHVkZSAi
QnVpbHRpbk5hbWVzLmgiCisjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVz
LmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTSW50ZXJuYWxGaWVsZE9i
amVjdEltcGxJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8g
SlNHZW5lcmF0b3I6OnNfaW5mbyA9IHsgIkdlbmVyYXRvciIsICZCYXNlOjpzX2luZm8sIG51bGxw
dHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNHZW5lcmF0b3IpIH07CisKK0pTR2Vu
ZXJhdG9yKiBKU0dlbmVyYXRvcjo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
Cit7CisgICAgSlNHZW5lcmF0b3IqIGdlbmVyYXRvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVD
ZWxsPEpTR2VuZXJhdG9yPih2bS5oZWFwKSkgSlNHZW5lcmF0b3Iodm0sIHN0cnVjdHVyZSk7Cisg
ICAgZ2VuZXJhdG9yLT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgcmV0dXJuIGdlbmVyYXRvcjsK
K30KKworU3RydWN0dXJlKiBKU0dlbmVyYXRvcjo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0
dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUlu
Zm8oSlNHZW5lcmF0b3JUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK0pTR2Vu
ZXJhdG9yOjpKU0dlbmVyYXRvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDog
QmFzZSh2bSwgc3RydWN0dXJlKQoreworfQorCit2b2lkIEpTR2VuZXJhdG9yOjpmaW5pc2hDcmVh
dGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIGludGVy
bmFsRmllbGQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEZpZWxkOjpQb2x5UHJvdG8pKS5zZXQodm0s
IHRoaXMsIGpzTnVsbCgpKTsKKyAgICBpbnRlcm5hbEZpZWxkKHN0YXRpY19jYXN0PHVuc2lnbmVk
PihGaWVsZDo6U3RhdGUpKS5zZXQodm0sIHRoaXMsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMy
X3Q+KEdlbmVyYXRvclN0YXRlOjpJbml0KSkpOworICAgIGludGVybmFsRmllbGQoc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEZpZWxkOjpOZXh0KSkuc2V0KHZtLCB0aGlzLCBqc1VuZGVmaW5lZCgpKTsK
KyAgICBpbnRlcm5hbEZpZWxkKHN0YXRpY19jYXN0PHVuc2lnbmVkPihGaWVsZDo6VGhpcykpLnNl
dCh2bSwgdGhpcywganNVbmRlZmluZWQoKSk7CisgICAgaW50ZXJuYWxGaWVsZChzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oRmllbGQ6OkZyYW1lKSkuc2V0KHZtLCB0aGlzLCBqc1VuZGVmaW5lZCgpKTsK
K30KKwordm9pZCBKU0dlbmVyYXRvcjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RW
aXNpdG9yJiB2aXNpdG9yKQoreworICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNHZW5l
cmF0b3IqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3Qs
IGluZm8oKSk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHZW5lcmF0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNDg5YTRjMTdiNzFlYmRjMzJmMjY5Y2JjZWE0ZWE3
M2UyYjNhMzZhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHZW5lcmF0b3IuaApAQCAtMCwwICsxLDkwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlICJKU0ludGVybmFsRmllbGRPYmplY3RJbXBsLmgiCisKK25hbWVzcGFj
ZSBKU0MgeworCitjbGFzcyBKU0Z1bmN0aW9uOworCitjbGFzcyBKU0dlbmVyYXRvciBmaW5hbCA6
IHB1YmxpYyBKU0ludGVybmFsRmllbGRPYmplY3RJbXBsPDU+IHsKK3B1YmxpYzoKKyAgICB1c2lu
ZyBCYXNlID0gSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbDw1PjsKKworICAgIC8vIEpTR2VuZXJh
dG9yIGhhcyBvbmUgaW5saW5lIHN0b3JhZ2Ugc2xvdCwgd2hpY2ggaXMgcG9pbnRpbmcgaW50ZXJu
YWxGaWVsZCgwKS4KKyAgICBzdGF0aWMgc2l6ZV90IGFsbG9jYXRpb25TaXplKENoZWNrZWQ8c2l6
ZV90PiBpbmxpbmVDYXBhY2l0eSkKKyAgICB7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoaW5saW5l
Q2FwYWNpdHksIGlubGluZUNhcGFjaXR5ID09IDBVKTsKKyAgICAgICAgcmV0dXJuIHNpemVvZihK
U0dlbmVyYXRvcik7CisgICAgfQorCisgICAgZW51bSBjbGFzcyBHZW5lcmF0b3JSZXN1bWVNb2Rl
IDogaW50MzJfdCB7CisgICAgICAgIE5vcm1hbE1vZGUgPSAwLAorICAgICAgICBSZXR1cm5Nb2Rl
ID0gMSwKKyAgICAgICAgVGhyb3dNb2RlID0gMgorICAgIH07CisKKyAgICBlbnVtIGNsYXNzIEdl
bmVyYXRvclN0YXRlIDogaW50MzJfdCB7CisgICAgICAgIENvbXBsZXRlZCA9IC0xLAorICAgICAg
ICBFeGVjdXRpbmcgPSAtMiwKKyAgICAgICAgSW5pdCA9IDAsCisgICAgfTsKKworICAgIC8vIFt0
aGlzXSwgQGdlbmVyYXRvciwgQGdlbmVyYXRvclN0YXRlLCBAZ2VuZXJhdG9yVmFsdWUsIEBnZW5l
cmF0b3JSZXN1bWVNb2RlLCBAZ2VuZXJhdG9yRnJhbWUuCisgICAgZW51bSBjbGFzcyBHZW5lcmF0
b3JBcmd1bWVudCA6IGludDMyX3QgeworICAgICAgICBUaGlzVmFsdWUgPSAwLAorICAgICAgICBH
ZW5lcmF0b3IgPSAxLAorICAgICAgICBTdGF0ZSA9IDIsCisgICAgICAgIFZhbHVlID0gMywKKyAg
ICAgICAgUmVzdW1lTW9kZSA9IDQsCisgICAgICAgIEZyYW1lID0gNSwKKyAgICB9OworCisgICAg
ZW51bSBjbGFzcyBGaWVsZCA6IHVpbnQzMl90IHsKKyAgICAgICAgLy8gRklYTUU6IEpTR2VuZXJh
dG9yIHNob3VsZCBzdXBwb3J0IFBvbHlQcm90bywgc2luY2UgZ2VuZXJhdG9yIHRlbmRzIHRvIGJl
IGNyZWF0ZWQgd2l0aCBwb2x5IHByb3RvIG1vZGUuCisgICAgICAgIC8vIFdlIHJlc2VydmUgdGhl
IGZpcnN0IGludGVybmFsIGZpZWxkIGZvciBQb2x5UHJvdG8gcHJvcGVydHkuIFRoaXMgb2Zmc2V0
IGlzIGlkZW50aWNhbCB0byBKU0ZpbmFsT2JqZWN0J3MgZmlyc3QgaW5saW5lIHN0b3JhZ2Ugc2xv
dCB3aGljaCB3aWxsIGJlIHVzZWQgZm9yIFBvbHlQcm90by4KKyAgICAgICAgUG9seVByb3RvID0g
MCwKKyAgICAgICAgU3RhdGUsCisgICAgICAgIE5leHQsCisgICAgICAgIFRoaXMsCisgICAgICAg
IEZyYW1lLAorICAgIH07CisgICAgc3RhdGljX2Fzc2VydChudW1iZXJPZkludGVybmFsRmllbGRz
ID09IDUpOworCisgICAgc3RhdGljIEpTR2VuZXJhdG9yKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUq
KTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9i
amVjdCosIEpTVmFsdWUpOworCisgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKKworICAgIHN0YXRp
YyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKKworcHJvdGVjdGVk
OgorICAgIEpTR2VuZXJhdG9yKFZNJiwgU3RydWN0dXJlKik7CisgICAgdm9pZCBmaW5pc2hDcmVh
dGlvbihWTSYpOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmgKaW5kZXggYTQ1NGI5NTg4
MDYxZDQ4YjU3ZjU2YjMwZWZlMDYzYzg0ZjI2YjI5My4uZWZkMjg5MGEzMWZhZjgwZGZhYzUwYjc0
NDBiOWQyZjM0NmVjYTJjZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uaApAQCAtNDEsMjggKzQxLDcgQEAgY2xhc3MgSlNHZW5l
cmF0b3JGdW5jdGlvbiBmaW5hbCA6IHB1YmxpYyBKU0Z1bmN0aW9uIHsKICNlbmRpZgogICAgIGZy
aWVuZCBjbGFzcyBWTTsKIHB1YmxpYzoKLSAgICB0eXBlZGVmIEpTRnVuY3Rpb24gQmFzZTsKLQot
ICAgIGVudW0gY2xhc3MgR2VuZXJhdG9yUmVzdW1lTW9kZSA6IGludDMyX3QgewotICAgICAgICBO
b3JtYWxNb2RlID0gMCwKLSAgICAgICAgUmV0dXJuTW9kZSA9IDEsCi0gICAgICAgIFRocm93TW9k
ZSA9IDIKLSAgICB9OwotCi0gICAgZW51bSBjbGFzcyBHZW5lcmF0b3JTdGF0ZSA6IGludDMyX3Qg
ewotICAgICAgICBDb21wbGV0ZWQgPSAtMSwKLSAgICAgICAgRXhlY3V0aW5nID0gLTIsCi0gICAg
fTsKLQotICAgIC8vIFt0aGlzXSwgQGdlbmVyYXRvciwgQGdlbmVyYXRvclN0YXRlLCBAZ2VuZXJh
dG9yVmFsdWUsIEBnZW5lcmF0b3JSZXN1bWVNb2RlLCBAZ2VuZXJhdG9yRnJhbWUuCi0gICAgZW51
bSBjbGFzcyBHZW5lcmF0b3JBcmd1bWVudCA6IGludDMyX3QgewotICAgICAgICBUaGlzVmFsdWUg
PSAwLAotICAgICAgICBHZW5lcmF0b3IgPSAxLAotICAgICAgICBTdGF0ZSA9IDIsCi0gICAgICAg
IFZhbHVlID0gMywKLSAgICAgICAgUmVzdW1lTW9kZSA9IDQsCi0gICAgICAgIEZyYW1lID0gNSwK
LSAgICB9OworICAgIHVzaW5nIEJhc2UgPSBKU0Z1bmN0aW9uOwogCiAgICAgY29uc3Qgc3RhdGlj
IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3M7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCBh
YTczZmM1M2Q0N2I3MDBkMzQyMGE4NjJjZTc2ZTdjMGRmYTBjNzUxLi5lODdlMGNiNDE2MmUwNzg1
NDVmYWNlNTI3MWUyODg1MjVkNTc1OTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC04MTksNiArODE5LDcgQEAgY2FwaXRhbE5h
bWUgIyMgQ29uc3RydWN0b3IqIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFn
ID8gY2FwaXRhbE5hbWUKIAogICAgIG1fZ2VuZXJhdG9yUHJvdG90eXBlLT5wdXREaXJlY3RXaXRo
b3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIG1fZ2VuZXJh
dG9yRnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8
IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7CiAgICAgbV9nZW5lcmF0b3JGdW5jdGlvblBy
b3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMt
PnByb3RvdHlwZSwgbV9nZW5lcmF0b3JQcm90b3R5cGUuZ2V0KCksIFByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7CisgICAgbV9nZW5lcmF0
b3JTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU0dlbmVyYXRvcjo6Y3JlYXRlU3RydWN0dXJlKHZt
LCB0aGlzLCBtX2dlbmVyYXRvclByb3RvdHlwZS5nZXQoKSkpOwogCiAgICAgbV9hc3luY0Z1bmN0
aW9uUHJvdG90eXBlLnNldCh2bSwgdGhpcywgQXN5bmNGdW5jdGlvblByb3RvdHlwZTo6Y3JlYXRl
KHZtLCBBc3luY0Z1bmN0aW9uUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1f
ZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpKSk7CiAgICAgQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9y
KiBhc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IgPSBBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3I6OmNy
ZWF0ZSh2bSwgQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRo
aXMsIGZ1bmN0aW9uQ29uc3RydWN0b3IpLCBtX2FzeW5jRnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkp
OwpAQCAtMTc2Nyw2ICsxNzY4LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJl
bihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIHZpc2l0b3IuYXBwZW5k
KHRoaXNPYmplY3QtPm1fZ2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3Iu
YXBwZW5kKHRoaXNPYmplY3QtPm1fYXN5bmNGdW5jdGlvblN0cnVjdHVyZSk7CiAgICAgdmlzaXRv
ci5hcHBlbmQodGhpc09iamVjdC0+bV9hc3luY0dlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlKTsK
KyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2dlbmVyYXRvclN0cnVjdHVyZSk7CiAg
ICAgdGhpc09iamVjdC0+bV9pdGVyYXRvclJlc3VsdE9iamVjdFN0cnVjdHVyZS52aXNpdCh2aXNp
dG9yKTsKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3JlZ0V4cE1hdGNoZXNBcnJh
eVN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9yZWdFeHBNYXRj
aGVzQXJyYXlXaXRoR3JvdXBzU3RydWN0dXJlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IDEwNWQ1NmE4YzhjM2QwYTE0MWM0NDBhZjc0
YjA4OWU3N2JhYTRjYjkuLjJhZDkxYTUzZjhlYWU4YzQ0NjVjMTM3M2E4ODQzM2U5NmI5ODM3MjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApA
QCAtMzc0LDYgKzM3NCw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVu
dGVkVmFyaWFibGVPYmplY3QgewogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fYXN5bmNG
dW5jdGlvblN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2FzeW5jR2Vu
ZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9n
ZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZTsKKyAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBt
X2dlbmVyYXRvclN0cnVjdHVyZTsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0
cnVjdHVyZT4gbV9pdGVyYXRvclJlc3VsdE9iamVjdFN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJp
ZXI8U3RydWN0dXJlPiBtX3JlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZTsKICAgICBXcml0ZUJh
cnJpZXI8U3RydWN0dXJlPiBtX3JlZ0V4cE1hdGNoZXNBcnJheVdpdGhHcm91cHNTdHJ1Y3R1cmU7
CkBAIC03NTIsNiArNzUzLDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdt
ZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgU3RydWN0dXJlKiBudW1iZXJPYmplY3RTdHJ1Y3R1
cmUoKSBjb25zdCB7IHJldHVybiBtX251bWJlck9iamVjdFN0cnVjdHVyZS5nZXQodGhpcyk7IH0K
ICAgICBTdHJ1Y3R1cmUqIG1hcFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwU3RydWN0
dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiByZWdFeHBTdHJ1Y3R1cmUoKSBjb25zdCB7IHJl
dHVybiBtX3JlZ0V4cFN0cnVjdHVyZS5nZXQoKTsgfQorICAgIFN0cnVjdHVyZSogZ2VuZXJhdG9y
U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9nZW5lcmF0b3JTdHJ1Y3R1cmUuZ2V0KCk7IH0K
ICAgICBTdHJ1Y3R1cmUqIGdlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1
cm4gbV9nZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSog
YXN5bmNGdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXN5bmNGdW5jdGlvblN0
cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogYXN5bmNHZW5lcmF0b3JGdW5jdGlvblN0
cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXN5bmNHZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVy
ZS5nZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNU
eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5jcHAKaW5kZXgg
ODQ5YjM3OTE4OGVmY2U1NzA5MjNmNWExYTVhNGY3MWJjOWQ5OTQ3Ni4uZGFjNWU2OWRhMjA0NTFi
OTBmZDQ4YjA3YTcwYzExMjIzZjU3MDc2YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNUeXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1R5cGUuY3BwCkBAIC05Niw2ICs5Niw3IEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0
cmVhbSYgb3V0LCBKU0M6OkpTVHlwZSB0eXBlKQogICAgIENBU0UoV2l0aFNjb3BlVHlwZSkKICAg
ICBDQVNFKFJlZ0V4cE9iamVjdFR5cGUpCiAgICAgQ0FTRShQcm94eU9iamVjdFR5cGUpCisgICAg
Q0FTRShKU0dlbmVyYXRvclR5cGUpCiAgICAgQ0FTRShKU1Byb21pc2VUeXBlKQogICAgIENBU0Uo
SlNNYXBUeXBlKQogICAgIENBU0UoSlNTZXRUeXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1R5cGUuaAppbmRleCA4ZDM1YWM3Nzk4MzczOWIxYTNmZTVkNTBhNmY5MWI5MDEyOWZmNzdk
Li4wMWU3MDIyNzM0NzY0YjE4ZDllMzFhOTFlZThjZDYwYTk5NTkyNWVhIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1R5cGUuaApAQCAtMTA4LDYgKzEwOCw3IEBAIGVudW0gSlNUeXBl
IDogdWludDhfdCB7CiAKICAgICBSZWdFeHBPYmplY3RUeXBlLAogICAgIFByb3h5T2JqZWN0VHlw
ZSwKKyAgICBKU0dlbmVyYXRvclR5cGUsCiAgICAgSlNQcm9taXNlVHlwZSwKICAgICBKU01hcFR5
cGUsCiAgICAgSlNTZXRUeXBlLApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rl
c3RzL0NoYW5nZUxvZwppbmRleCA0ZjI4OGUwZGYwODczOWEyZDFlYTk0OTlkNDFkYzhjNmZlY2Ri
ZjZmLi40NjhmM2ZkODNmZTY4YmU3YWNiNGUwYjEzZGNlNjNiMzFkOWFmZjA0IDEwMDY0NAotLS0g
YS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2
IEBACisyMDE5LTA5LTE2ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAg
ICAgICAgW0pTQ10gR2VuZXJhdG9yIHNob3VsZCBoYXZlIGludGVybmFsIGZpZWxkcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAxMTU5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdHJlc3MvY3JlYXRl
LWdlbmVyYXRvci5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgICh0ZXN0
LmdlbmVyYXRvcik6CisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKiBzdHJlc3MvZ2VuZXJhdG9y
LWNvbnN0cnVjdC1mYWlsdXJlLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZFRocm93KToKKyAg
ICAgICAgKFR5cGVFcnJvcik6CisgICAgICAgICogc3RyZXNzL2dlbmVyYXRvci1wcm90b3R5cGUt
Y2hhbmdlLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKGdlbik6Cisg
ICAgICAgICogc3RyZXNzL2dlbmVyYXRvci1wcm90b3R5cGUtY2xvc3VyZS5qczogQWRkZWQuCisg
ICAgICAgIChzaG91bGRCZSk6CisgICAgICAgICh0ZXN0Lmdlbik6CisgICAgICAgICh0ZXN0KToK
KyAgICAgICAgKiBzdHJlc3Mvb2JqZWN0LWFzc2lnbi1mYXN0LXBhdGguanM6CisKIDIwMTktMDkt
MTMgIEFsZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgogCiAgICAgICAgIERh
dGUucHJvdG90eXBlLnRvSlNPTiBkb2VzIG5vdCBleGVjdXRlIHN0ZXBzIDEtMgpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9zdHJlc3MvY3JlYXRlLWdlbmVyYXRvci5qcyBiL0pTVGVzdHMvc3RyZXNzL2Ny
ZWF0ZS1nZW5lcmF0b3IuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTJkMDMwNTFiNGMwODJkZjNhZWI5ODk1ODRk
ZDEzMmJmZjMzZTEzZAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2NyZWF0ZS1n
ZW5lcmF0b3IuanMKQEAgLTAsMCArMSwyMCBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBl
eHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9uIHRlc3QoKSB7
CisgICAgZnVuY3Rpb24qIGdlbmVyYXRvcigpIHsKKyAgICAgICAgcmV0dXJuIHRoaXM7CisgICAg
fQorCisgICAgdmFyIGcgPSBnZW5lcmF0b3IoKTsKKyAgICBzaG91bGRCZShnLl9fcHJvdG9fXywg
Z2VuZXJhdG9yLnByb3RvdHlwZSk7CisgICAgcmV0dXJuIGc7Cit9CisKK2ZvciAodmFyIGkgPSAw
OyBpIDwgMWU2OyArK2kpIHsKKyAgICB2YXIgZzEgPSB0ZXN0KCk7CisgICAgdmFyIGcyID0gdGVz
dCgpOworICAgIHNob3VsZEJlKGcxLl9fcHJvdG9fXyAhPSBnMi5fX3Byb3RvX18sIHRydWUpOwor
fQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWNvbnN0cnVjdC1mYWlsdXJl
LmpzIGIvSlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWNvbnN0cnVjdC1mYWlsdXJlLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjBlNGEzYzdlY2FjMmRkOWY4NTNjNmZkM2UyNGJlYjllYzQzZjJmZjEKLS0tIC9kZXYv
bnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItY29uc3RydWN0LWZhaWx1cmUuanMK
QEAgLTAsMCArMSwyNCBAQAorZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJyb3JNZXNzYWdl
KSB7CisgICAgdmFyIGVycm9yVGhyb3duID0gZmFsc2U7CisgICAgdmFyIGVycm9yID0gbnVsbDsK
KyAgICB0cnkgeworICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBl
cnJvclRocm93biA9IHRydWU7CisgICAgICAgIGVycm9yID0gZTsKKyAgICB9CisgICAgaWYgKCFl
cnJvclRocm93bikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdub3QgdGhyb3duJyk7CisgICAg
aWYgKFN0cmluZyhlcnJvcikgIT09IGVycm9yTWVzc2FnZSkKKyAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKGBiYWQgZXJyb3I6ICR7U3RyaW5nKGVycm9yKX1gKTsKK30KKworZnVuY3Rpb24qIGdlbigp
IHsgfQorCitzaG91bGRUaHJvdygoKSA9PiB7CisgICAgbmV3IGdlbigpCit9LCBgVHlwZUVycm9y
OiBmdW5jdGlvbiBpcyBub3QgYSBjb25zdHJ1Y3RvciAoZXZhbHVhdGluZyAnbmV3IGdlbigpJylg
KTsKKworc2hvdWxkVGhyb3coKCkgPT4geworICAgIFJlZmxlY3QuY29uc3RydWN0KGdlbiwgW10s
IHt9KTsKK30sIGBUeXBlRXJyb3I6IFJlZmxlY3QuY29uc3RydWN0IHJlcXVpcmVzIHRoZSBmaXJz
dCBhcmd1bWVudCBiZSBhIGNvbnN0cnVjdG9yYCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVz
cy9nZW5lcmF0b3ItcHJvdG90eXBlLWNoYW5nZS5qcyBiL0pTVGVzdHMvc3RyZXNzL2dlbmVyYXRv
ci1wcm90b3R5cGUtY2hhbmdlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk4NzExNzI2NGQwYzQ3MjQyY2FiODkx
MTYyMzJiYTc5MmIyZWI1YTIKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9nZW5l
cmF0b3ItcHJvdG90eXBlLWNoYW5nZS5qcwpAQCAtMCwwICsxLDE4IEBACitmdW5jdGlvbiBzaG91
bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisg
ICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKworZnVu
Y3Rpb24qIGdlbigpCit7Cit9Cit2YXIgb3JpZ2luYWxQcm90b3R5cGUgPSBnZW4ucHJvdG90eXBl
OworCitmb3IgKHZhciBpID0gMDsgaSA8IDFlNjsgKytpKSB7CisgICAgdmFyIGcgPSBnZW4oKTsK
KyAgICBzaG91bGRCZShnLl9fcHJvdG9fXywgZ2VuLnByb3RvdHlwZSk7Cit9CitnZW4ucHJvdG90
eXBlID0ge307Cit2YXIgZyA9IGdlbigpOworc2hvdWxkQmUoZy5fX3Byb3RvX18sIGdlbi5wcm90
b3R5cGUpOworc2hvdWxkQmUoZy5fX3Byb3RvX18gIT09IG9yaWdpbmFsUHJvdG90eXBlLCB0cnVl
KTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2dlbmVyYXRvci1wcm90b3R5cGUtY2xvc3Vy
ZS5qcyBiL0pTVGVzdHMvc3RyZXNzL2dlbmVyYXRvci1wcm90b3R5cGUtY2xvc3VyZS5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40YjI4ZWQ2NGMzMmI1MmIwNjU5YzAxNzdjZDlkOTJhM2E3YWNjMDIxCi0tLSAvZGV2
L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXByb3RvdHlwZS1jbG9zdXJlLmpz
CkBAIC0wLDAgKzEsMjIgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsK
KyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdi
YWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCitmdW5jdGlvbiB0ZXN0KCkgeworICAgIGZ1bmN0
aW9uKiBnZW4oKQorICAgIHsKKyAgICB9CisgICAgdmFyIG9yaWdpbmFsUHJvdG90eXBlID0gZ2Vu
LnByb3RvdHlwZTsKKworICAgIHZhciBnID0gZ2VuKCk7CisgICAgc2hvdWxkQmUoZy5fX3Byb3Rv
X18sIGdlbi5wcm90b3R5cGUpOworICAgIGdlbi5wcm90b3R5cGUgPSB7fTsKKyAgICB2YXIgZyA9
IGdlbigpOworICAgIHNob3VsZEJlKGcuX19wcm90b19fLCBnZW4ucHJvdG90eXBlKTsKKyAgICBz
aG91bGRCZShnLl9fcHJvdG9fXyAhPT0gb3JpZ2luYWxQcm90b3R5cGUsIHRydWUpOworfQorbm9J
bmxpbmUodGVzdCk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU1OyArK2kpCisgICAgdGVzdCgp
OwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mvb2JqZWN0LWFzc2lnbi1mYXN0LXBhdGguanMg
Yi9KU1Rlc3RzL3N0cmVzcy9vYmplY3QtYXNzaWduLWZhc3QtcGF0aC5qcwppbmRleCA1YzZkNTQ3
NjBhODdiZmU5YjQ2NzAzNjU4YWVmZTMxZTBlNWE0MzZhLi5lY2I5MGQ1NmJjZDUwZmMzZjU1Yzk3
YzEyMjljYjM4M2I5YTI4ZTNkIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9vYmplY3QtYXNz
aWduLWZhc3QtcGF0aC5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9vYmplY3QtYXNzaWduLWZhc3Qt
cGF0aC5qcwpAQCAtMTI4LDE0ICsxMjgsMTggQEAgc2V0IG9rKHZhbHVlKSB7CiAgICAgc2hvdWxk
QmUob2tDYWxsZWQsIDEpOwogfQogewotICAgIGxldCBidWlsdGluID0gY3JlYXRlQnVpbHRpbihg
KGZ1bmN0aW9uIChvYmopIHsKLSAgICAgICAgcmV0dXJuIEBnZXRCeUlkRGlyZWN0UHJpdmF0ZShv
YmosICJnZW5lcmF0b3JTdGF0ZSIpOworICAgIGxldCBidWlsdGluUHV0ID0gY3JlYXRlQnVpbHRp
bihgKGZ1bmN0aW9uIChvYmosIHZhbHVlKSB7CisgICAgICAgIEBwdXRCeUlkRGlyZWN0UHJpdmF0
ZShvYmosICJuZXh0IiwgdmFsdWUpOwogICAgIH0pYCk7Ci0gICAgZnVuY3Rpb24qIGhlbGxvKCkg
eyB9Ci0gICAgbGV0IGdlbmVyYXRvciA9IGhlbGxvKCk7Ci0gICAgc2hvdWxkQmUodHlwZW9mIGJ1
aWx0aW4oZ2VuZXJhdG9yKSwgIm51bWJlciIpOwotICAgIGxldCByZXN1bHQgPSBPYmplY3QuYXNz
aWduKHt9LCBnZW5lcmF0b3IpOwotICAgIHNob3VsZEJlKHR5cGVvZiBidWlsdGluKHJlc3VsdCks
ICJ1bmRlZmluZWQiKTsKKyAgICBsZXQgYnVpbHRpbkdldCA9IGNyZWF0ZUJ1aWx0aW4oYChmdW5j
dGlvbiAob2JqKSB7CisgICAgICAgIHJldHVybiBAZ2V0QnlJZERpcmVjdFByaXZhdGUob2JqLCAi
bmV4dCIpOworICAgIH0pYCk7CisgICAgdmFyIG9iamVjdCA9IHt9OworICAgIHZhciB2YWx1ZSA9
IDQyOworICAgIGJ1aWx0aW5QdXQob2JqZWN0LCB2YWx1ZSk7CisgICAgc2hvdWxkQmUodHlwZW9m
IGJ1aWx0aW5HZXQob2JqZWN0KSwgIm51bWJlciIpOworICAgIGxldCByZXN1bHQgPSBPYmplY3Qu
YXNzaWduKHt9LCBvYmplY3QpOworICAgIHNob3VsZEJlKHR5cGVvZiBidWlsdGluR2V0KHJlc3Vs
dCksICJ1bmRlZmluZWQiKTsKIH0KIHsKICAgICBsZXQgb2JqZWN0ID0ge307Cg==
</data>
<flag name="review"
          id="394537"
          type_id="1"
          status="+"
          setter="keith_miller"
    />
          </attachment>
      

    </bug>

</bugzilla>